Access
 sql >> Database >  >> RDS >> Access

Ispeziona la fonte di controllo di tutti i controlli nel tuo progetto MS Access

Ispeziona la fonte di controllo di tutti i controlli nel tuo progetto MS Access

Felice anno nuovo!

Recentemente stavo lavorando a un progetto in cui stavo implementando la generazione di moduli in modo che il mio cliente possa vedere almeno due record diversi utilizzando due moduli identici, uno dei moduli effettivi e l'altro una versione generata di se stesso, (un argomento che ho discusso durante le riunioni di SQL Server con Access, fare clic per partecipare all'elenco degli annunci!). Poiché lo sviluppatore precedente non utilizzava la generazione dei moduli, ho dovuto cercare in tutte le istanze nella fonte di controllo di tutti i moduli per identificare i riferimenti al modulo originale e sostituirlo con TempVars.

Il progetto ha dozzine di moduli e migliaia di controlli, quindi ho creato il codice seguente per scansionare tutte le origini dei record dei moduli per l'origine della riga incriminata e anche l'origine del controllo di tutti i controlli nel modulo.

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

Imposta dbs =Application.CurrentProject

For Each obj 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 Allora
Debug.Print “Form:” &obj.Name
End If
End If
For Each ctrl In Forms(obj.Name).Controls
In caso di errore Riprendi Avanti
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