Ver la Versión Completa : Actualizar datos entre tablas
AnuardMichelen
23-02-2012, 21:24:58
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
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
Código SQL [-] (http://www.clubdelphi.com/foros/#)
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
[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:
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:
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:
UPDATE TABLA SET ID = CAST(CVE_ART AS INTEGER)
Prueba realizada desde Delphi con TIBQuery:
...
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
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
Hombre, parece claro que donde dice
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:
( Suponiendo que ID_SERVICIO sea de tipo entero y CODIGO no tenga caracteres alfabéticos :rolleyes: )
Un saludo. :)
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.