Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Actualizar datos entre tablas (https://www.clubdelphi.com/foros/showthread.php?t=77749)

AnuardMichelen 23-02-2012 21:24:58

Actualizar datos entre tablas
 
Hola amigos, espero que se encuentren bien

Mi base de datos esta en interbase, y el trabajo que necesito hacer es, actualizar unos códigos.

Tengo una tabla llamada SERVICIOS alli tengo un campo llamado ID_SERVICIOS y otro llamado CODIGO. Entonces quiero actualizar el campo ID_SERVICIO y ponerle los datos que tiene el campo CODIGO, esto lo quiero hacer en todas las tablas que se encuentre ID_SERVICIO y ponerle los datos que estan en CODIGO.


Muchas gracias por su ayuda que siempre me es de ayuda.

Dios les bendiga!!!

kapcomx 23-02-2012 21:39:35

actualizar
 
se me ocurre que puedes utilizar untrigger en tu tabla servicios.
un trigger en el after update de tu tabla que haga un update en las tablas que contengan id_servicio.:cool:

kapcomx 23-02-2012 21:45:44

algo mas o menos asi
 
Código SQL [-]


AS
begin
/* Trigger text */
if (new.codigo <> old.codigo) then
update tutabla
set idservicio = new.codigo;

end

AnuardMichelen 23-02-2012 22:13:55

Muchas gracias amigo....pero como seria le codigo del trigger.

Datos

Tabla: SERVICIOS
Campo: ID_SERVICIO
Campo: CODIGO

ecfisa 23-02-2012 22:32:56

Cita:

Empezado por AnuardMichelen (Mensaje 425936)
[b]Tengo una tabla llamada SERVICIOS alli tengo un campo llamado ID_SERVICIOS y otro llamado CODIGO. Entonces quiero actualizar el campo ID_SERVICIO y ponerle los datos que tiene el campo CODIGO...

Hola Anuard.

Si no te entendí mal, para actualizar el campo ID_SERVICIO con los valores del campo CODIGO, basta con hacer:
Código SQL [-]
UPDATE SERVICIO 
SET ID_SERVICIO = CODIGO

Saludos.

AnuardMichelen 23-02-2012 22:39:31

Gracias lo hice pero me genero este error



Overflow occurred during data type conversion.
conversion error from string "D0120".
conversion error from string "D0120".

ecfisa 23-02-2012 22:48:29

Hola.

Desconocía el tipo del campo CODIGO.

Entonces probá de este modo:
Código SQL [-]
UPDATE SERVICIO 
SET ID_SERVICIO = CAST(CODIGO AS INTEGER)
( Suponiendo que ID_SERVICIO sea de tipo entero y CODIGO no tenga caracteres alfabéticos :rolleyes: )

Saludos.

AnuardMichelen 23-02-2012 22:57:52

Lo mismo me da este error

Overflow occurred during data type conversion.
conversion error from string "D0120".

AnuardMichelen 23-02-2012 22:59:16

id_servicio es INTEGER

codigo es VARCHAR

ecfisa 23-02-2012 23:18:47

Hola.

Es realmente muy extraño, siendo:
  • ID: INTEGER
  • CVE_ART: VARCHAR(6)
Prueba realizada en IBExpert:
Código SQL [-]
UPDATE TABLA SET ID = CAST(CVE_ART AS INTEGER)

Prueba realizada desde Delphi con TIBQuery:
Código Delphi [-]
...
  with IBQuery1 do
  begin
    Close;
    SQL.Text:= 'UPDATE TABLA SET ID = CAST(CVE_ART AS INTEGER)';
    ExecSQL;
    Close;
  end;
...
En ambos casos funciona correctamente... Quizá debas aportarnos más información, como que tipo de componentes estás usando, etc.

Saludos.

ElKurgan 24-02-2012 07:22:21

Hombre, parece claro que donde dice

Código SQL [-]
conversion error from string "D0120".

está intentando convertir a un entero una cadena que empieza por "D"...

Saludos

ecfisa 24-02-2012 17:51:24

Cita:

Empezado por ElKurgan (Mensaje 425978)
Hombre, parece claro que donde dice

Código SQL [-]
conversion error from string "D0120".

está intentando convertir a un entero una cadena que empieza por "D"...

Saludos

Totalmente correcto ;), yo no había prestado atención a ese detalle... aunque en el mensaje #4 se lo había advertido:
Cita:

( Suponiendo que ID_SERVICIO sea de tipo entero y CODIGO no tenga caracteres alfabéticos :rolleyes: )
Un saludo. :)


La franja horaria es GMT +2. Ahora son las 05:13: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