Sprawdź źródło kontroli wszystkich kontrolek w projekcie MS Access
Szczęśliwego Nowego Roku!
Ostatnio pracowałem nad projektem, w którym wdrażałem spawnowanie formularzy, aby mój klient mógł zobaczyć co najmniej dwa różne rekordy używające dwóch identycznych formularzy, jeden z rzeczywistych formularzy, a drugi ze spawnowaną wersją samego siebie (temat, który omawiane na moich spotkaniach dotyczących programu SQL Server z programem Access, kliknij, aby dołączyć do listy ogłoszeń!). Ponieważ poprzedni programista nie używał tworzenia formularzy, musiałem przeszukać wszystkie instancje w źródle kontrolnym wszystkich formularzy, aby zidentyfikować odniesienia do oryginalnego formularza i zastąpić go TempVars.
Projekt ma dziesiątki formularzy i tysiące kontrolek, więc stworzyłem następujący kod, aby przeskanować wszystkie źródła rekordów formularzy w poszukiwaniu naruszającego źródła wiersza i źródła kontroli wszystkich kontrolek w formularzu.
Public Sub ScanForms()
On Error Resume Next
Dim obj As AccessObject, dbs As Object
Dim ctrl As Control
Dim strRowsource As String
Ustaw dbs =Application.CurrentProject
Dla każdego obiektu In dbs.AllForms
'Debug.Print “Praca nad:” &nazwa obiektu
DoCmd.OpenForm nazwa obiektu, acDesign
strRowsource =Forms(nazwa.obiektu).RecordSource
If Err.Number Then
strRowsource =vbNullString
End If
If Len(strRowsource) Then
If InStr(1, strRowsource, “frmPatientProcessing”)> 0 Then
Debug.Print „Form:” i nazwa.obiektu
Zakończ jeśli
Zakończ jeśli
Dla każdego ctrl w Forms(nazwa.obiektu).Kontrole
W przypadku błędu Wznów Next
strRowsource =ctrl.ControlSource
If Err.Number Then
strRowsource =vbNullString
End If
W przypadku błędu Przejdź do 0
If Len(strRowsource) Then
If InStr(1, strRowsource, “frmPatientProcessing”)> 0 Wtedy
Debug.Print “Formularz:” &Nazwa obiektu &” Kontrola:” &ctrl.Nazwa
Zakończ Jeżeli
Zakończ, jeśli
Następny ctrl
DoKmd.Zamknij formularz, nazwa.obiektu
Następny obiekt
Zakończ podtekst