gambafeliz   20-04-2022, 11:36
#1
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:
Código:
' Ejemplo de como lo hacia
Dim sSQL AS String = "UPDATE miTabla SET Valor=" & sValor & " WHERE miTabla.ID=" & lblID.Text & ";"      '(Debe dar error)

gConn.Exec(sSQL)


' Mi solución
Dim sSQL AS String = "UPDATE miTabla SET Valor=" & sValor & " WHERE miTabla.ID=" & lblID.Text & ";"      '(Debe dar error)

gConn.Begin()
         gConn.Exec(sSQL)
gConn.Commit()

Catch
        gConn.Rollback()
Última modificación: 20-04-2022, 14:18 por gambafeliz.
guizans   13-05-2022, 12:55
#2
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.
gambafeliz   14-05-2022, 19:13
#3
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.
  
Usuarios navegando en este tema: 2 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.