我创建了一个独立的Access 2003应用程序,其中包含一堆开始变得难以驾驭的表单。我正在尝试清理它,我想做一些事情,比如查找查询的所有用法,以便我可以进行一些全局更新。我可以使用ctrl-f在代码中查找查询的用法,但我的问题是:是否有一种简单的方法来搜索整个应用程序,以查找控件的属性窗口中使用查询的位置,例如当它们直接绑定到控件时?
以编程方式将所有表单的所有属性转储到文本文件中会很不错。
答案 0 :(得分:3)
右键单击数据库窗口中的查询,然后选择“对象依赖项”这将为您提供将其作为子表单托管的表单列表。
这仅在您启用了“轨道名称自动更正信息”时才有效,这是默认设置。我亲自关闭它,因为它膨胀数据库。
答案 1 :(得分:1)
就像DJ写道:这是要走的路。它工作得很好,它会检测所有查询,甚至是组合框中使用的查询等。虽然我认为它不会找到代码中使用的查询。
如果您更改查询(例如名称),则对该查询的所有引用也将更新。
答案 2 :(得分:0)
可以使用SaveAsText将表单保存到文本文件中:
Sub FormToText()
Dim frm
For Each frm In CurrentProject.AllForms
Application.SaveAsText acForm, frm.Name, "c:\docs\" & frm.Name & ".txt"
Next
End Sub
您可以从系统表MsysObjects和MsysQueries中获取大量信息。
答案 3 :(得分:0)
作为使用它谋生的Access的长期用户,我不建议使用名称自动更正。对于这些类型的东西,我使用搜索和替换实用程序。我一直是Black Moshannon's Speed Ferret的长期所有者,但自从A2003发布以来它一直存在问题,因为它本身不支持更新的版本。我没有真正使用的另一种选择,但其他人推荐的是Rick Fisher's Find and Replace。
答案 4 :(得分:0)
我知道这有点旧,但它看起来像一个有趣的挑战。如果将其粘贴到模块中并运行它,它将为每个表单生成一个带有RecordSource的文本文件,为RowSourceType为“Table / Query”的每个ComboBox或ListBox生成一个RowSource。如果我没记错的话,那应该可以获得可以使用查询的每个属性。如果我没有正确记住,你可以调整代码以获取其他代码或更改输出的格式。
如果要转储所有表单的所有属性,可以为表单的属性集合中的每个循环执行一次,并将其写入文件。问题在于表单具有某些属性,如PrtMip和PrtDevName,它们是结构,因此会破坏写入或写入方法,因此如果您要尝试将这些属性写入文件,则必须先进行一些特殊处理。另外,我认为书签属性也存在问题。
Sub ListProperties()
Dim frm As Object
Dim ctl As Control
Dim fs As Object
Dim file As Object
Set fs = CreateObject("Scripting.FileSystemObject")
Set file = fs.CreateTextFile("C:\FormProps.txt", True)
For Each frm In CurrentProject.AllForms
DoCmd.OpenForm frm.Name, acNormal, , , , acHidden
Next frm
For Each frm In Forms
file.writeline (frm.Name)
file.writeline (String(Len(frm.Name), "-"))
file.writeline "RecordSource" & Chr(9) & frm.Properties("RecordSource")
For Each ctl In frm.Controls
With ctl
Select Case .ControlType
Case acComboBox, acListBox
.SetFocus
If .RowSourceType Like "Table/Query" Then
file.writeline Chr(9) & .Name & Chr(9) & "RowSource" & Chr(9) & .RowSource
End If
End Select
End With
Next ctl
file.writeline
Next frm
For Each frm In Forms
DoCmd.Close acForm, frm.Name
Next frm
End Sub
答案 5 :(得分:-1)
没有内置任何内容,但您应该能够通过编写迭代通过CurrentProject.AllForms集合的代码来遍历所有表单来获得功能。对于每个表单,请检查可能包含查询的属性并创建列表。