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)
-   -   Update con dos tablas (https://www.clubdelphi.com/foros/showthread.php?t=84648)

NISOTO 17-11-2013 19:43:54

Update con dos tablas
 
Hola a todos,

Tengo en un DbGrid con la tabla “Salones” y necesito actualizar la tabla “Calificaciones” con los campos de la tabla “salones” con la condición de que el Id_salón = Id_salón_cal.
Esto lo hago seleccionando un salón del DbGrid y pulsando un Botón que se llama cargar.
Estoy trabajado en Delphi 2007 y Firebird 2.5

Salones

Id_salon (*)
Materia
Area
Docente
IHS

Calificaciones

Id_Salón_cal (*)
Materia_cal
Area_cal
Docente_cal
IHS_cal

El problema es que tengo por el momento un código pero no me está funcionando, por favor si no es mucha molestia y me dan un poco la mano, yo sé un poco de tablas planas pero estoy empezando en SQL.

Código Delphi [-]
procedure TFormCarga.btn1Click(Sender: TObject);
  begin
    DMCarga.ibqry_Calificacion.Close;
    DMCarga.ibqry_Calificacion.Sql.Clear;
    DMCarga.ibqry_Calificacion.Sql.Add('UPDATE calificacion');
    DMCarga.ibqry_Calificacion.Sql.Add('SET = (SELECT materia FROM salones WHERE    
     materia = materia_cal)');
    DMCarga.ibqry_Calificacion.Sql.Add('WHERE id_salon = id_salon_cal');
    DMCarga.ibqry_Calificacion.Open;
  end;

Y por favor me pueden responder si es mejor trabajar con TIBDataSet o TIBQuery.

jafera 18-11-2013 17:43:36

Hola.

Has puesto UPDATE CALIFICACION SET = (SELECT...)

Despues del SET debes poner el campo a actualizar.

Por ejemplo UPDATE CALIFICACION SET NOTA =(SELECT..... WHERE.....)

Código Delphi [-]
procedure TFormCarga.btn1Click(Sender: TObject);
  begin
    DMCarga.ibqry_Calificacion.Close;
    DMCarga.ibqry_Calificacion.Sql.Clear;
    DMCarga.ibqry_Calificacion.Sql.Add('UPDATE calificacion');
    DMCarga.ibqry_Calificacion.Sql.Add('SET MATERIA_CAL=(SELECT materia FROM salones WHERE materia = materia_cal)');
    DMCarga.ibqry_Calificacion.Sql.Add('WHERE (NO puede haber dos where, tienes que poner AND) AND id_salon = id_salon_cal');
    DMCarga.ibqry_Calificacion.Open;
  end;

Saludos

Josep

NISOTO 18-11-2013 18:37:08

Ok gracias

funciono de maravillas.

jafera 18-11-2013 18:44:36

De nada, para esto estamos

Hoy respondo (si lo se), mañana pregunto (si no lo se)

Saludos

Josep


La franja horaria es GMT +2. Ahora son las 21:14:51.

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