[RESUELTO]Atascado en como Imprimir FichasSocias

Discute sobre las herramientas de la base de datos
Responder
antonsiete
Mensajes: 87
Registrado: Dom Jun 24, 2018 8:48 pm

[RESUELTO]Atascado en como Imprimir FichasSocias

Mensaje por antonsiete »

Hola,

estoy intentando buscar la manera de poder Imprimir Fichas de las Socias de la BD, la idea es crear una Ficha por Socia en un folio con los Datos Personales de la Socia(estan en la tabSocias) y con los Datos de los ContactosSocia(estan en la tabContactosSocia),tambien he creado una Consulta con los datos de ambas Tablas combinados, para poder usarla para crear un Informe con ORB, y tambien poder usarla como Fuente de Datos para un Documento Write, el problema me lo encuentro en que a cada Socia se le pueden poner dos personas de contacto.

He estado buscando por el foro pero las cosas que he sido capaz de encontrar creo que son mas complicadas de lo que yo busco.

Estas son las cosas que he probado:

1.-Boton Imprime Formulario: En principio la forma mas sencilla creo yo, ya que el problema de los dos Registros de la tabContactosSocia lo resuelvo poniendo un Control de Tablas que me muestra ambos Registros, pero me he encontrado la pega de que solo Imprime el Registro que se este visualizando en ese momento en el Formulario, para sacar fichas en blanco me va bien, pero para sacar las Fichas de todas las Socias que haya en la BD me obligaria a ir Registro a Registro para Imprimirlos todos.

He creado dos Formularios(formImprimirFichasEnBlanco y formImprimirFichasDatosSocias), ambos estan formados de un Form principal, con los Campos de la tabSocias, y un SubForm, con un Control de Tablas para los campos de la tabContactosSocia.

.-el primero esta creado para "Solo Introducir Nuevos Datos", con lo cual me sale con todos los campos en blanco y me sirve para Imprimir fichas en Blanco.
.-el segundo esta creado para "Solo Mostrar Datos" de forma que no se pueden ni añadir ni modificar los datos existentes, pero tiene la pega de tener que ir Registro a Registro.

Y les he puesto un Boton "Imprimir" con la siguiente Macro asignada:

Código: Seleccionar todo

'Inicio Macro Imprimir Formulario
Sub BotonImprimeFormulario(Evento As Object)
   Dim oForm As Object
   Dim oFrame As Object
   Dim oDisp As Object
   oForm = Evento.Source.Model.Parent
   oFrame = oForm.Parent.Parent.CurrentController.Frame
   oDisp = CreateUnoService("com.sun.star.frame.DispatchHelper")
   oDisp.ExecuteDispatch(oFrame,".uno:Print","",0,Array())
End Sub
'Fin Macro
Si se pudiese modificar esa Macro para que imprimiese todos los Registros en cadena creo que seria la solucion mas sencilla a mi problema.

2.-Crear Informe con ORB desde una Consulta que contiene todos los Campos: Tampoco deberia ser complicado, pero aqui me he encontrado el problema de que al tener la Socia nº1 dos Registros en la tabContactosSocias, me Duplica todos los datos de esa Socia para mostrarme los dos Registros de la tabContactosSocia.
A esto se añade el problema del diseño ya que de momento no he sido capaz de poder poner los datos en celdas o en lineas del estilo a una tabla.

3.-Crear un Documento Write usando como fuente de datos la Consulta: De esta forma si que he conseguido poder darle el diseño que quiero, que que quedaria muy parecido al formImprimirFichasDatosSocias, pero me he encontrado nuevamente el problema de los dos Registros que tiene la Socia Nº 1 en la tabContactosSocia.
Cuando "Inserto" los Campos de los datos personales de la Socia parece que todo va bien y a la hora de imprimir me muestra los Datos de todos los Campos de cada Socia, pero cuando "Inserto" los Campos que corresponden a la tabContactosSocia a la hora de imprimir solo me muestra el primer Registro de los dos que hay en la Consulta que pertenecen a la Socia Nº 1.

Si hay forma de que se puedan mostrar los dos Registros esta tambien seria una solucion bastante sencilla para mi.

No se si abre sido capaz de explicarme para que se entienda bien el problema.

Adjunto enlace a lo que he ido haciendo, a ver si hay alguna solucion para este atasco.

https://mega.nz/#!yRgUiQYA!65cTHHBBvYzX ... 8mH9fr8w2k

Un saludo y gracias
Última edición por antonsiete el Mié Jul 18, 2018 6:56 pm, editado 1 vez en total.
Apache OpenOffice 4.1.5
OS X El Capitan 10.11.6
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Atascado en como Imprimir FichasSocias

Mensaje por RMG »

Hola,

En la agrupación por socia, debes poner todos los datos correspondientes a la misma, así aunque se repitan solo te los muestra una vez, y en el detalle pones los campos de los contactos para que muestre todos los existentes.

Saludos
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)
antonsiete
Mensajes: 87
Registrado: Dom Jun 24, 2018 8:48 pm

Re: Atascado en como Imprimir FichasSocias

Mensaje por antonsiete »

Hola,

por lo que entiendo hablas del supuesto, Crear Informe con ORB, intentare lo que dices.
Lastima que sea esa la solucion ya que es en el unico metodo que no consigo afinar con el diseño.

Un saludo y gracias
Apache OpenOffice 4.1.5
OS X El Capitan 10.11.6
antonsiete
Mensajes: 87
Registrado: Dom Jun 24, 2018 8:48 pm

Re: Atascado en como Imprimir FichasSocias

Mensaje por antonsiete »

Hola,

Acabo de hacer un intento y al llegar a la agrupacion solo me deja pasar los 4 primeros campos.

En el campo nombre completo se queda seleccionado en azul pero no pasa ni con doble click, ni con la flecha ,que en este caso se ha quedado en gris.

https://mega.nz/#!WJoFkDyT!Ny_9yJuNdzIU ... 9DqE0zvw2I
Apache OpenOffice 4.1.5
OS X El Capitan 10.11.6
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Atascado en como Imprimir FichasSocias

Mensaje por RMG »

Hola,

No se si no me he explicado bien. Una sola agrupación por nº de socia (ya la tienes) y dentro de ese grupo (en el espacio azul)pones el resto de campos de la socia repartidos a tu criterio y en el detalle del informe los campos que corresponden a los contactos como pueden ser parentesco, nombre o tfnos. Mi opinión es que la descripción (titulo) de los campos de los contactos los pusieras en una sola linea en la parte inferior del grupo o en la parte superior del detalle para no repetirlos.

Saludos
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)
antonsiete
Mensajes: 87
Registrado: Dom Jun 24, 2018 8:48 pm

Re: Atascado en como Imprimir FichasSocias

Mensaje por antonsiete »

Hola,

Tu te habias explicado pero yo no te habia entendido, crei que decias en Agrupar a la hora de crear el Informe.

