Kontrollera kontrollkällan för alla kontroller i ditt MS Access-projekt
Gott nytt år!
Nyligen arbetade jag med ett projekt där jag implementerade form spawning så att min klient kan se minst två olika poster med två identiska former, en av de faktiska formerna och den andra en spawn version av sig själv, (ett ämne som jag har diskuteras på min SQL Server med Access-möten, klicka för att gå med i tillkännagivandelistan!). Eftersom den tidigare utvecklaren inte använde form spawning, var jag tvungen att söka i alla instanser i kontrollkällan för alla former för att identifiera referenser till det ursprungliga formuläret och ersätta det med TempVars.
Projektet har dussintals formulär och tusentals kontroller, så jag skapade följande kod för att skanna alla formulärpostkällor efter den felande radkällan och kontrollkällan för alla kontroller i formuläret också.
Public Sub ScanForms()
On Error Resume Next
Dim obj As AccessObject, dbs As Object
Dim ctrl As Control
Dim strRowsource As String
Ställ in dbs =Application.CurrentProject
För varje obj I dbs.AllForms
'Debug.Print “Arbetar på:” &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
För varje ctrl In Forms(obj.Name).Kontroller
Vid fel Återuppta Nästa
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