'************************************** ' Funciones que reemplazan la palabra ' "Formularios!" por "Forms!" en Tablas, ' consultas, formularios e informes ' y sus controles. ' ' Si vas a utilizar esto en Access 97 ' te sugiero que descargues unas ' funciones adicionales en la dirección ' http://tinyurl.com/bp2r ' ahí encontrarás la función Replace ' y algunas otras que te serán de ' utilidad. ' ' Fecha creación: Julio 2002 ' 1º Revisión: Febrero 2003 ' ' Juan M. Afan de Ribera - happy ' ************************************** Option Compare Database Option Explicit 'Tablas: Búsqueda en las propiedades de 'campo - Valor predeterminado - Regla de 'validación y Origen de la fila Function ReemplazarenTablas() Dim tdf As Object 'DAO.TableDef Dim fld As Object 'DAO.Field Dim prp As Object 'DAO.Property For Each tdf In CurrentDb.TableDefs If Left(tdf.Name, 4) <> "MSys" Then For Each fld In tdf.Fields For Each prp In fld.Properties If prp.Name = "DefaultValue" Or _ prp.Name = "ValidationRule" Or _ prp.Name = "RowSource" Then prp.Value = Traduccion(prp.Value) End If Next Next End If Next End Function 'Consultas: Búsqueda en la cadena sql Function ReemplazarenConsultas() Dim qdf As Object 'DAO.QueryDef For Each qdf In CurrentDb.QueryDefs qdf.SQL = Traduccion(qdf.SQL) Next End Function 'Formularios: Búsqueda en el Origen del 'Registro y Filtro. Controles: Búsqueda 'en el Origen del Control y Origen de la 'Fila Function ReemplazarenFormularios() Dim obj As AccessObject Dim frm As Form Dim ctl As Control Dim prp As Property For Each obj In CurrentProject.AllForms DoCmd.OpenForm obj.Name, acDesign, , , , acIcon Set frm = Forms(obj.Name) frm.RecordSource = Traduccion(frm.RecordSource) frm.Filter = Traduccion(frm.Filter) For Each ctl In frm.Controls For Each prp In ctl.Properties If prp.Name = "ControlSource" Or _ prp.Name = "RowSource" Then prp.Value = Traduccion(prp.Value) End If Next Next Set frm = Nothing DoCmd.Close acForm, obj.Name, acSaveYes Next End Function 'Informes: Búsqueda igual que en formularios Function ReemplazarenInformes() Dim obj As AccessObject Dim rpt As Report Dim ctl As Control Dim prp As Property For Each obj In CurrentProject.AllReports DoCmd.OpenReport obj.Name, acViewDesign DoCmd.Minimize Set rpt = Reports(obj.Name) rpt.RecordSource = Traduccion(rpt.RecordSource) rpt.Filter = Traduccion(rpt.Filter) For Each ctl In rpt.Controls For Each prp In ctl.Properties If prp.Name = "ControlSource" Or _ prp.Name = "RowSource" Then prp.Value = Traduccion(prp.Value) End If Next Next Set rpt = Nothing DoCmd.Close acReport, obj.Name, acSaveYes Next End Function Function Traduccion(Cadena As String) Traduccion = Replace(Cadena, "Formularios!", "Forms!") End Function