Ahora he conseguido hacer algo parecido a lo que tu dices, pero la verdad es que me esta resultando super complejo el poder poner los campos tal y como yo quiero,
a eso se suma que los Datos no quedan ni en forma de Tabla ni organizados por Grupos,
y ademas veo que no ocupa una pagina entera por Socia, hay en alguna de las Socias que los primeros datos salen al final de la pagina de la Socia anterior,
supongo que es todo cuestion de comerse la cabeza con el ORB pero creo que me va a costar menos usar el tema de Imprimir desde los Formularios y el resultado se acercara mas a lo que busco.
Quizas en otro momento le dedique algo mas de tiempo al ORB, pero ahora mismo me ha puesto hasta dolor de cabeza.

Me voy a sacar el perro para que se me baje el calenton, jajajajaja

https://mega.nz/#!GRh1BTyB!yxLt3p6Epm5i ... 6yQhnFcAq8

Un saludo y muchas gracias por tu interes
Apache OpenOffice 4.1.5
OS X El Capitan 10.11.6
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Atascado en como Imprimir FichasSocias

Mensaje por Longi »

Buenas!
A mi el ORB no me gusta, ya que aunque tiene muchas cosas que no tiene el anterior sistema, tiene algunas limitaciones que me echan para atrás.
En el ejemplo te modifiqué el diseño y pude poner una socia por página (creo que era algo que querías), pero no tiene recuadros, porque esa es una de las limitaciones de ORB, aunque con macros supongo que seríamos capaces de colocarlo (pero no sin trabajo).
Si quieres otro tipo de diseño, haz un modelo en un writer o en un calc y se puede mirar cómo atacarlo.
Por el momento te dejo el ejemplo:
https://drive.google.com/file/d/1f12d3Z ... sp=sharing

Un saludo! ;)
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
antonsiete
Mensajes: 87
Registrado: Dom Jun 24, 2018 8:48 pm

Re: Atascado en como Imprimir FichasSocias

Mensaje por antonsiete »

Hola Longi,

Gracias por tu interes.
Acabo de echarle un vistazo a esa modificacion y si tiene pinta de acercarse a lo que andaba buscando, aunque creo que seguiria saliendo sin las "Tipicas" Lineas o Celdas del formato Tabla, que es algo que si me gustaria poder hacer en los Informes, ya que son para manejarlos señoras mayores y de esa forma considero que es mas facil seguir las lineas de Datos, pero digo "si tiene pinta", ya que no me deja "Ejecutar" el informe, ni desde la propia lista de informes, ni desde la vista de diseño del Informe con el Boton Ejecutar Reporte, en ambos casos se me cierra por completo AOO, y no entiendo muy bien porque, ya que no veo que hayas añadido Macros ni nada por el estilo, no se cual puede ser el problema.

Respecto al ORB, pensaba que era por mi propio desconocimiento o torpeza lo de no acabar de afinar los Diseños, pero por lo que lei ayer mismo en tu InfConsideraciones, de Informes 1.0.odb, creo que hay algo mas que mi torpeza en el tema de afinar Diseños en ORB.
Ayer anduve revisando Hilos sobre este tema, y si es verdad que consegui ver algun ejemplo de RMG, que se acerca a lo del "aspecto" tipo tabla, en un hilo en el que ayudais a alguien en un tema de un centro de mayores, en concreto el "inf ajedrez", y algo asi si me podria servir, ya que esas lineas si que harian la funcion de "guia" por las "lineas de Datos", y si no me equivoco, creo que se insertan con un par de Iconos desde la barra de herramientas, asi que ire intentando descubrir el tema de distribuir los Campos de Datos en ORB, que es lo que me volvio un poco loco el otro dia, ya que para sacar listados "Simples"(una serie de columnas para crear una lista, por ejemplo Telefonos de las Socias) creo que si sere capaz de hacerlo.

En cuanto al tema de Imprimir las Fichas de las Socias, lo he solucionado "adaptandome" unas Macros, que si no recuerdo mal las saque de alguna de las ayudas que hace RMG, que son para "Abrir Formularios Filtrados por un Registro en Concreto",

Código: Seleccionar todo

Global iID As Integer

'Macro para poner "Boton de raton pulsado

Sub AbrirFormularioFiltrado (Event As Object)
	Dim oForm As Object
	oForm = Event.Source.Model.Parent
	If oForm.IsNew Or oForm.IsAfterLast Then Exit Sub
	iID = oForm.Columns.GetByName("ID").GetInt
	With ThisDatabaseDocument.FormDocuments.GetByName("Realizacion")
		.Close
		.Open
	End With
End Sub


'Macro para poner "Al cargar formulario"

Sub Filtro (Event As Object)
	Dim oForm As Object
	oForm = Event.Source
	oForm.ApplyFilter=True
	oForm.Filter="""ID""=" & iID
	oForm.Reload
End Sub
y lo deje asi:

Código: Seleccionar todo

'Inicio Macro para Abrir formImprimirFichasDatosSocias Filtrado por NºSocia 
'poner en "Boton de raton pulsado"

Global iID As Integer

Sub AbrirformImprimirFichasDatosSocias (Event As Object)
	Dim oForm As Object
	oForm = Event.Source.Model.Parent
	If oForm.IsNew Or oForm.IsAfterLast Then Exit Sub
	iID = oForm.Columns.GetByName("NºSocia").GetInt
	With ThisDatabaseDocument.FormDocuments.Datos.Socias.GetByName("formImprimirFichasDatosSocias")
		.Close
		.Open
	End With
End Sub
'Fin Macro

'Inicio Macro para Abrir Formularios Filtrados por NºSocia 
'poner en "Al cargar formulario" En el Formulario de Destino

Sub FiltroNumeroSocia (Event As Object)
	Dim oForm As Object
	oForm = Event.Source
	oForm.ApplyFilter=True
	oForm.Filter="""NºSocia""=" & iID
	oForm.Reload
End Sub
'Fin Macro
Con la diferencia de que la Macro del Filtro, la he puesto en un Modulo Nuevo("Filtros") con la intencion de ver yo las cosas mas claras a la hora de Editar mas adelante, y tambien por si en algun momento creo algun filtro por otro Campo.(No se si es buena idea, pero en principio parece que funciona bien).

En su forma original al ejecutarlo me daba un error en la linea:

Código: Seleccionar todo

		.Close
lo cual me tuvo un poco despistado por unos momentos, ya que como pasaba por la linea:

Código: Seleccionar todo

	With ThisDatabaseDocument.FormDocuments.GetByName("formImprimirFichasDatosSocias")
sin darme error en ella, al principio no asociaba el error con lo de tener los Formularios ordenados en Carpetas, pero luego me di cuenta de que podia estar relacionado(aunque los dos Formularios usados para este caso concreto se encuentran en la misma carpeta), ya que lo mismo que para abrir los Forms necesito usar una Macro con esta linea:

Código: Seleccionar todo

   ThisDatabaseDocument.FormDocuments.getByHierarchicalName(Evento.Source.Model.Tag).Open'Abre el Form indicado en la Ruta 

pense que tendria que cambiar el ".GetByName" por ".getByHierarchicalName", pero no, daba el mismo error.
Hice la prueba de "Sacar" el "Formulario Destino", "formImprimirFichasDatosSocias", de la Carpeta Socias hacia la raiz en la que esta el Formulario "Inicio", y asi si que funciono, con lo cual llegue a la conclusion de que el problema estaba en "apuntar" correctamente hacia la posicion de ese "Formulario Destino".
Asi que haciendo un par de pruebas llegue a esto:

