在 MS Access 中查找哪个表单字段指向哪个数据库字段
Find which form field points to which database fields in MS Access
Let me explain the WEIRDEST client requirement, we're scratching our heads for:
我们有一个 MS Access VBA 应用程序,其中包含数百个表单中的数千个表单字段。
这些表单中的一些字段填充了少数 tables/queries.
中的数据
表单中的一些其他字段通过 queries/direct 代码将数据插入到少数 table 秒。
请注意,这些 tables 链接 tables 到 SQL 服务器 tables。
有没有办法找到哪个表单域与 table 中的哪个列相关?
因此,我们需要一些 tool/macro 来做到这一点。
How do we find which form field points to which database fields in MS Access?
基于,我们准备了如下代码。 ctl.ControlSource
中的值似乎不是指实际的数据库对象:
Sub GetFormFieldToDBFieldMapping()
Dim frm As Object
Dim LiveForm As Form
Dim ctl As control
Dim i As Integer
Dim fso As Object
Dim ctlSource As String
Set fso = CreateObject("Scripting.FileSystemObject")
Dim oFile As Object
Set oFile = fso.CreateTextFile("D:\ControlSources.txt")
For Each frm In Application.CurrentProject.AllForms
'To access form controls, open it
DoCmd.OpenForm frm.Name, acViewDesign
Set LiveForm = forms(frm.Name)
For i = 0 To LiveForm.Controls.Count - 1
Set ctl = LiveForm.Controls.Item(i)
If ctl.ControlType = 106 Or ctl.ControlType = 111 Or ctl.ControlType = 110 Or ctl.ControlType = 109 Then
ctlSource = ctlSource & vbCrLf & "Form Name :" & LiveForm.Name & ": Control Name :" & ctl.Name & ": Control Source :" & ctl.ControlSource
End If
Next i
'Do not forget to close when you are done
DoCmd.Close acForm, frm.Name
Next
oFile.WriteLine ctlSource
oFile.Close
Set fso = Nothing
Set oFile = Nothing
End Sub
我会做这样的事情。 (不是实际代码)
For each form in db
For each control in form
'Write a record to a table stating which formName, controlName and the control.controlSource
Next
Next
编辑:ControlSource,而不是 RowSource
你想出的代码是 excel借出的!这会给你:
- 表格名称
- 控件名称
- 控制源
您唯一需要的是table 列所在的名称。
由于 table 是 table 链接到 SQL 服务器,您可以 find all the tables with all their columns.
这会给你:
- Table 姓名
- 列名
将这些信息保存在两张 excel 表格中。
对列名称执行 V-Lookup 以查找 table 名称
Let me explain the WEIRDEST client requirement, we're scratching our heads for:
我们有一个 MS Access VBA 应用程序,其中包含数百个表单中的数千个表单字段。
这些表单中的一些字段填充了少数 tables/queries.
中的数据表单中的一些其他字段通过 queries/direct 代码将数据插入到少数 table 秒。
请注意,这些 tables 链接 tables 到 SQL 服务器 tables。
有没有办法找到哪个表单域与 table 中的哪个列相关?
因此,我们需要一些 tool/macro 来做到这一点。
How do we find which form field points to which database fields in MS Access?
基于ctl.ControlSource
中的值似乎不是指实际的数据库对象:
Sub GetFormFieldToDBFieldMapping()
Dim frm As Object
Dim LiveForm As Form
Dim ctl As control
Dim i As Integer
Dim fso As Object
Dim ctlSource As String
Set fso = CreateObject("Scripting.FileSystemObject")
Dim oFile As Object
Set oFile = fso.CreateTextFile("D:\ControlSources.txt")
For Each frm In Application.CurrentProject.AllForms
'To access form controls, open it
DoCmd.OpenForm frm.Name, acViewDesign
Set LiveForm = forms(frm.Name)
For i = 0 To LiveForm.Controls.Count - 1
Set ctl = LiveForm.Controls.Item(i)
If ctl.ControlType = 106 Or ctl.ControlType = 111 Or ctl.ControlType = 110 Or ctl.ControlType = 109 Then
ctlSource = ctlSource & vbCrLf & "Form Name :" & LiveForm.Name & ": Control Name :" & ctl.Name & ": Control Source :" & ctl.ControlSource
End If
Next i
'Do not forget to close when you are done
DoCmd.Close acForm, frm.Name
Next
oFile.WriteLine ctlSource
oFile.Close
Set fso = Nothing
Set oFile = Nothing
End Sub
我会做这样的事情。 (不是实际代码)
For each form in db
For each control in form
'Write a record to a table stating which formName, controlName and the control.controlSource
Next
Next
编辑:ControlSource,而不是 RowSource
你想出的代码是 excel借出的!这会给你:
- 表格名称
- 控件名称
- 控制源
您唯一需要的是table 列所在的名称。 由于 table 是 table 链接到 SQL 服务器,您可以 find all the tables with all their columns.
这会给你:
- Table 姓名
- 列名
将这些信息保存在两张 excel 表格中。
对列名称执行 V-Lookup 以查找 table 名称