Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-02-2019
ASEP ASEP is offline
Baneado
 
Registrado: dic 2018
Posts: 12
Poder: 0
ASEP Va por buen camino
Update condicional en FIREBIRD 2.5

Buenas estoy trabajando con Firebird 2.5 y necesito hacer un update condicional a una tabla, quiero modificar algunos campos de la tabla siempre y cuando el usuario haya metido algún dato en el formulario para ese campo,,, Me Explico
Por Ejemplo, imaginaros que tengo una tabla con los siguientes campos DNI, NOMBRE, APELLIDOS, DIRECCION, mediante un formulario pido dichos campos de un DNI en concreto, si me ponen la DIRECCION en el formulario la modifico en la tabla según el DNI pero si la dejan en blanco no la modifico, la dejo con el valor que tuviera.
Esto lo hago de la siguiente manera en un procedure
Update tabla set
DIRECCION = :direccion Where ( :dirección <> ‘’ ) AND ( DNI = :dni ) ;
Update tabla set
NONBRE = :nombre Where ( :nombre <> ‘’ ) AND ( DNI = :dni ) ;
Update tabla set
APELLIDOS = :apellidos Where ( :apellidos <> ‘’ ) AND ( DNI = :dni ) ;
……….

Esto me resuelve el tema pero mi pregunta es…
Habría otra manera más elegante de hacerlo.?????????
Existe alguna manera de decirle a Update que update si el campo contiene datos y si no que no haga nada en ese campo?????


Gracias por adelantado.
Responder Con Cita
  #2  
Antiguo 22-02-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Es que si tienes los datos en un formulario y no quieres que dejen campos vacíos, deberías controlarlos/verificarlos antes de guardarlos, algo así como:
Código Delphi [-]
if edNombre.Text="" then showmessage('Escriba un nombre')
else if edTelefono.Text="" then showmessage('Escriba un teléfono');
...
Después ya puede guardar todo.
Código SQL [-]
update tbClientes set nombre=:nombre, telefono=:telefono where dni=:dni
Responder Con Cita
  #3  
Antiguo 22-02-2019
ASEP ASEP is offline
Baneado
 
Registrado: dic 2018
Posts: 12
Poder: 0
ASEP Va por buen camino
Muchas Gracias Casimiro, pero si quiero que puedan dejar los campos vacíos, dejaran los campos vacíos aquellos que no se quieran modificar.....

si por ejemplo se quiere modificar la dirección de un registro no pondrán nada en nombre ni apellidos solo la dirección que quieran modificar.
Responder Con Cita
  #4  
Antiguo 22-02-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cuando se muestra un formulario, por ejemplo la ficha de un cliente, se muestran todos sus datos.
Luego el usuario editará alguno, todos o ninguno, pero los datos están ahí.
Me resulta extraño eso de "dejar vacio" lo que no se quiera editar. Si no se quiere editar, simplemente, no se tocan, se dejan como están.
Saludos.
Responder Con Cita
  #5  
Antiguo 22-02-2019
ASEP ASEP is offline
Baneado
 
Registrado: dic 2018
Posts: 12
Poder: 0
ASEP Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Cuando se muestra un formulario, por ejemplo la ficha de un cliente, se muestran todos sus datos.
Luego el usuario editará alguno, todos o ninguno, pero los datos están ahí.
Me resulta extraño eso de "dejar vacio" lo que no se quiera editar. Si no se quiere editar, simplemente, no se tocan, se dejan como están.
Saludos.
Entiendo tus dudas: pero en el formulario no se muestran los datos del cliente por que es una BBDD externa en la que no están, se muestran los campos vacíos y el usuario tiene que poner que campos quiere modificar, cuando termina lo mando a un procedure en firebird y allí lo trabajo,,,,, tiene que ser así , ese es el problema.
Responder Con Cita
  #6  
Antiguo 22-02-2019
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 910
Poder: 22
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Prueba está opción...

Código SQL [-]
 update tablet Tu_tabla
Set DIRECCION = IIF(:dirección <> ‘’,:dirección, direccion ) 
       NONBRE = IIF(:nombre <> ‘’ , :nombre, nombre),
       APELLIDOS = IIF( :apellidos <> ‘’ , :apellido, apellido) where (DNI = :dni ) ;
Saludos cordiales
Responder Con Cita
  #7  
Antiguo 23-02-2019
ASEP ASEP is offline
Baneado
 
Registrado: dic 2018
Posts: 12
Poder: 0
ASEP Va por buen camino
Cita:
Empezado por cloayza Ver Mensaje
Prueba está opción...

Código SQL [-]
 update tablet Tu_tabla
Set DIRECCION = IIF(:dirección <> ‘’,:dirección, direccion ) 
       NONBRE = IIF(:nombre <> ‘’ , :nombre, nombre),
       APELLIDOS = IIF( :apellidos <> ‘’ , :apellido, apellido) where (DNI = :dni ) ;
Saludos cordiales
Muchas Gracias cloayza, pero si están en blanco no quiero meterle nada, con tu opción que es muy valida tendría que ver primero el dato que tienen los campos y si el dato viene vació meterle en la modificación el campo que tenía,,,,

muchas gracias....


perdona lo he probado y va genial sin tener que mirar que dato tiene antes ,,,,, gracias es lo que buscaba.....
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problemas con Firebird y UPDATE mcsebas Conexión con bases de datos 12 01-02-2018 09:56:10
Update Con Firebird Enrique Ccz Conexión con bases de datos 8 05-07-2017 14:56:59
Update De Una Vista Firebird KOVNEO Firebird e Interbase 3 15-03-2016 19:13:40
Error al ejecutar la sentencia update en firebird Maribel09 Firebird e Interbase 5 28-08-2015 18:40:05
Firebird 2.5 Update Abel Garcia Firebird e Interbase 13 10-05-2011 13:05:06


La franja horaria es GMT +2. Ahora son las 18:43:43.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi