我有一个数据库,我正在处理许多表单,当不同表单中的某些内容发生更改时,其中一些必须更新。我已将其设置为多实例表单,其工作方式如下:
Set frm = New Form_Name
frm.RecordSource = "select * from Table_Name where id = " & ID
colForms.Add Item:=frm, Key:=frm.hwnd & ""
mintForm = mintForm + 1
frm.SetFocus
frm.Visible = True
colForms 是一个集合。为了刷新表单,我添加了一个函数来刷新与传递的名称和 ID 匹配的表单:
Function RefreshForm(RForm As String, ID As Integer)
If Developer = False Then On Error GoTo Fehler
Dim F As Form
On Error Resume Next
For i = 1 To mintForm
Set F = colForms(i)
If F.CurrentRecord = ID And F.Name = RForm Then F.Refresh
Next i
'Error handling logic
Done:
Exit Function
Fehler:
RuntimeError "MultiInstance: RefreshForm", Err.Number, Err.Source, Err.Description, Err.HelpFile, Err.HelpContext, Err.LastDllError
Err.Raise 1000, , "Folgefehler"
End Function
问题是,由于某种原因,F.CurrentRecord 始终为 1,即使表单中记录的 ID 绝对不是 1。知道我做错了什么,或者我如何正确获取记录 ID(主键)从形式?表单肯定是绑定的(至少是我试图获取 ID 的那些)。
CurrentRecord 没有从唯一标识符字段中提取记录的 ID。CurrentRecord 是由表单分配的序列号,与字段中保存的记录唯一标识符无关。
如果焦点在第五条记录上,则它是记录 5,如果该记录的唯一 ID 字段值为 5,则它们是等效的。进行这种比较很少有意义。无论过滤/排序如何,表单总是从 1 开始按顺序对记录进行编号,但可以过滤表单以显示记录的子集和/或可以对记录进行排序,因此 ID 不是连续的,也不是以 1 开头。
如果您想知道具有焦点的记录的 ID,则引用保存该数据的字段名称。
If F!fieldname = ID And F.Name = RForm Then F.Refresh
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句