Access
 sql >> Base de données >  >> RDS >> Access

Inspecter la source de contrôle de tous les contrôles de votre projet MS Access

Inspecter la source de contrôle de tous les contrôles de votre projet MS Access

Bonne année !

Récemment, je travaillais sur un projet où j'implémentais la génération de formulaires afin que mon client puisse voir au moins deux enregistrements différents en utilisant deux formulaires identiques, l'un des formulaires réels et l'autre une version générée de lui-même, (un sujet que j'ai discuté lors de mes réunions SQL Server avec Access, cliquez pour rejoindre la liste des annonces !). Étant donné que le développeur précédent n'utilisait pas la génération de formulaires, j'ai dû rechercher toutes les instances dans la source de contrôle de tous les formulaires pour identifier les références au formulaire d'origine et le remplacer par TempVars.

Le projet comporte des dizaines de formulaires et des milliers de contrôles. J'ai donc créé le code suivant pour analyser toutes les sources d'enregistrement de formulaire à la recherche de la source de ligne incriminée et de la source de contrôle de tous les contrôles du formulaire.

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

Définir dbs =Application.CurrentProject

Pour chaque obj dans dbs.AllForms
'Debug.Print "Travail sur : " &obj.Name
DoCmd.OpenForm obj.Name, acDesign
strRowsource =Forms(obj.Name).RecordSource
Si Err.Number Alors
strRowsource =vbNullString
Fin Si
Si Len(strRowsource) Alors
Si InStr(1, strRowsource, « frmPatientProcessing »)> 0 Alors
Debug.Print "Form : " &obj.Name
End If
End If
For Each ctrl In Forms(obj.Name).Controls
On Error Resume Suivant
strRowsource =ctrl.ControlSource
Si Err.Number Alors
strRowsource =vbNullString
Fin Si
En cas d'erreur GoTo 0
Si Len(strRowsource) Alors
Si InStr(1, strRowsource, « frmPatientProcessing »)> 0 Alors
Debug.Print « Formulaire :» &obj.Name &« Control :» &ctrl.Name
End If
End If
Next ctrl
DoCmd.Close acForm, obj.Name
Next obj
End Sub