PDA

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. :)