sql >> Base de Datos >  >> RDS >> Access

Inspeccione la fuente de control de todos los controles en su proyecto de MS Access

Inspeccione la fuente de control de todos los controles en su proyecto de MS Access

¡Feliz Año Nuevo!

Recientemente, estaba trabajando en un proyecto en el que estaba implementando la generación de formularios para que mi cliente pueda ver al menos dos registros diferentes usando dos formularios idénticos, uno de los formularios reales y el otro una versión generada de sí mismo (un tema que he discutido en mis reuniones de SQL Server con Access, ¡haga clic para unirse a la lista de anuncios!). Debido a que el desarrollador anterior no usó la generación de formularios, tuve que buscar todas las instancias en la fuente de control de todos los formularios para identificar referencias al formulario original y reemplazarlo con TempVars.

El proyecto tiene docenas de formularios y miles de controles, por lo que creé el siguiente código para escanear todas las fuentes de registros de formularios en busca de la fuente de la fila infractora y también la fuente de control de todos los controles en el formulario.

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

Establecer dbs =Aplicación.CurrentProject

Para cada obj en dbs.AllForms
'Debug.Print “Trabajando en:” &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 Entonces
Depurar.Imprimir “Formulario:” &obj.Name
Finalizar si
Finalizar si
Para cada ctrl en Formularios(obj.Name).Controles
En caso de error Reanudar Siguiente
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