【发布时间】:2015-06-25 22:50:11
【问题描述】:
我是 Access 的新手,在实现我在另一篇文章中看到的内容时遇到了一些困难。 MS-Access: How to open form in same location/size as closed/previous form?
我想在上次关闭弹出表单的位置打开我的弹出式表单,我创建了一个表 (sizpos) 来存储位置和大小的 4 个属性(左、上、宽、高)和表单(对象)的名称和唯一的 ID 号。
我需要一些帮助来确定 VBA 代码,以根据关闭或卸载事件上的表单名称存储打开表单的属性。我还需要有关代码的帮助,以从表中检索打开或加载事件的打开表单的信息。
我尝试在me.move 中使用dlookup 并没有成功,但可能没有正确实施。
我想出了以下几乎适用于报告的内容。我只是不知道如何从正在打开的报表中提取报表的名称,类似于表单中的me.name 函数。我已经用me.reportname???? 标记了这些区域
Private Sub Report_Open(Cancel As Integer)
Dim l As Long
Dim t As Long
l = Nz(DLookup("Left", "SizPos", "Object = 'me.reportname???'"))
t = Nz(DLookup("Top", "SizPos", "Object = 'me.reportname???'"))
Me.Move Left:=l, Top:=t
End Sub
Private Sub Report_Close()
Dim strSQL As String
strSQL = "UPDATE SizPos SET SizPos.Left = " & Me.WindowLeft & ", SizPos.Top = " & Me.WindowTop & " WHERE SizPos.Object = 'me.reportname???';"
CurrentDb.Execute strSQL
End Sub
下面的表格非常适合。
Private Sub Form_Open(Cancel As Integer)
Dim l As Long
Dim t As Long
Dim w As Long
Dim h As Long
l = Nz(DLookup("Left", "SizPos", "Object = '" & Me.Name & "'"))
t = Nz(DLookup("Top", "SizPos", "Object = '" & Me.Name & "'"))
w = Nz(DLookup("Width", "SizPos", "Object = '" & Me.Name & "'"))
h = Nz(DLookup("Height", "SizPos", "Object = '" & Me.Name & "'"))
Me.Move Left:=l, Top:=t, Width:=w, Height:=h
End Sub
Private Sub Form_Close()
DoCmd.Save
Dim strSQL As String
strSQL = "UPDATE SizPos SET SizPos.Left = " & Me.WindowLeft & ", SizPos.Top = " & Me.WindowTop & ", SizPos.Width = " & Me.WindowWidth & ", SizPos.Height = " & Me.WindowHeight & " WHERE SizPos.Object = '" & Me.Name & "';"
CurrentDb.Execute strSQL
End Sub
【问题讨论】:
-
没有
reportname属性。使用Me.Name获取报告的名称。Me.Name可在表单或报告中使用。
标签: forms ms-access position vba size