Inspicer kontrolkilden for alle kontroller i dit MS Access-projekt
Godt nytår!
For nylig arbejdede jeg på et projekt, hvor jeg implementerede form spawning, så min klient kan se mindst to forskellige poster ved hjælp af to identiske formularer, en af de faktiske formularer og den anden en spawn version af sig selv (et emne, jeg har diskuteret på min SQL Server med Access-møder, klik for at tilmelde dig meddelelseslisten!). Fordi den tidligere udvikler ikke brugte form spawning, var jeg nødt til at søge i alle forekomster i kontrolkilden for alle formularer for at identificere referencer til den originale formular og erstatte den med TempVars.
Projektet har snesevis af formularer og tusindvis af kontroller, så jeg oprettede følgende kode for at scanne alle formularpostkilder for den fornærmende rækkekilde og kontrolkilden for alle kontrolelementer på formularen.
Public Sub ScanForms()
On Error Resume Next
Dim obj As AccessObject, dbs As Object
Dim ctrl As Control
Dim strRowsource As String
Indstil dbs =Application.CurrentProject
For hver obj I 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 hver ctrl In Forms(obj.Name).Kontroller
Ved fejlgenoptagelse Næste
strRowsource =ctrl.ControlSource
If Err.Number Then
strRowsource =vbNullString
End If
On Error GoTo 0
If Len(strRowsource) Then
Hvis InStr(1, strRowsource, “frmPatientProcessing”)> 0 Så
Debug.Print “Form:” &obj.Name &” Control:” &ctrl.Name
End If
/> End If
Next ctrl
DoCmd.Close acForm, obj.Name
Next obj
End Sub