Código: Seleccionar todo

	With ThisDatabaseDocument.FormDocuments.Datos.Socias.GetByName("formImprimirFichasDatosSocias")
y si no aparece nada raro por ahi, creo que funciona bien, se abre el "Formulario Destino", filtrado por el registro elegido en el "Formulario Origen"(desde un Boton "Ficha Socia" situado en la "Zona" "Documentos" bajo la Etiqueta "Imprimir" en el "Formulario Origen"(formSociasAlta)), y en ese "Formulario Destino" he puesto un Boton(con Propiedad "No Imprimible") "Imprimir Ficha", que lanza el Formulario a la Impresora, con lo que creo que tengo el problema resuelto.
Me queda pendiente hacer la prueba de Impresion, ya que las Impresiones las hago "Controlando" el equipo de mi amatxu por medio de TeamViewer, porque ella tiene una Impresora Laser y asi va viendo los resultados y dando el visto bueno o sus opiniones, pero ayer tenia el ordenador apagado y no pude.

Como te digo, estuve ojeando "Informes 1.0.odb", al que llegue mientras revisaba los consejos que dabais en este Hilo:
https://forum.openoffice.org/es/forum/v ... 31&t=13644
Pero creo que de momento, Informes 1.0.obd, esta muy por encima tanto, de mis conocimientos en el uso de Macros, como en el alcance que de momento tiene este "proyecto" de BD.
Aunque si me llamo la atencion la solucion que propones en el caso del Centro de Personas Mayores, en cuanto al tema de los Informes de las Actividades, ya que evita tener que crear un Informe Individual para cada Actividad, y que seguire estudiando a ratos, ya que quizas mas adelante me pueda servir, porque de momento no se el numero de actividades que van a desarrolar en esta Asociacion, en principio se que seran Charlas, Cursos, Excursiones, creo que Bailes y alguna cosa mas, pero estoy de pendiente de tener mas Info sobre el tema.
Asi que es probable que en un futuro no muy lejano veas algun hilo mio pidiendo ayuda sobre ese tema.

Y despues de toda esta chapa, que espero podais entender algo de lo que digo:

Adjunto enlace de como ha quedado la BD con la "solucion Franquestein" para el tema de Imprimir las Fichas.
https://mega.nz/#!vIoV0K4R!SBLgz0XDIV-X ... ZujecTnXB8

Y

Un saludo y muchisimas GRACIAS por vuestro inestimable trabajo para ayudar a neofitos como yo
Última edición por antonsiete el Mié Jul 18, 2018 9:58 am, editado 1 vez en total.
Apache OpenOffice 4.1.5
OS X El Capitan 10.11.6
antonsiete
Mensajes: 87
Registrado: Dom Jun 24, 2018 8:48 pm

Re: Atascado en como Imprimir FichasSocias

Mensaje por antonsiete »

PD:

Vaya madrugones que te pegas, jajaja

Agur
Apache OpenOffice 4.1.5
OS X El Capitan 10.11.6
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Atascado en como Imprimir FichasSocias

Mensaje por RMG »

Hola

Sobre hacer cuadros tipo tabla en ORB, si es posible con un poco de ingenio y trabajo. En el adjunto se puede ver lo realizado con tres rectangulos, también es posible con lineas horizontales y verticales. Por supuesto que lleva su trabajo, pero estan las opciones de hacer solo una linea y copiar y pegar.

https://mega.nz/#!J8cCTCLL!LyTQpOmpauzE ... AM1YXekfxk

Saludos
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)
antonsiete
Mensajes: 87
Registrado: Dom Jun 24, 2018 8:48 pm

Re: Atascado en como Imprimir FichasSocias

Mensaje por antonsiete »

Hola RMG,

Me ocurre lo mismo que con el ejemplo que me ha puesto Longi, no me deja ver el "resultado" del informe, lo intento abrir desde la Zona Informes y me cierra AOO, lo abro en Modo Diseño y si veo que has insertado una linea Horizontal debajo de NºSocia y Nombre en la zona del Encabezado del Detalle, pero tampoco me deja ejecutar el reporte desde el Boton,con lo cual no puedo ver el "resultado real" de ninguna de las dos modificaciones que habeis hecho, supongo que eso ya es un tema de incopatibilidades entre Mac y Windows.

Para comprobarlo voy a hacer la puebra de Transferir por TeamViewer vuestros ejemplos al equipo de mi ama, que funciona con Windows, y que le instale AOO 4.1.5, a ver si alli me deja abrir los Informes,
de todas formas, despues de leer en el infConsideraciones, de Informes 1.0.odb, de Longi, " DB de AOO ha pasado a ser el patito feo y como no lo usa mucha gente se ha ralentizado el desarrolo, y como se ha ralentizado el desarrolo cada vez lo usa menos gente", se me ha pasado por la cabeza probrar con LibreOficce y ver si tengo estos mismos problemas, pero mi duda es si en LibreOficce podria probar con el trabajo que ya tengo avanzado o si tendria que empezar de cero.

De momento voy a hacer la prueba de trasferir estos ejemplos y probarlos alli bajo Windows, con lo que resulte os digo algo.

E intentare crear un Informe "entablado" usando la opcion de insertar las barras horizontales y verticales a ver de lo que soy capaz.

Un saludo y gracias
Apache OpenOffice 4.1.5
OS X El Capitan 10.11.6
antonsiete
Mensajes: 87
Registrado: Dom Jun 24, 2018 8:48 pm

Re: Atascado en como Imprimir FichasSocias

Mensaje por antonsiete »

Hola,

al parecer el problema con los informes modificados que me habeis enviado va mas alla de una incompatibilidad de Mac y Windows.

He trasferido vuestros dos archivos BD:
"AVB copia 10 Botones Simplificados", deRMG,
"AVB copia 10 Botones Simplificados+Tablas+RelacionesDatosfalsosNuevosSubFormsCuotasFuncionan+Consultas", de Longi,
y tambien el archivo BD en el que voy avanzando yo:
"AVB copia 10 Botones Simplificados+Tablas+RelacionesDatosfalsosNuevosSubFormsCuotasFuncionan+Consultas+BotonesAbrirUrl+ImpimirFichas"

He probado los tres, los tres se abren en el equipo de ama y aparentemente el funcionamiento de los Botones, formularios y demas es correcto,
salvo el tema de la visualizacion, ya que todo esta diseñado en mi Mac y supongo que por la diferencia del tamaño de las pantallas, en el de mi ama no veo los formularios en su totalidad sino que me salen las barras de desplazamiento,
tambien cambia el aspecto del tipo de letra y de los fondos de los formularios, pero eso es lo de menos, al menos por ahora.

Con la prueba de Impresion de la Ficha todo ha ido bien, he ido abriendo los formularios y he lanzado la ficha a la impresora, todo sin problemas.

Con vuestros archivos he tenido el mismo problema en ambos casos, lo podeis ver en las capturas que adjunto, resulta que si me abre la chapuza de informe que cree yo, pero con los vuestros no se abren y me lanza el mismo error en ambos casos, esta en las capturas, es un poco largo para escribirlo aqui.

En cuanto tenga un ratito intentare reorganizarme y probar la creacion de un informe entablado con ORB para listas simples, a ver si soy capaz, y asi poder seguir con la creacion de los Formularios que me quedan y respecto a los cuales ya me surgen ciertas dudas pero abrire otros hilos con su tema correspondiente.

Capturas de pantalla controlando equipo por TeamViewer
https://mega.nz/#F!fNJxhIiS!7Qj1k91Qj-nNsFeMDGV1SQ



Un saludo y muchas gracias nuevamente
Última edición por antonsiete el Mié Jul 18, 2018 4:58 pm, editado 2 veces en total.
Apache OpenOffice 4.1.5
OS X El Capitan 10.11.6
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Atascado en como Imprimir FichasSocias

Mensaje por Longi »

Buenas de nuevo!

Yo soy nativo de AOoo y no suelo trabajar con ORB, pero por motivos de trabajo al final estoy usando LibreOoo, aunque sigo resistiéndome al ORB.
El error te indica que hay un problema en una sentencia SQL, donde hay una columna que no encuentra, y ese error se da en AOoo y no en LOoo, y es consecuencia de un cambio que le hice al informe en el agrupamiento: en 'Grupo en' estaba seleccionado como 'En cada valor' y lo cambié a 'Intérvalo', con lo que conseguía dejar cada registro (cada socia) en una página independiente.
Por lo que se ve, ORB obliga en este caso a hacer transformaciones sobre la consulta original de forma interna para la que sí que está preparado LOoo y no AOoo. Hay que recordar que en LOoo ORB está instalado de oficio, mientras que en AOoo no es así, así que es posible que haya diferencias en el comportamiento.
De todos modos, aunque mis reflexiones (por llamarlo de alguna manera) sobre lo del "patito feo" puedes acoplarlas en el mismo sentido e intensidad para LOoo. Los desarrolladores no se lo toman en serio, de hecho LOoo está en un proceso de substitución de HSQLDB por Firebird como motor de base de datos.
Me resulta curioso que quieran huir de java con este paso a otro motor, y sin embargo los informes se hagan con ORB (si no me equivoco java puro y duro). Considero que los informes en el sistema anterior tienen mucho recorrido, si alguien quisiera mejorarlos para no tener que tirar de tanta macro.
Ya te digo, si nos pones una imagen de cómo quisieras que quedase se puede intentar encuadrar los campos en su recuadro o hacer tabla o quizá poner un salto de página después de cada socia, o alguna virguería más, pero tenemos que saber qué, aunque luego lo remates con tus propias ideas.....

Un saludo! ;)
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
antonsiete
Mensajes: 87
Registrado: Dom Jun 24, 2018 8:48 pm

Re: Atascado en como Imprimir FichasSocias

Mensaje por antonsiete »

Buenas tardes Longi,

Precisamente acabo de terminar de estar enredando con ORB,

primero he intentado "rediseñar" el infParaImprimirFichas, pero lo he dejado por imposible (por que no se si es algo personal contra mi lo que tiene el ORB o si es asi con todo el mundo), pero cuando me he decido a usar la opcion de Insertar/Formas basicas/Rectangulo y estaba empezando a avanzar algo, le ha dado por quedarse colgado cuando intentaba redimensionar los tamaños de las etiquetas y de los campos con las flechitas que salen al ponerse sobre ellos, y solo me dejaba redimensionarlos mediante el cuadro de dialogo Propiedades con lo cual era bastante coñazo.
Asi que como lo de las Fichas ya lo tengo resuelto con mi metodo Frankestein, (si es que no le veis ninguna pega) lo he dejado por imposible.

Despues me he puesto a crear infTelefonosEmailSociasAlta, intentando hacerlo hacerlo con el sistema de las lineas horizontales y verticales, pero me he encontrado con que es bastante complicado hacer que se alineen como uno quiere en las esquinas, ademas me ha estado volviendo loco el modificar la altura del Encabezamiento del Detalle, cuando conseguia que ambas lineas horizontales creasen una "especie de linea de tabla", al intentar quitarle altura al Encabezamiento del Detalle la linea inferior se separaba y "la supuesta linea de tabla" cogia anchura, asi que he decido cambiar de Tercio, como dicen los taurinos.

Y por fin he creado infTelefonosEmailSociasAlta1, que si que se acerca al resultado que yo ando buscando para los listados, finalmente lo he hecho con la opcion de Insertar/Formas Basicas/Rectangulo, con la que estoy familiarizado por el tema de la creacion de los Formularios, aunque he echado en falta poder cambiarle el color a la linea del rectangulo, y eso que he abierto la barra de herramientas/Propiedades del objeto de dibujo, pero solo estaba disponible la opcion de elegir el tipo de linea(continua, discontinua, puntitos, etc) y de esta forma he conseguido algo parecido a lo que tenia en mente, pero la verdad es que con bastante mas trabajo del que creo que seria necesario, ya que hay que andar redimensionando cada rectangulo, colocandolo en su ubicacion y poniendole su campo dentro, lo que creo que seria mucho mas sencillo con una simple tabla de Calc o de Write con sus columnas correspondientes a cada campo de datos, a la que se pueda dar un fondo de color a linea de encabezado, y que salgan las lineas de las celdas con color para hacer de guia en las lineas de datos.
Pero bueno, hay que intentar adaptarse al medio.

Lo que si le veo como pega es que los campos de telefono que estan vacios me los rellena con una combinacion de ceros y letras, y es un poco putada porque de esta forma no se puede escribir a mano en ellos, una vez impresos en el caso de que la Socia en cuestion aporte ese nuevo dato de Telefono.
En el peor de los casos siempre me queda la opcion de copiar los resultados de la Consultas y pegarlos en una Hoja Calc, que era mi metodo origen, pero es una pena no poder aprovechar todo el potencial de la BD y tener que andar creando archivos externos.

Adjunto lo que te cuento que he conseguido hacer con los Informes.
https://mega.nz/#!bN4liZSR!rKELMQnrDpMB ... 2epEJSe1bA

La idea es que salga lago tan sencillo como esto para poder imprimirlo y poder rellenar a mano los datos que falten.
https://mega.nz/#!uN5n0QLT!TgRvvdN7-dFB ... s4s7Znx0I0
https://mega.nz/#!mM53UY5Q!5i-L_FJSfF3v ... _CPdYB5Moo

un saludo y muchas gracias por vuestro tiempo
Apache OpenOffice 4.1.5
OS X El Capitan 10.11.6
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: Atascado en como Imprimir FichasSocias

Mensaje por Longi »

Prueba a desinstalar el ORBE y haz alguna prueba con el asistente 'tradicional '.
Quizá te convenza más
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
antonsiete
Mensajes: 87
Registrado: Dom Jun 24, 2018 8:48 pm

Re: Atascado en como Imprimir FichasSocias

Mensaje por antonsiete »

hola,

si, alguna prueba hare, por comparar y ver de que manera me complico menos la vida, ya que ahora mismo lo que necesito es haciendo que esto vaya funcionando regularmente en todos los sentidos, y mas adelante ya podre dedicar mas tiempo a ir profundizando en cada uno de los frentes que se van abriendo.

