[RESUELTO] Error al hacer un UPDATE con MySQL

Discute sobre las herramientas de la base de datos

[RESUELTO] Error al hacer un UPDATE con MySQL

Notapor pmartimor » Mar Feb 19, 2019 1:14 pm

Estoy trabajando con OpenOffice 4.1.5 contra una base de datos MySQL

Al intentar modificar una tabla me da error...

Código: Seleccionar todo   Expandir vistaContraer vista
Sub AtendidosEntreFechas (Evento)

    Dim BotonLabel As String
   Dim oConsulta As Object
   Dim sSQL As String
   Dim oForm as Object
   Dim Fecha_Inicio As String
   Dim Fecha_Fin As String
   Dim oStat As Object
   Dim oRes As Object
   oForm = Evento.Source.Model.Parent
   Fecha_Inicio = oForm.ctFechaInicio.Text
   Fecha_Fin = oForm.ctFechaFin.Text

'Comprobar formato fechas
If IsDate(Fecha_Inicio)=False OR IsDate(Fecha_Fin)=False OR Fecha_Inicio="" OR Fecha_Fin="" OR Format(Fecha_Inicio,"YYYY-MM-DD")>Format(Fecha_Fin,"YYYY-MM-DD") Then
    msgbox ("Fecha de Inicio o Fin inválida")
    Exit Sub
End If

' Damos valor NULL a fadesde en la tabla datosninos
   sSQL = "UPDATE datosninos SET fadesde = NULL WHERE IDNINOS > 0"
   oStat=ThisDatabaseDocument.CurrentController.ActiveConnection.CreateStatement()
   oRes=oStat.executeUpdate(sSQL)

....................


Da error : El objeto no está disponible. Uso no válido de un objeto. --> en la líne oRes=oStat.executeUpdate(sSQL)

Saludos y gracias por vuestar paciencia.
Última edición por pmartimor el Lun Feb 25, 2019 7:13 pm, editado 2 veces en total
OpenOffice 4.1.5 en clientes Windows 10, 7, XP sobre BD MySql. Servidor de datos Linux Red Hat. Samba 4.
pmartimor
 
Mensajes: 62
Registrado: Jue Mar 08, 2018 2:11 pm

Re: Error al hacer un UPDATE

Notapor RMG » Mar Feb 19, 2019 4:42 pm

Hola,

Prueba cambiando a esto.

sSQL = "UPDATE ""datosninos"" SET ""fadesde"" IS NULL WHERE ""IDNINOS"" > 0"

Saludos
OpenOffice 4.1.5 y LibreOffice 5.4.5.1 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
RMG
 
Mensajes: 3451
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Error al hacer un UPDATE

Notapor pmartimor » Mar Feb 19, 2019 7:30 pm

RMG escribió:Hola,

Prueba cambiando a esto.

sSQL = "UPDATE ""datosninos"" SET ""fadesde"" IS NULL WHERE ""IDNINOS"" > 0"

Saludos


Con esta solución me lanza el siguiente error. No lo entiendo porque sí funciona cuando la base de datos (con la misma estructura) es la que usa OpenOffice (HSQL), pero cuando ataca a la misma base de datos en MySQL empiezan los problemas de sintaxis...
Adjuntos
error update02.jpg
error update02.jpg (9.58 KiB) Visto 770 veces
OpenOffice 4.1.5 en clientes Windows 10, 7, XP sobre BD MySql. Servidor de datos Linux Red Hat. Samba 4.
pmartimor
 
Mensajes: 62
Registrado: Jue Mar 08, 2018 2:11 pm

Re: Error al hacer un UPDATE

Notapor mauricio » Mar Feb 19, 2019 8:26 pm

Es normal, son motores de bases de datos diferentes, debes de usar la sintaxis "correcta" especifica para uno de ellos.
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
AOO 4.1 | LibO 6.1.5 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5752
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: México, D.F.

Re: Error al hacer un UPDATE

Notapor pmartimor » Lun Feb 25, 2019 7:07 pm

mauricio escribió:Es normal, son motores de bases de datos diferentes, debes de usar la sintaxis "correcta" especifica para uno de ellos.


Efectivamente, cuando trabajamos con MySQL, hay que tener en cuenta la sintaxis que permite cada versión de MySQL.
Pongo un par de ejemplos de UPDATE con el siguiente código que funciona.
Yo lo he probado con las versiones 4.1.25 y 5.5.42 de MySQL y OpenOffice 4.1.5 y LibreOffice 5.4.7.2,
Java 1.8.0_201 y conector myysql-connector-java-5.1.46

Código: Seleccionar todo   Expandir vistaContraer vista
   Dim sSQL As String
   Dim oForm As Object
   Dim Fecha_Inicio As String
   Dim Fecha_Fin As String
   Dim conn As Object
   Dim stmt AS Object

   oForm = Evento.Source.Model.Parent
   Fecha_Inicio = oForm.ctFechaInicio.Text
   Fecha_Fin = oForm.ctFechaFin.Text
   inicio = Format(Fecha_Inicio,"YYYY-MM-DD")
   fin = Format(Fecha_Fin,"YYYY-MM-DD")

' Damos valor NULL a fadesde y fahasta en la tabla datos
    sSQL = "UPDATE datos SET fadesde = null, fahasta = null"
    conn = ThisDatabaseDocument.CurrentController.ActiveConnection
    stmt = conn.createStatement()
    stmt.executeUpdate(sSQL)
    stmt.close()

' Si FECHA_ALTA y FECHA_BAJA son menores que Inicio --> FADESDE = NULL y FAHASTA = NULL
    sSQL = "UPDATE datos SET FADESDE = NULL, FAHASTA = NULL WHERE FECHA_BAJA IS NOT NULL AND FECHA_ALTA < '" & inicio & "' AND FECHA_BAJA < '" & inicio & "'"   
    conn = ThisDatabaseDocument.CurrentController.ActiveConnection
    stmt = conn.createStatement()
    stmt.executeUpdate(sSQL)   
    stmt.Close()


Muchas gracias por vuestros consejos. Sin este foro estaríamos perdidos los que empezamos.
OpenOffice 4.1.5 en clientes Windows 10, 7, XP sobre BD MySql. Servidor de datos Linux Red Hat. Samba 4.
pmartimor
 
Mensajes: 62
Registrado: Jue Mar 08, 2018 2:11 pm


Volver a Base

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 10 invitados