Editado: |
Editado: |
Como antiguo contable y usuario de ACCESS sabía cómo hacerlo en una aplicación para administrar una base de datos.
En un primer intento, intenté hacer esto en el BASE, pero como, en aquel momento no tenía los conocimientos necesarios, acabé por renunciar y hacer en el CALC (que, al menos para mí, es la aplicación más lograda del Openoffice).
Como lo que pretendía, saber en cada mes y cada año, cuánto gastaba en una determinada rúbrica (gastos de alimentación, por ejemplo) exigía varias hojas de cálculo con varias conexiones, etc, nunca desistió y, a costa de mucha investigación, un proyecto en el Base que me permite saber, en cada momento, lo que pretendo, como se puede ver aquí.
http://aversenosentendemos.blogspot.pt/ ... idade.html
Sucede que, pasado poco más de un año pasado y con sólo unos cuantos miles de registros, estoy más o menos como se menciona aquí:
https://scottishsceptic.co.uk/2017/12/0 ... lled-base/
Es decir, las pérdidas de registros se suceden, días de trabajo resultan improductivos, resolví, para dar otra oportunidad al Base, intentar otra oportunidad a BASE ya mí mismo e intentar el método, referido aquí:
https://forum.openoffice.org/en/forum/v ... 13&t=54182
1. Instalé el servidor
2. He creado la base de datos
3. En BASE he configurado la conexión MySQL
4. Importe las tablas, las consultas, los reportes no conseguí (tal vez por ser creados con Oracle Report Builder), los módulos tampoco los construí y luego copié los códigos
correspondientes)
Resultado:
Las tablas están allí con los respectivos registros
Los formularios funcionan perfectamente
Las consultas también funcionan (querys de select)
Los informes consistentes a mano también
Pero los códigos antiguos, que funcionaban perfectamente en la base, simplemente no funcionan
Pero este código, que además de las inserciones es la base de construcción de toda la información proporcionada por la aplicación, y sin la cual el proyecto es perfectamente inútil para mí, no funciona!
Éste es el código:
Código: Seleccionar todo
Sub Contabiliza()
Dim DatabaseContext As Object
Dim DataSource As Object
Dim Connection As Object
Dim Statement As Object
Dim ResultSet As Object
Dim oBarraEstado As Object
Dim co1 As Integer
'Inicia o processo de contabilização
'Msgbox "A iniciar o processo de Contabilização"
'Referencia a barra de estado do documento activo
oBarraEstado = ThisComponent.getCurrentController.StatusIndicator
'Estabelece o texto inicial e o limite da barra de progresso
oBarraEstado.start( "Processo de Contabilização a decorrer.Aguarde...", 3 )
'Limpa todos os movimentos contabilisticos
'Primeiro Processo
'Esta Conexão só funciona em Bases de Dados Registadas
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("contabilidade")
Connection = DataSource.GetConnection("","")
'Connection=thisdatabasedocument.CurrentController.activeconnection Com o meu AutoExec dá erro nesta linha por isso necessário registar base de dados
Statement = Connection.createStatement()
ResultSet = Statement.executeQuery("DELETE FROM ""tMOVIMENTOS_CONTA"";")
'Estabelece o valor da barro de progresso
oBarraEstado.setValue( 1 )
'E o texto
oBarraEstado.setText ("Limpou os Dados Contabilísticos")
'Espera um segundo
Wait 1000
'Contabiliza os movimentos a Débito
'Segundo Processo
'Esta Conexão só funciona em Bases de Dados Registadas
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("contabilidade")
Connection = DataSource.GetConnection("","")
'Connection=thisdatabasedocument.CurrentController.activeconnection
Statement = Connection.createStatement()
ResultSet = Statement.executeQuery("INSERT INTO ""tMOVIMENTOS_CONTA""(""ID_MOV"",""COD_CONTA"",""DATA_MOV"",""DESC_MOV"",""DEBITO"",""CREDITO"")SELECT ""ID_MOV"",""CONTA_DEB"" AS ""COD_CONTA"",""DATA_MOV"",""DESC_MOV"",""VALOR"" as ""DEBITO"",0 AS ""CREDITO"" FROM ""tMOVIMENTOS"";")
'Estabelece o valor da barro de progresso
oBarraEstado.setValue( 2 )
' E o texto
oBarraEstado.setText ("Inseriu os valores a Débito")
'Espera um segundo
Wait 1000
'Contabiliza os movimentos a Crédito
'Terceiro Processo
'Esta Conexão só funciona em Bases de Dados Registadas
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("contabilidade")
Connection = DataSource.GetConnection("","")
'Connection=thisdatabasedocument.CurrentController.activeconnection
Statement = Connection.createStatement()
ResultSet = Statement.executeQuery("INSERT INTO ""tMOVIMENTOS_CONTA""(""ID_MOV"",""COD_CONTA"",""DATA_MOV"",""DESC_MOV"",""DEBITO"",""CREDITO"")SELECT ""ID_MOV"",""CONTA_CRED"" AS ""COD_CONTA"",""DATA_MOV"",""DESC_MOV"",0 as ""DEBITO"",""VALOR"" AS ""CREDITO"" FROM ""tMOVIMENTOS"";")
'Estabelece o valor da barro de progresso
oBarraEstado.setValue( 3 )
' E o texto
oBarraEstado.setText ("Inseriu os valores a Crédito")
'Espera um segundo
Wait 1000
'Finaliza a barra de progresso para devolver o controlo ao utilizador
oBarraEstado.end()
Msgbox "Processo de Contabilização concluído"
End Sub
Quiero declarar tres cosas más:
1. No soy alguien que camina aquí en busca de soporte técnico, sólo alguien con un perfil de usuario avanzado que use lo que sabe y logra obtener para uso propio y, por norma, hasta comparte lo que sabe con quien pretender ayuda, como por otra parte se puede ver aquí (http://aversenosentendemos.blogspot.com/)
2. Los que me han ayudado hasta hoy, tanto aquí en este lugar como en otros, saben que estoy profundamente agradecido a todos los que me han ayudado
3. No poder resolver este problema de pie puede, sencillamente, llevarme, a mi gusto, por definidamente de parte la Base y, por eso, llamamiento hasta los que están detrás de su desarrollo, resuelvan de vez en cuando estos problemas que se han mantenido actualizados para la actualización
Mis votos de una Feliz Navidad y un buen año de 2018 para todos.
"PS": Resolví editar el post porque me parece que ahora está más de acuerdo con lo pretendido