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