我有"主页","水平导航",其中包括许多导航按钮,在navigationbutton7下,我有员工FRM,我需要在我处于家庭形式的情况下接下来或上一个。p> ID嵌入了员工FRM中,因此当我在主页上时,雇员FRM而不是在本国表格上卸载时,VBA代码没有给出正确的ID。
我尝试过!home!navigationsubform!id,但这会出现错误,因为任何其他navigationbutton8或9中的任何ID都会给出另一个结果,我不感兴趣地知道其他按钮中其他表格的ID。
我担心的是在员工FRM中的ID与主页表格文本之间具有链接。
从下面
Dim MyIDS As Integer
' this is giving only the first ID number all the time.
MyIDS = Me.ID
' this is giving error.
MyIDS = Forms![Home]![NavigationSubform].[Form]![employeesfrm]![ID]
' this is giving error.
MyIDS = Forms![Home]![NavigationSubform]![Navigationform]![studentsfrm]![ID]
' this one works but if I am on another Navigation button,
' lets say 8 not 7, I am not interested in the number.
MyIDS = Forms![Home]![NavigationSubform].Form![ID]
我需要这个数字,对于我的书签,如果我直接在员工身上,它可以正常工作,但不在家庭表格上
在此处输入图像描述
我不确定我完全理解您要实现的目标,但是在家庭表单上拥有一个无绑定的文本框,然后在oncurrent事件中员工表格集
Me.Parent!EmpID = ID
如果您正在使用它来尝试回到与其他子形式之前的相同记录,那么您还需要一种方法来检测您要回到这个子形式,否则,Oncurrent事件将再次使您再次回到第一个记录。因此,您可能需要一个主表单上的复选框(chkgotobookmark,默认值false),以便navigationbutton7(这是加载员工子形式的内容,对吗?)可以勾选此框。然后,员工表格的Oncurrent活动将是:
If Me.Parent!chkGoToBookmark = True And Not IsNull(Me.Parent!EmpID) Then
Me.RecordsetClone.FindFirst "ID=" & Me.Parent!EmpID
Me.Bookmark = Me.RecordsetClone.Bookmark
Else
Me.Parent!EmpID = ID
End If
请注意,如果您直接使用员工形式,则对Me.Parent
的任何引用都会导致错误,因此您可能需要陷入困境。
非常感谢。我被卡住了,我正在与所有人分享我的解决方案,但是,水平形式是痛苦的,真的要转到选项卡控件,我的问题是书签,如果您处于同一形式,则很容易处理书签,但是当形式相同时是在主(家庭)形式的内部,这是导航控制,这并不容易,我所做的就是以下内容:在主表单上创建了一个TXT,称为TXTV,这将从我的水平按钮内的表单中托管我的ID,以及我使用以下的卸载和加载事件,
私有子form_unload(取消作为整数)
dim rs as dao.recordset
If Not IsNull(Me.Parent!txtv) Then
Set rs = CurrentDb().OpenRecordset("bookmarktb", dbOpenDynaset)
With rs
.FindFirst "[Variable] = 'CustomerIDLast'"
If .NoMatch Then
.AddNew 'Create the entry if not found.
![Variable] = "CustomerIDLast"
![Values] = Me.Parent!txtv
![Description] = "Last customerID, for form " & Me.Name
.Update
Else
.Edit 'Save the current record's primary key.
![Values] = Me.Parent!txtv
.Update
End If
End With
rs.Close
End If
Set rs = Nothing
私人sub form_load()
昏暗的变量为变体 Dim Striiz作为字符串
varID = DLookup("Values", "bookmarktb", "[Variable] = 'CustomerIDLast'")
If IsNumeric(varID) Then
With Me.RecordsetClone
.FindFirst "[ID] = " & strIIZ & varID & strIIZ
If Not .NoMatch Then
Me.Bookmark = .Bookmark
End If
End With
End If
结束子
不要忘记请添加e.parent.txtv = id的当前事件因此,它将用主表单更新ID。
我认为我将在分解数据库后会受苦,因为我听说Findfirst如果数据库被拆分,则无法正常工作。我不确定,但是它应该与合并的batabase一起工作,