我有一个数据输入表单,其中数据职员输入客户端ID等。客户ID对每个客户都是唯一的。我目前正在捕获重复的ID并允许职员转到搜索表单并搜索重复的ID以验证它确实是同一个人而不是输入数据的错误。我宁愿根据输入到数据输入表单中的客户端ID打开数据输入表单的新实例。我可以打开一个新实例,但不知道如何根据客户端ID显示客户端数据。
答案 0 :(得分:0)
除了关闭屏幕画之外没有其他好办法。以下是我的某个应用中的一些代码:
Dim frm As Form_frmInventory
Dim strRecordsource As String
Dim intType As Integer
DoCmd.Hourglass True
Application.Echo False
Set frm = New Form_frmInventory
frm!boxHeader.BackColor = 3276900 ' 5483007
frm!boxFooter.BackColor = 3276900 ' 5483007
strRecordsource = "SELECT qryInventoryForm.*, varZLStoNull(IIf([tblInventory].[InventoryClass] In ('BKS','FAC','MTH','MUS','REF','SSC'),[Creator] & [Dates] & OtherAuthors([OtherAuthors]))) AS BibCreator, CreatorDates([Birth],[Death],[OtherAuthors]) AS Dates, varZLStoNull(Trim(nz(UCase([tblBib_Authors].[LastName]) & IIf(Not IsNull([tblBib_Authors].[FirstName]),', ') & [tblBib_Authors].[FirstName],'Anon.'))) AS Creator, tblBib_Authors.CreatorCategories, Nz([CreatorSort],[LastName] & [FirstName]) AS NameSort FROM qryInventoryForm LEFT JOIN tblBib_Authors ON qryInventoryForm.CreatorID = tblBib_Authors.CreatorID WHERE ([quantity]>0 Like getSold()) AND (qryInventoryForm.InventoryID=" & lngInventoryID & ") ORDER BY Nz([CreatorSort],[LastName] & [FirstName]), InventoryClass, ShortTitle;"
frm.RecordSource = strRecordsource
' need to change the caption and disable certain things
frm.Caption = frm.Caption & " -- " & frm!InventoryClass & "-" & Nz(frm!InventoryNo, Format(frm!InventoryID, "00000"))
frm!fldShortTitle.SetFocus
frm!cmbClassFind.Enabled = False
frm!cmbCreatorFind.Enabled = False
frm!cmbInventoryNumber.Enabled = False
[etc.]
frm.Visible = True
GoTo exitRoutine
CloseForm:
Call CloseForm(Me, True)
exitRoutine:
Application.Echo True
DoCmd.Hourglass False
Exit Sub
CloseForm()子非常重要,因为你必须跟踪表单的多个实例并关闭正确的实例。我从ADH97获得了代码并从那里进行了调整(只是基础知识)。
从那段代码(我忘记了细节)看来,用Set frm = New Form_frmInventory
实例化的表单在你明确显示它之前是不可见的。这是一个加号,因为它应该意味着你不必关闭屏幕(即Application.Echo False
),但我很确定我还记得需要它才能使事情顺利进行。我的记忆是表单会以正常颜色显示,然后背景颜色会随着代码运行而明显改变。这意味着 可见,所以我不确定为什么有必要明确地将表单设置为可见。
无论如何,我认为这应该让你开始吧!