查找MS访问中哪个表单字段指向哪些数据库字段



让我解释怪异的客户端的需求,我们正在为:

我们有一个MS Access VBA应用程序,具有数百个形式的数百个形式字段。

这些表格中的一些字段填充了几个表/查询的数据。

表格中的其他一些字段通过查询/直接代码将数据插入到几个表中。

请注意,这些表是链接表 to SQL Server表。

是否有一种方法可以找到哪个表单字段与?

中的哪个表列有关

因此,我们需要一些工具/宏来执行此操作。

我们如何找到MS访问中的哪个数据库字段?

基于 @clintb的答案,我们已经准备了以下代码。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

代码,您想出的很棒!这将为您提供:

  • 表格名称
  • 控制名称
  • 控制源

您唯一需要的是列要到达的表名。由于表是链接到SQL Server的表,您可以找到所有列的表格。

这将为您提供:

  • 表名称
  • 列名

将这两个信息都放在两个Excel表中。

在列名上进行V-lookup以查找表名称

相关内容

  • 没有找到相关文章

最新更新