Inspecione a fonte de controle de todos os controles em seu projeto MS Access
Feliz Ano Novo!
Recentemente eu estava trabalhando em um projeto onde eu estava implementando a geração de formulários para que meu cliente pudesse ver pelo menos dois registros diferentes usando dois formulários idênticos, um dos formulários reais e o outro uma versão gerada de si mesmo (um tópico que eu discutido em minhas reuniões do SQL Server com Access, clique para ingressar na lista de anúncios!). Como o desenvolvedor anterior não usava geração de formulários, tive que pesquisar todas as instâncias na fonte de controle de todos os formulários para identificar referências ao formulário original e substituí-lo por TempVars.
O projeto tem dezenas de formulários e milhares de controles, então criei o código a seguir para verificar todas as fontes de registro de formulário para a fonte de linha ofensiva e a fonte de controle de todos os controles no formulário também.
Public Sub ScanForms()
On Error Resume Next
Dim obj As AccessObject, dbs As Object
Dim ctrl As Control
Dim strRowsource As String
Definir dbs =Application.CurrentProject
For Each obj In dbs.AllForms
'Debug.Print “Trabalhando em:” &obj.Name
DoCmd.OpenForm obj.Name, acDesign
strRowsource =Forms(obj.Name).RecordSource
Se 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
Para cada ctrl Em Forms(obj.Name).Controls
On Error Resume Próximo
strRowsource =ctrl.ControlSource
Se 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
Próximo ctrl
DoCmd.Close acForm, obj.Name
Próximo obj
End Sub