Estuve trabajando en un proyecto donde estaba implementando el desove 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 utilizó el spawning de formularios, tuve que buscar todas las instancias en el origen 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, así que creé el siguiente código para escanear todas las fuentes de registros de formularios para 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
Set 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 Then
Debug.Print "Form: " & obj.Name
End If
End If
For Each ctrl In Forms(obj.Name).Controls
On Error Resume Next
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


Deja tu comentario