Asi que por ahora voy a poner el hilo como resuelto, ya que por lo que veo mi forma Frankestein de resolver lo de Imprimir las Fichas parece que no deberia darme problemas mas adelante, y lo del tema de los informes, con un poco mas o menos de trabajo parece que voy a ser capaz de ir sacandolos adelante.

Nos vemos en proximos hilos jajajaja

Un saludo y muchas gracias por vuestra ayuda
Apache OpenOffice 4.1.5
OS X El Capitan 10.11.6
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: [RESUELTO]Atascado en como Imprimir FichasSocias

Mensaje por RMG »

Hola,

En caso de trabajar el Calc con los datos de una consulta o una tabla, además de copiar y pegar, tienes la opción de pasar los datos directamente solo con arrastrar. Para ello debes registrar la BD, después y sin abrirla, desde Calc con F4 te muestra las BD registradas, seleccionas la tuya y ya dispones de los datos, despliegas la tabla o consulta pertinente y te muestra los datos en la parte superior como si tuvieras otro Clac abierto, con tan solo picar en el cuadro vertice superior donde se unen las filas y columnas y arrastrarlo a la hoja seleccionada ya tienes los datos.

Saludos
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)
antonsiete
Mensajes: 87
Registrado: Dom Jun 24, 2018 8:48 pm

Re: [RESUELTO]Atascado en como Imprimir FichasSocias

Mensaje por antonsiete »

Hola RMG,

recibido,

creo que es algo similar al intento que hice el otro dia con un documento Write para crear las famosas fichas, con el F4 que comentas se abren las fuentes de datos, si no estoy equivocado, y por lo que dices se puede usar tanto para Write como para Calc.

Tendre la opcion en cuenta, de momento voy a intentar a ratos ir dominando un poco mas el ORB y hare alguna prueba con el editor standar, como dice Longi, a ver si es menos trabajoso, ya que seria una pena tener que andar con documentos externos pudiendo gestionar todo desde la propia BD, pero bueno, esa opcion siempre esta ahi.


Un saludo y gracias :super:
Apache OpenOffice 4.1.5
OS X El Capitan 10.11.6
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: [RESUELTO]Atascado en como Imprimir FichasSocias

Mensaje por Longi »

Buenas!
Ya sé que lo tienes como solucionado con el tema del formulario frankenstein, pero he puesto una solución para que se vean los bordes.
Precisa de bastante bricolage, pero se puede hacer.
Lo que sí, si cambias un poco el diseño lo descabalgas todo y habría que recalcular las coordenadas de las celdas afectadas.
intenté copiar el Frankenstein, pero se acumulaban muchos campos, líneas, etc, así que lo dejé solo empezado, pero sería aplicando el mismo principio.
Lo que hago es editar el informe una vez generado (documento ya final),y con la opción 'Ver'--'Límites de texto', se ven los bordes de las celdas generadas. A partir de ahí es contar y ya sabes en qué celdas aplicar el borde.
Se me olvidó añadir una opción muy útil que sí que tiene el sistema antiguo, que es la autoaltura. En ORB, sin macro, si el texto ocupa más que la celda, entonces te pone una flecha roja, pero si a esa fila le asignas 'Autoheight', entonces la celda crecerá en vertical y no aparece la molesta flecha roja.
Ah! puse un botón en el formulario socias-Alta que según tengas una u otra seleccionada te abrirá el informe de esa socia.
Para el informe en blanco se me ocurrió poner una socia sin datos, pero tienes algunos campos que los rellena por defecto....De todos modos supongo que es algo que sí que podrás solucionar.
Otra cosa: Todo va con una macro. Si abres el informe sin la macro, estarás viendo las cosas sin los bordes, así que lo debes abrir desde el botón.

Aquí tienes:

https://drive.google.com/file/d/1t6J0bY ... sp=sharing

Otro saludo! ;)
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
antonsiete
Mensajes: 87
Registrado: Dom Jun 24, 2018 8:48 pm

Re: [RESUELTO]Atascado en como Imprimir FichasSocias

Mensaje por antonsiete »

Hola Longi,

como puse el hilo como resuelto no pense que ibas a seguir currando para solucionar ese tema, madre mia que pedazo de Macro para imprimir una simple ficha.

La verdad es que para lo de las fichas creo que me quedare como estoy, con mi solucion Frankestein, ya que como con en el tema formularios, me apaño para posibles modificaciones de diseño( de hecho ya he modificado la ficha añadiendo el SubFormCuotasSocias), en adelante no necesitaria tener que daros la chapa.

De todas formas me guardo tu archivo con las modificaciones para poder estudiarlo en un futuro(nunca esta de mas aprender un poco), y quien sabe si quizas lo pueda usar para alguna otra opcion que surga, aunque creo que es demasiado codigo como para que yo pueda hacer experimentos de momento.

En cuanto a los Informes, probe tu consejo de quitar el ORB y efectivamente con el editor Standar he conseguido crear un inf acorde a lo que yo estaba buscando y he añadido un Boton en el Form Inicio desde el que se abre el informe para imprimir, es un informe de lo mas simple pero que al menos los Campos que estan vacios me los deja en blanco de forma que se puede añadir datos en ellos una vez impresos.
Ahora me queda ir creando el resto de informes a medida que surgan las necesidades, pero la verdad es que sin el ORB no me costo mucho hacer que quedara de mi agrado.

Iba a abrir un hilo para comentar este tema del ORB, o mejor dicho del "no ORB", pero al final un dia por otro no lo habia hecho, ya lo siento, porque esa Macro te ha tenido que llevar un "ratito".

Adjunto enlace de la BD con el inf creado sin ORB y el Boton que lo abre desde Inicio
https://mega.nz/#!aQ4ljbZI!hPuoNDWwuWeh ... P5Pfml6T4s

Te agradezco muchisimo tu interes
Apache OpenOffice 4.1.5
OS X El Capitan 10.11.6
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: [RESUELTO]Atascado en como Imprimir FichasSocias

Mensaje por Longi »

Ya sé que está todo OK! y que no precisas ningún añadido al asunto, pero es que en el tema de los informes el no saber hacer algo me lleva los demonios......
Así que te he puesto una nueva versión, con un informe que es un calco de tu Frankenstein, pero en informe, y que en la parte de contactos hago un subinforme (de esos que dicen que no se pueden hacer) en el que he añadido tablas (una por cada contacto y otra adicional en blanco por si se quiere añadir uno nuevo, hasta un total de 3, ya que el papel no da para más).
La macro es un tanto caótica, pero funciona: las tablas añadidas tienen inicialmente 14 columnas y 5 filas, después uno celdas según necesidades y elimino bordes de celdas, también según necesidades (debía haberlo hecho en el orden contrario y habría ahorrado código), después regulo las alturas de las filas y el tipo de letra.
La última fila de cada tabla va con altura muy pequeña y con fondo negro, simulando una línea algo gruesa que separa registros.
El informe está hecho sin ORB, se llama Fichas3 y se lanza desde el botón añadido al formulario de altas socias.
Sirve igual para nuevas socias, ya que si está en la fila de escribir (sin apuntar a ninguna socia en concreto, el informe sale en blanco, perdón, con los campos sin rellenar y con una tabla de contactos.)
Está probado tanto en Open como en Libre, en entorno Windows.

