Argel Gastélum Arellánez escribió:
Juan Maureira escribió:
Holas
Puede que el problema sea que la función que escribiste recibe el
parámetro
Event de tipo Object, este lo ocupas en la línea que te señala el
error con
la instruccion Form = *Event.*Source.Model.Parent. Cuando ejecutas la
Macro
desde un botón en un formulario "Event" es el boton que se activó y
loq eu
hace la instrucción es obtener el formulario en el cual el boton
está, por
lo tanto cuando lo ejecutas desde el Editor Basic "no sabe" cual es el
"Event" que se activó y por lo tanto no puede ejecutar el código.
Te dice que el parámetro no es opcional (lo dá el mismo botón al
ejecutarse
desde el formulario) pues en Basic puedes tener parámetros opcionales
en una
función
Suerte ^_^
JuanFraMaureira
Hola Juan, buenos días. Muchas gracias por tu explicación. Aunque
no conozco mucho sobre basic (apenas estoy tratando de aprender y este
código lo copié tal cual de un post en el foro de openoffice), ahora
me queda más claro el porqué del error cuando lo intento ejecutar
desde el editor de basic en base, o desde "herramienas/macros/ejecutar
macro", y de por qué funciona bien cuando lo ejecuto desde el
formulario en cuestión, asignado a un botón.
En este post mencionan que se puede hacer también adaptar para
abrir un informe, cambiando la parte de "FormDocuments" a
"ReportDocuments" y dejando el resto es igual. ¿Sería posible también
adaptarlo para llamar una consulta o una tabla? ¿qué tendría que poner
en vez de "FormDocuments" o "ReportDocuments"? Por si las dudas,
vuelvo a copiar el código más abajo.
Muchas gracias por tu atención.
Saludos.
--
Argel.
Código:
---------------------------------------------------------------
Sub OpenForm(Event As Object)
Dim Form As Object
Dim FormDoc As Object
Dim Forms As Object
Dim DBDoc As Object
Dim Args(1) As New com.sun.star.beans.PropertyValue
Dim FormName As String
Form=Event.Source.Model.Parent
Forms=Form.Parent
FormDoc=Forms.Parent
DBDoc=FormDoc.Parent
Args(0).Name="ActiveConnection" :
Args(0).Value=Form.ActiveConnection
Args(1).Name="OpenMode" : Args(1).Value="open"
FormName="Nombre_del_formulario"
DBDoc.FormDocuments.loadComponentFromURL(FormName,"_blank",0,Args)
End Sub
---------------------------------------------------------------
Hola a todos, buenas tardes. Bueno, pues navegando de nuevo por la
web me econtré esto en un post de openoffice en inglés:
- Primero hay que escribir el siguiente código, que será lo que creo es
una especie de macro general o una especie de función (corríjanme por
favor si me equivoco):
------------------------------------------------------------------------------
sub OpenQueryDataView( aQueryName as string, aConnection as variant )
oDesktop = createUnoService("com.sun.star.frame.Desktop")
Dim aURL as New com.sun.star.util.URL
aURL.Complete = ".component:DB/DataSourceBrowser"
oDispatchObject = oDesktop.queryDispatch(_
aURL, _
"_Blank",_
com.sun.star.frame.FrameSearchFlag.CREATE)
Dim aProps(5) as New com.sun.star.beans.PropertyValue
aProps(0).Name = "ActiveConnection"
aProps(0).Value = aConnection
aProps(1).Name = "CommandType"
aProps(1).Value = com.sun.star.sdb.CommandType.QUERY
aProps(2).Name = "Command"
aProps(2).Value = aQueryName
aProps(3).Name = "ShowMenu"
aProps(3).Value = True
aProps(4).Name = "ShowTreeView"
aProps(4).Value = FALSE
aProps(5).Name = "ShowTreeViewButton"
aProps(5).Value = FALSE
oDispatchObject.dispatch(aURL, aProps)
End Sub
------------------------------------------------------------------------------
- Y después, asignar la siguiente macro para cada botón que vaya a abrir
una consulta específica:
------------------------------------------------------------------------------
sub onClickButton_Nombre_de_esta_macro( oEvent as object )
openQueryDataView( "Nombre de la consulta",
oEvent.Source.Model.Parent.ActiveConnection )
end sub
------------------------------------------------------------------------------
Aquí, sólo habría que cambiar el
<onClickButton_Nombre_de_esta_macro> y el "<Nombre de la consulta>".
Habría que crear una macro como esta para cada consulta que se desee
abrir con un botón de formulario, y asignarla a dicho botón en
"Propiedades/Acontecimientos/Botón del ratón pulsado/Clic de
ratón/Macro/Macro deseada".
Espero sus comentarios y sugerencias. Muchas gracias de antemano por
la ayuda.
Saludos.
--
Argel.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]