Проверете източника на контрол на всички контроли във вашия проект MS Access
Честита Нова година!
Наскоро работех по проект, в който внедрявах размножаване на формуляри, така че моят клиент да може да види поне два различни записа, използвайки две идентични форми, едната от действителните форми, а другата - създадена версия на себе си (тема, която съм обсъдено на моя SQL Server с Access срещи, щракнете, за да се присъедините към списъка с обяви!). Тъй като предишният разработчик не използваше генериране на формуляр, трябваше да търся всички екземпляри в контролния източник на всички формуляри, за да идентифицирам препратките към оригиналния формуляр и да го заменя с TempVars.
Проектът има десетки формуляри и хиляди контроли, така че създадох следния код, за да сканирам всички източници на записи във формуляра за източника на редове в нарушение и източника на контрол на всички контроли във формуляра.
Public Sub ScanForms()
On Error Resume Next
Dim obj As AccessObject, dbs As Object
Dim ctrl As Control
Dim strRowsource As String
Задайте dbs =Application.CurrentProject
За всеки obj In dbs.AllForms
'Debug.Print “Работа върху:” &obj.Name
DoCmd.OpenForm obj.Name, acDesign
strRowsource =Forms(obj.Name).RecordSource
Ако Err.Number Тогава
strRowsource =vbNullString
Край, ако
Ако Len(strRowsource) Тогава
Ако InStr(1, strRowsource, “frmPatientProcessing”)> 0 Тогава
Отстраняване на грешки. Отпечатване на “Form:” &obj.Name
Край, ако
Край, ако
За всеки ctrl във Forms(obj.Name).Controls
При грешка Възобновяване Следващ
strRowsource =ctrl.ControlSource
Ако Err.Number Тогава
strRowsource =vbNullString
Край Ако
При грешка Отидете до 0
Ако Len(strRowsource) Тогава
Ако InStr(1, strRowsource, “frmPatientProcessing”)> 0 Тогава
Отстраняване на грешки. Отпечатайте “Form:” &obj.Name &” Control:” &ctrl.Name
Край, ако
Край, ако
Следващ ctrl
DoCmd.Close acForm, obj.Name
Следващ obj
Край под