https://drive.google.com/file/d/1ok13U4 ... sp=sharing

Un saludo! ;)
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
antonsiete
Mensajes: 87
Registrado: Dom Jun 24, 2018 8:48 pm

Re: [RESUELTO]Atascado en como Imprimir FichasSocias

Mensaje por antonsiete »

Hola Longi,

Lo unico que se me ocurre decir, asi a botepronto, es que eres un FENOMENO.

Por lo poco que he podido ojearlo funciona a la perfeccion.
Desde mi limitado conocimiento de Macros creo que , "La macro es un tanto caótica", igual es exagerar un poco. Ya que hasta yo, veo mas o menos claro, con las lineas de comentarios que añades, que funcion hace cada parte del codigo( creo JAJAJA).

Si es cierto que en este primer vistazo me surgen algunas dudas:

1.- En la "Zona" Tablas de la ventana principal de la BD, aparece una "Tabla1", que es una "Vista", y que no veo que este relacionada con este asunto en cuestion. (Quizas sea un "Resto" de alguno de los intentos anteriores que hiciste)

2.- No soy capaz de descifrar como se "absorven" todos los Datos de la Socia en el Formulario Principal del Informe, ya que en principio esos Datos vienen dados por esta zona del Codigo:

Código: Seleccionar todo

 ' Filtramos los elementos a elegir en el control de tabla (columna artículo) en función del proveedor

    oConsulta = ThisDatabaseDocument.DataSource.QueryDefinitions.getByName ("Fichas3")             ' La consulta en la que se basa el reporte	
    oConsulta.Command ="SELECT ""NºSocia"" FROM ""tabSocias"" WHERE ""NºSocia"" = "& Socia &""    
    oreportdoc = Thisdatabasedocument.reportdocuments.getbyname("Fichas3").open                    ' Abrimos el informe
y en esa Consulta "Ficha3" el unico Dato que usas es el "NºSocia".

3.- Hay 3 lineas de codigo que, por lo que deduzco, se corresponden a la Definicion del formato del texto con el que se rellenan las Celdas de las 3 Tablas que generas para los "Datos de los Contactos de la Socia" y que ponen esto:

Código: Seleccionar todo

oCurs.ParaAdjust = com.sun.star.style.ParagraphAdjust.LEFT                                   ' Centrada
no se si es que se te ha "escapado" o es asi, ya que en realidad los Datos salen en "Alineacion Izquierda" que si se corresponde con el ".LEFT", pero creo que no lo hace con la linea comentada " ' Centrada "
( perdona por ser tan "tiquismiquis", es solo un intento de entender todo ese codigo)

Con este primer vistazo. he observado que lo que has hecho, es Añadir un "Formulario", dentro del Propio Informe, tal y como se hace a la hora de crear los Formularios que se usan para introducir Datos en la BD,
( y con este comentario creo que acabo de darme cuenta de la Solucion a mi "Duda 2", ¿los "Datos de la Socia" se "absorven" de la misma que en los "Formularios de introduccion de Datos"?)
y que todo el diseño del Informe esta hecho de la misma forma que yo he "diseñado" el Formulario Frankestein,
( o sea, a base de objetos de dibujo(recuadros) y etiquetas(de la barra de herramientas "Controles de Formulario") )

Y lo que "Diseñas" desde la Macro es el contenido del SubForm_ContactosSocia, que son esas 2, o 3 tablas, que se generan en funcion de si la Socia tiene 2 , o 3, Contactos.

Si todo esto que te comento es asi , probablemente, (cuando tenga algo de tiempo), me atreva a enredar en el Informe "Fichas31", y probar si soy capaz de añadir otro SubForm_Cuotas tal y como he hecho en el Formulario Frankestein, aunque no se si sere capaz de hacer las modificaciones necesarias para ajustar esas tablas y celdas.

Ahora mismo estoy liado preparando el contenido de un hilo que quiero abrir, con una duda que me ha surgido, he cambiado los Nombres de las Claves Secundarias en las Tablas del lado de "N" en las Relaciones, tal y como me aconsejo RMG, pero al añadir Tablas Intermedias, no soy capaz de que las Consultas me devuelvan los Datos, a ver si me puede aclarar donde estoy cometiendo el fallo, ya que por mas vueltas que le he dado no soy capaz de dar con ello.
En cuanto lo tenga preparado y abierto intentare estudiar este asunto de los Informes un poco mas a fondo, que considero que es una parte "Fundamental" a tener clara para sacarle todo el potencial a la BD.

Y creo que una de las primeras modificaciones que necesitare hacer en el codigo de la Macro es el "Referente" a la linea donde se "llama" a la Consulta de la que salen los Datos del SubForm_ContactosSocia:

Código: Seleccionar todo

 oSQLQuery = "SELECT ""NºSocia"", ""Relacion"", ""Nombre"", ""TfnoFijo"", ""TfnoMovil"", ""Horario"" FROM ""tabContactosSocia"" WHERE ""NºSocia"" = "& Socia &""                              ' Consulta de la que sacaremos los datos
donde, si no me equivoco, debo cambiar el "NºSocia" por "nºSocia", que es el nuevo nombre de la Clave Secundaria en la tabContactosSocias.
(Aunque antes he pensado que esa linea es el texto de la Consulta "editada" en SQL, pero esa Consulta no existe como tal en la BD, lo cual me hace "repensar" que esa linea de SQL la has añadido tu en el codigo y "crea" la Consuta directamente desde la Macro ¿es asi?)

Como te digo, cuando haya abierto el nuevo hilo para la duda de las Consultas con Tablas Intermedias, me pondre a experimentar en ese codigo "caotico" (JAJAJA) y a ver de lo que soy capaz, asi que no te vayas muy lejos, que seguro que tendras noticias mias(me estoy haciendo "CodigoToxicamano")

Un saludo y muchisimas gracias por dedicar tu tiempo a ayudar a los demas :super:

Boas tardes
Apache OpenOffice 4.1.5
OS X El Capitan 10.11.6
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: [RESUELTO]Atascado en como Imprimir FichasSocias

Mensaje por Longi »

