Access
 sql >> Datenbank >  >> RDS >> Access

Überprüfen Sie die Steuerelementquelle aller Steuerelemente in Ihrem MS Access-Projekt

Überprüfen Sie die Kontrollquelle aller Kontrollen in Ihrem MS Access-Projekt

Frohes neues Jahr!

Kürzlich habe ich an einem Projekt gearbeitet, in dem ich das Spawnen von Formularen implementiert habe, damit mein Kunde mindestens zwei verschiedene Datensätze mit zwei identischen Formularen sehen kann, eines der tatsächlichen Formulare und das andere eine gespawnte Version von sich selbst (ein Thema, das ich habe bei meinen SQL Server mit Access-Meetings besprochen, klicken Sie hier, um der Ankündigungsliste beizutreten!). Da der frühere Entwickler kein Formular-Spawning verwendet hat, musste ich alle Instanzen in der Steuerquelle aller Formulare durchsuchen, um Verweise auf das Originalformular zu identifizieren und es durch TempVars zu ersetzen.

Das Projekt hat Dutzende von Formularen und Tausende von Steuerelementen, daher habe ich den folgenden Code erstellt, um alle Formulardatensatzquellen nach der fehlerhaften Zeilenquelle und auch der Steuerquelle aller Steuerelemente im Formular zu durchsuchen.

Public Sub ScanForms()
On Error Resume Next
Dim obj As AccessObject, dbs As Object
Dim ctrl As Control
Dim strRowsource As String

Setzen Sie dbs =Application.CurrentProject

Für jedes Objekt in dbs.AllForms
'Debug.Print „Working on:” &obj.Name
DoCmd.OpenForm obj.Name, acDesign
strRowsource =Forms(obj.Name).RecordSource
If Err.Number Then
strRowsource =vbNullString
End If
If Len(strRowsource) Then
If InStr(1, strRowsource, „frmPatientProcessing“)> 0 Then
Debug.Print „Form:” &obj.Name
End If
End If
For Each ctrl In Forms(obj.Name).Controls
On Error Resume Next
strRowsource =ctrl.ControlSource
If Err.Number Then
strRowsource =vbNullString
End If
On Error GoTo 0
If Len(strRowsource) Then
If InStr(1, strRowsource, "frmPatientProcessing")> 0 Then
Debug.Print "Form:" &obj.Name &" Control:" &ctrl.Name
End If
End If
Next ctrl
DoCmd.Close acForm, obj.Name
Next obj
End Sub