Hola soy nuevo en esto y tengo problemas con una macro que uso para buscar registros en un formulario hecho en openoffice base 3.4.1 bajo windows 7, el problema es que al correr el formulario desde Oo write (para que se abra directamente) me da el siguiente error...
El formulario corre desde Oo write (desde un orchivo llamado "Nueva base de datos.odt") y toma la base de datos de un archivo Oo Base llamado "Nueva base de datos.odb"
El Formulario se llama "Tareas" y la tabla igual
Los campos en los que busco Se llaman "DENOMINACIoN" Y "RUBRO"
La macro que estoy usando es esta:
--------------------------------------------------------------------------------------------------------------------------
Sub sInicio(Event As Object)
With ThisDatabaseDocument.CurrentController
If Not .IsConnected Then .Connect
End With
ThisDatabaseDocument.FormDocuments.GetByName("Tareas").Open
End Sub
Sub BotonBuscaEnComandoYDescripcion(Event As Object)
Dim oForm As Object
Dim oClonRS As Object
Dim bSigue As Boolean
Dim sTxt As String
Dim sSQL As String
Dim oStat As Object
Dim oRes As Object
Dim vId As Integer
oForm=Event.Source.Model.Parent
oStat=ThisDatabaseDocument.CurrentController.ActiveConnection.CreateStatement
sTxt=oForm.GetByName("CampoBusqueda").Text
sSQL="SELECT ""ID"" FROM ""Tareas"" WHERE ""DENOMINACIoN"" LIKE '%" & sTxt & "%' OR ""RUBRO"" LIKE '%" & sTxt & "%'"
oRes=oStat.ExecuteQuery(sSQL)
bSigue=True
oClonRS=oForm.CreateResultSet
Do While oRes.Next And bSigue
vId=oRes.GetInt(1)
If oClonRS.First Then
Do
If oClonRS.GetInt(1)=vId Then
oForm.Absolute(oClonRS.Row)
bSigue=False
End If
Loop While oClonRS.Next And bSigue
End If
Loop
End Sub
--------------------------------------------------------------------------------------------------------------------------
Mil gracias espero que puedan ayudarme
[RESUELTO] Error de Macro al buscar registro en formulario
Reglas del Foro
Los moderadores podrían mover los temas creados aquí a un foro más apropiado.
Si usted publicó aquí y no encuentra el tema, puede buscar sus mensajes haciendo clic en la opción «Buscar sus mensajes» que se encuentra justo debajo de la cabecera de la página, junto al panel de control de usuario y al acceso a sus mensajes privados.
Los moderadores podrían mover los temas creados aquí a un foro más apropiado.
Si usted publicó aquí y no encuentra el tema, puede buscar sus mensajes haciendo clic en la opción «Buscar sus mensajes» que se encuentra justo debajo de la cabecera de la página, junto al panel de control de usuario y al acceso a sus mensajes privados.
[RESUELTO] Error de Macro al buscar registro en formulario
Última edición por pablocan el Mar Nov 13, 2012 3:59 pm, editado 1 vez en total.
OPENOFFICE 3.4.1
Re: Error de Macro al buscar registro en formulario
Hola,
El problema para mi lo tienes por que ThisDataBase se referie a la Bd abierta y que se esta trabajando, como este no es el caso te da el error. Mi sugerencia, que filtres a traves del mismo formulario. Esta macro que te adjunto te debe funcionar.
Saludos
NOTA. Te falta asignar la tabla en el origen de datos del formulario.
El problema para mi lo tienes por que ThisDataBase se referie a la Bd abierta y que se esta trabajando, como este no es el caso te da el error. Mi sugerencia, que filtres a traves del mismo formulario. Esta macro que te adjunto te debe funcionar.
Código: Seleccionar todo
'Poner en el evento tecla pulsada del buscador
Sub TeclaPulsadaStandard(Evento AS object)
Dim oTxt As String
Dim oFilter As Object
Dim oFormCtl As Object
Dim oCtrl As Object
Dim sCampo1
Dim sCampo2
oTxt = Evento.Source.getText()
sCampo1 = Evento.Source.Model.Parent.DENOMINACIoN().Name
sCampo2 = Evento.Source.Model.Parent.RUBRO().Name
oCtrl = Evento.Source
oFormCtl = oCtrl.Model.Parent
oFormCtl.ApplyFilter = False
If oTxt <> "" then
oFormCtl.Filter = " UPPER(" & sCampo1 & ") LIKE " + "UPPER('%" & oTxt & "%') OR UPPER(" & sCampo2 & ") LIKE " + "UPPER('%" & oTxt & "%')" 'ENCUENTRA SI CONTIENE ALGO DE LA TECLA PULSADA
oFormCtl.ApplyFilter = True
Else
oFormCtl.ApplyFilter = False
End if
oFormCtl.Reload
oCtrl.SetFocus()
oFormCtl.ApplyFilter = False
End Sub
'Poner al perder el foco para vaciar el buscador
Sub VaciarTexto (Evento)
Evento.Source.Model.Parent.CampoBusqueda().Text=""
End Sub
NOTA. Te falta asignar la tabla en el origen de datos del formulario.
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Re: Error de Macro al buscar registro en formulario
MUCHAS GRACIAS!!!!! anda perfectamente!!! felicitaciones
OPENOFFICE 3.4.1