Como decía Yack 'El destripador', vayamos por partes.
Yo no tengo ni idea de programar, lo único que he hecho en mi vida 'programática' ha sido copiar lo que otros han hecho, incluso copiarme a mi mismo, así que no es de extrañar que aparezcan algunas digamos.....'morcillas', sobre todo en el caso de las aclaraciones, a las que se les hace menos caso.
1-El LEFT, evidentemente tenía que poner izquierda, y no centrado.
2-La vista no me suena haberla generado yo.
3-No he hecho un informe igual a tu formulario, directamente pegué el formulario en el informe, luego varié un poco la colocación para hacer hueco para las tres tablas del final.
4-Generé el informe con el asistente de AOo pero solo dependiente de una consulta con el número de socia, con lo que sería más sencillo hacer que al escoger en el formulario una u otra variar la consulta en el código.
5- Me cargué la tabla que se generó en el informe, pero con la precaución de mantener una sección que aparece en lo que sería una segunda línea en la hoja donde se generó el informe, y que corresponde con una sección en la que se encuentran los campos ocultos del informe. Si se borra esta parte no habrá informe de ningún tipo. (Todo esto en la fase de diseño del informe)
6- El formulario que pegué en el informe queda como si fuese un formulario aparte, pues bien, lo selecciono (en el nombre del formulario) y lo arrastro hacia el formulario que tiene los controles ocultos. El resultado es que queda como un subformulario, y lo relaciono con el superior por el número de socia (el superior, filtrado por la consulta, filtrará al inferior)
7-Necesitamos para pegar las tablas extras al final, por lo que tenemos que tener en el documento de writer que es el informe una posición de texto por en la zona donde hay que pegarlas. Si activas las marcas de formato (elementos no imprimibles que normalmente no se ven, pero te indica dónde estamos. Pues bien, en un principio estamos en la parte alta del informe, así que hay que dar tantos intros como necesitemos para ponernos en la zona que necesitamos, y ya podremos poner las tablas.
8- En cuanto a la consulta para poner los datos en las tablas, en realidad es un ResultSet que es la tabla de contactos, filtrada por el nº de socia, y si, no está en el conjunto de consultas, ya que puedes hace consultas, perdón, sentencias SQL en el interior de las macros sin más problemas, y puedes recoger los resultados para lo que precises, como es el caso.
9- Ah! y todas las técnicas (excepto el 'IsAutoheight' ) están en mi cole de macros sobre informes.

Un saludo! ;)
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Longi
Mensajes: 804
Registrado: Dom Ene 20, 2013 9:05 pm
Ubicación: Ourense, Galicia, España

Re: [RESUELTO]Atascado en como Imprimir FichasSocias

Mensaje por Longi »

Aunque el efecto es el mismo, así parece un poco más ordenado:

Código: Seleccionar todo

