Comunidad Gambas-es
[SOLUCIONADO] Update en dos tablas a todo o nada en Gambas - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forumdisplay.php?fid=3)
+--- Foro: Bases de Datos (https://gambas-es.org/forumdisplay.php?fid=6)
+--- Tema: [SOLUCIONADO] Update en dos tablas a todo o nada en Gambas (/showthread.php?tid=877)



Update en dos tablas a todo o nada en Gambas - gambafeliz - 20-04-2022

Hola

Necesito actualizar dos tablas donde ambas tienen que ser datos válidos para actualizar o de lo contrario debe no existir la actualización.

¿Como se hace en Gambas y SQLite3 como DataBase?

Gracias.

Nota: Yo hasta ahora siempre uso:
GAMBAS
  1. ' Ejemplo de como lo hacia
  2. Dim sSQL AS String = "UPDATE miTabla SET Valor=" & sValor & " WHERE miTabla.ID=" & lblID.Text & ";" '(Debe dar error)
  3.  
  4. gConn.Exec(sSQL)
  5.  
  6.  
  7. ' Mi solución
  8. Dim sSQL AS String = "UPDATE miTabla SET Valor=" & sValor & " WHERE miTabla.ID=" & lblID.Text & ";" '(Debe dar error)
  9.  
  10. gConn.Begin()
  11. gConn.Exec(sSQL)
  12. gConn.Commit()
  13.  
  14. gConn.Rollback()





RE: Update en dos tablas a todo o nada en Gambas - guizans - 13-05-2022

Hola.

 No soy un experto, pero lo que haría sería validar los datos antes de actualizar la base de datos, es decir, que los datos que voy a volcar sean correctos y estén dentro de lo que se necesita. De esta forma es mucho mejor de controlar los posibles errores humanos, ya que darías información precisa del dato que es incorrecto, de la otra forma te encontrarás un error muy genérico que no sabrás a que es debido. Por poner un ejemplo chorra. Si pides la edad del usuario, comprobar que no sea un número negativo o que no sea un valor demasiado elevado, por ejemplo 100.

Un saludo.


RE: Update en dos tablas a todo o nada en Gambas - gambafeliz - 14-05-2022

Tanto guizans como Shordi tenéis toda la razón, pero y digo además que antes de cargar un Insert o un Update e incluso hacer Delete contra la base de datos, en fin, todo programador con algo de experiencia, "valida" los datos en una subrutina antes y eso ya lo hago yo, aunque parezca que no lo hago en ese código, ojo, sValor que he puesto, señores, esta validado, po, Dios.

Sinceramente el todo o nada es para caso extremos donde quieres que todo todo el código funcione e incluso previene cualquier excepción o falla del programador, por lo que gracias a Begin, Commit y Rollback se salva incluso podemos decir los muebles.

Pero gracias y buen apunte para cualquiera que se le haya pasado. Saludos.