[RESUELTO] Error al hacer un UPDATE con MySQL

Discute sobre las herramientas de la base de datos
Responder
pmartimor
Mensajes: 63
Registrado: Jue Mar 08, 2018 2:11 pm

[RESUELTO] Error al hacer un UPDATE con MySQL

Mensaje por pmartimor »

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

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.
LibreOffice 5.1.0.3 en clientes Windows 10, 7, XP sobre BD MySql.
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Error al hacer un UPDATE

Mensaje por RMG »

Hola,

Prueba cambiando a esto.

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

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)
pmartimor
Mensajes: 63
Registrado: Jue Mar 08, 2018 2:11 pm

Re: Error al hacer un UPDATE

Mensaje por pmartimor »

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 3715 veces
LibreOffice 5.1.0.3 en clientes Windows 10, 7, XP sobre BD MySql.
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Error al hacer un UPDATE

Mensaje por mauricio »

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
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
pmartimor
Mensajes: 63
Registrado: Jue Mar 08, 2018 2:11 pm

Re: Error al hacer un UPDATE

Mensaje por pmartimor »

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

	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.
LibreOffice 5.1.0.3 en clientes Windows 10, 7, XP sobre BD MySql.
Responder