Sub Fichas3 (oEvent)

    ocontroller = Thisdatabasedocument.currentController
    if not ocontroller.isconnected then ocontroller.connect                                        ' Mantenemos la conexión
    oForm = oEvent.Source.Model.Parent                                                             ' Formulario en el que está el evento
    Socia= oForm.getByName("NºSocia").Boundfield.getInt()                                          ' Valor que está en el campo Nº socia
    '------------------------------------------------------
    ' Cambiamos la consulta Fichas3 en función del valor "Socia" en el formulario donde está el botón
    
    oConsulta = ThisDatabaseDocument.DataSource.QueryDefinitions.getByName ("Fichas3")             ' La consulta en la que se basa el reporte	
    oConsulta.Command ="SELECT ""NºSocia"" FROM ""tabSocias"" WHERE ""NºSocia"" = "& Socia &""     ' Comandamos la consulta  
    oreportdoc = Thisdatabasedocument.reportdocuments.getbyname("Fichas3").open                    ' Abrimos el informe
    '--------------------------------------------------------
    ' Tenemos en cuenta que es un documento de texto
    
    oText = oreportdoc.getText()                                                                   ' Tomamos el control del texto del informe
    oCurs = oText.createTextCursor()                                                               ' Creamos un cursor de texto
    oCurs.goToEnd(False)                                                                           ' Lo colocamos al final del informe
    '--------------------------------------------------------------
    ' Establecemos un ResultSet del que sacaremos los datos para el subinforme y con el mismo filtro que marca el informe principal
    
    Conn = ThisDatabaseDocument.CurrentController.ActiveConnection                                 ' Generamos conexión con el origen de datos
    oStat=Conn.createStatement()                                                                   ' Creamos la sentencia
    oSQLQuery = "SELECT ""NºSocia"", ""Relacion"", ""Nombre"", ""TfnoFijo"", ""TfnoMovil"", ""Horario"" FROM ""tabContactosSocia"" WHERE ""NºSocia"" = "& Socia &"" ' Consulta de la que sacaremos los datos
    oStat.setPropertyValue("ResultSetType",1005)                                                   ' Característica sin la que esto no funciona
    oResultSet = oStat.executeQuery(oSQLQuery)                                                     ' El resultset recoge los datos de la consulta
    oResultSet.last                                                                                ' Va al último registro para contar los registros que tiene
    Filas = oResultSet.Row                                                                         ' Añade la variable con el número de registros devuelto 
    oResultSet.first                                                                               ' Mueve el cursor al primer registro
    oResultSet.previous                                                                            ' Mueve el cursor al previo
    '------------------------------------------------------
    ' Estructura de borde
    
    oBorder = CreateUnoStruct("com.sun.star.table.BorderLine")                                     ' Generamos la estructura de borde
    oBorder.Color = RGB(0, 0, 0)                                                                   ' Color que tendrá el borde
    oBorder.OuterLineWidth = 0                                                                     ' Grosor del borde
    '-----------------------------------------------
    ' Añadimos tablas al final, una más que contactos, a no ser que ya sean tres tablas (no admite más el papel
    
    If Filas >=3 Then                                                                              ' Si hay tres contactos o más
    NF=3                                                                                           ' Añadirá 3 tablas
    Else                                                                                           ' Si hay menos de 3 contactos
    NF=Filas+1                                                                                     ' Añadirá una tabla más que contactos
    End if                                                                                         ' Se acabó la condición
    
    For i=1 To NF
    oTable = oreportdoc.createInstance( "com.sun.star.text.TextTable" )                            ' Estructura de tabla                          
    oTable.initialize(6,14)                                                                        ' Ponemos una tabla con 5 filas y 14 columnas
    oCurs.getText().insertTextContent(oCurs , oTable, False)                                       ' Insertamos la tabla donde estaba el cursor
    oTable.setPropertyValue "BackTransparent", false                                               ' El fondo de la tabla no es transparente                                          
    '------------------------------------------------------
    ' Ponemos en las celdas que nos interesan los títulos de los campos
    
    oTable.getCellByPosition(0,0).setString("Contacto")                                            ' Celda que le ponemos el título
    oTable.getCellByPosition(8,0).setString("Relación")                                            ' Celda que le ponemos el título
    oTable.getCellByPosition(0,2).setString("Teléfono1")                                           ' Celda que le ponemos el título    
    oTable.getCellByPosition(4,2).setString("Teléfono2")                                           ' Celda que le ponemos el título    
    oTable.getCellByPosition(9,2).setString("Horarios")                                            ' Celda que le ponemos el título    
    '----------------------------------------------------------
    ' Trabajamos las distintas celdas 
    
    For a=0 To 13                                                                                  ' Ciclo que recorre todas las columnas
    For b=0 To 5                                                                                   ' Ciclo que recorre todas las filas
    oCell = oTable.getCellByPosition(a,b)                                                          ' Celda que ocupa la posición    
    '------------------------------------------------------
    ' Ponemos el formato de texto en todas las celdas, antes de juntarlas (el cursor es distinto del de tabla, y le ponemos nombre distinto para evitar confusiones)
    
    oTexto = oCell.Text                                                                            ' Texto en el interior de la celda
    oCursor = oTexto.createTextCursor()                                                            ' Generamos un cursor de texto
    oCursor.gotoEND(True)                                                                          ' Vamos hasta el final del texto de la celda, indicando que las acciones se aplican a todo el texto de la celda
    oCursor.CharFontName = "Segoe UI"                                                              ' Nombre de la fuente
    oCursor.CharWeight = com.sun.star.awt.FontWeight.NORMAL                                        ' Grosor normasl
    oCursor.CharHeight = 9                                                                         ' Tamaño de la letra
    oCursor.ParaAdjust = com.sun.star.style.ParagraphAdjust.LEFT                                   ' Ajustada a la izquierda
    '--------------------------------------------------
    ' Modificamos la altura de las filas
    
    oTable.rows(b).isAutoheight=False                                                              ' Quitamos el autoheight a todas las filas  
    if b= 0 or b= 2 Then                                                                           ' Si es la primera o la tercera fila
    oTable.rows(b).Height=550                                                                      ' Altura de la fila
    End if                                                                                         ' Acabamos la condición
    if b= 1 or b = 3 Then                                                                          ' Si es la segunda o la cuarta fila
    oTable.rows(b).Height=750                                                                      ' Altura de la fila
    End if                                                                                         ' Acabamos la condición
    oTable.rows(4).Height=120                                                                      ' Altura de la cuarta fila (hace de distancia entre fila tercera y quinta)
    oTable.rows(5).Height=50                                                                       ' Altura de la quinta fila (hace de línea negra)
    oTable.rows(5).BackColor = RGB(0,0,0)                                                          ' Color de la fila (línea negra)
    '-----------------------------------------------------------
    ' Eliminamos bordes, falso, simplemente los ponemos de grosor invisible allí donde nos interesa
    
    if b=1 and (a= 6 or a= 7) Then                                                                 ' En la segunda fila, columnas séptima y octava
    oCell.RightBorder = oBorder                                                                    ' Borde derecho
    oCell.TopBorder = oBorder                                                                      ' Borde superior
    oCell.BottomBorder = oBorder                                                                   ' Borde superior
    oCell.leftBorder = oBorder                                                                     ' Borde izquierdo
    End if                                                                                         ' Acabamos la condición

    if b=0 or b=2 or b=4 Then                                                                      ' Línea primera, tercera y quinta
    oCell.RightBorder = oBorder                                                                    ' Borde derecho
    oCell.TopBorder = oBorder                                                                      ' Borde superior
    oCell.leftBorder = oBorder                                                                     ' Borde izquierdo
   
      if b=0 and (a= 6 or a= 7) Then                                                               ' fila primera, columna séptima u octaa
      oCell.BottomBorder = oBorder                                                                 ' Borde superior
      End if                                                                                       ' Acabamos la condición
    End if                                                                                         ' Acabamos la condición

    if (b=2 or b=3 )and  (a=2  or a=3 or a=7 or a=8 ) Then                                         ' Fila tercera o cuarta, columna tercera, cuarta, octava o novena
    oCell.RightBorder = oBorder                                                                    ' Borde derecho
    oCell.TopBorder = oBorder                                                                      ' Borde superior
    oCell.BottomBorder = oBorder                                                                   ' Borde superior
    oCell.leftBorder = oBorder                                                                     ' Borde izquierdo
    End if                                                                                         ' Acabamos la condición

    Next b                                                                                         ' Acabamos el ciclo de columnas
    Next a                                                                                         ' Acabamos el ciclo de filas
    Next i                                                                                         ' Vamos a poner la siguiente tabla
    '-------------------------------------------------------------
    ' Ponemos el resultado del ResultSet

    i=-1                                                                                           ' iniciamos el contador en -1
    While oResultSet.next                                                                          ' Hacemos avanzar en el ResultSet
    i=i+1                                                                                          ' Añadimos una unidad al contador
    oTable = oreportdoc.Texttables(i)                                                              ' La tabla que toca en cada paso del ciclo
    oTable.getCellByPosition(0,1).setString(oResultset.getString(3))                               ' Valor en la celda que corresponde
    oTable.getCellByPosition(8,1).setString(oResultset.getString(2))                               ' Valor en la celda que corresponde               
    oTable.getCellByPosition(0,3).setString(oResultset.getString(4))                               ' Valor en la celda que corresponde                
    oTable.getCellByPosition(4,3).setString(oResultset.getString(5))                               ' Valor en la celda que corresponde                
    oTable.getCellByPosition(9,3).setString(oResultset.getString(6))                               ' Valor en la celda que corresponde                
    Wend                                                                                           ' Vamos a la siguiente fila del ResultSet
    '---------------------------------------------------------
    ' Unimos celdas, dando el aspecto de campos

    NTexttable = oreportdoc.Texttables().GetCount()                                                ' Número de tablas 
    for i=0 to  NTexttable-1                                                                       ' Recorremos todas las tablas
    oTable = oreportdoc.Texttables(i)                                                              ' Tabla que toca en este momento
    For g=1 to 4                                                                                   ' Ciclo de cuatro elementos
    oCurs = oTable.createCursorByCellName("A"& g)                                                  ' El nombre de la celda, que variará con el valor de "g"                                                    ' Creamos un cursor de tabla en la celda 

    if g=1 or g=2 Then                                                                             ' En la fila 1 o en la fila 2
    oCurs.goRight(5, True)                                                                         ' Avanzamos el cursor 5 celda a la derecha
    oCurs.mergeRange()                                                                             ' Mezclamos el rango
    oCurs.goRight(3,False)                                                                         ' Avanzamos el cursor 3 celdas a la derecha
    oCurs.goRight(5, True)                                                                         ' Avanzamos el cursor 5 celda a la derecha
    oCurs.mergeRange()                                                                             ' Mezclamos el rango
    End if                                                                                         ' Acabamos la condición

    if g=3 or g=4 Then                                                                             ' En la fila 3 y en la 4
    oCurs.goRight(1, True)                                                                         ' Avanzamos el cursor 1 celda a la derecha    
    oCurs.mergeRange()                                                                             ' Mezclamos el rango
    oCurs.goRight(3, False)                                                                        ' Avanzamos el cursor 3 celda a la derecha        
    oCurs.goRight(2, True)                                                                         ' Avanzamos el cursor 2 celda a la derecha       
    oCurs.mergeRange()                                                                             ' Mezclamos el rango
    oCurs.goRight(3, False)                                                                        ' Avanzamos el cursor 3 celda a la derecha            
    oCurs.goRight(4, True)                                                                         ' Avanzamos el cursor 4 celda a la derecha       
    oCurs.mergeRange()                                                                             ' Mezclamos el rango
    End if                                                                                         ' Acabamos la condición
    Next g                                                                                         ' Avanzamos a la siguiente fila
    next                                                                                           ' Avanzamos a la siguiente tabla

End sub
Ah! y le añadí una separación entre el registro y la línea negra que hace de separación.

Otro saludo! ;)
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
antonsiete
Mensajes: 87
Registrado: Dom Jun 24, 2018 8:48 pm

Re: [RESUELTO]Atascado en como Imprimir FichasSocias

Mensaje por antonsiete »

Hola Longi,

Recibido, leido y guardado, queda pendiente intentar trastear yo con él.

Un saludo
Apache OpenOffice 4.1.5
OS X El Capitan 10.11.6
Responder