Ver Mensaje Individual
  #2  
Antiguo 02-10-2007
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Veo algunas cosas que no parecen estar bien:
Código Delphi [-]
   try
      frm_DataModule.trans_Commit.StartTransaction;
      frm_DataModule.qry_Alum_Calificacion.Close;
      frm_DataModule.qry_Alum_Calificacion.SQL.Clear;
      frm_DataModule.qry_Alum_Calificacion.SQL.Add('UPDATE CALIFICACION set CALIFICACION.M01 ='+QuotedStr(Edit2.Text)+', CALIFICACION.ID_MATERIA1 = '+'No Esta Cursando'+'');
      frm_DataModule.qry_Alum_Calificacion.SQL.Add('WHERE CALIFICACION.MATRICULA ='+QuotedStr(Label2.Caption)+'');
{qué es esta linea?}
      frm_DataModule.qry_Alum_Calificacion.SQL.Text;
      frm_DataModule.qry_Alum_Calificacion.ExecSQL;
      frm_DataModule.trans_Commit.Commit;
   Except
{Aqui pon algo para saber si hizo el rollback}
      hay_error := True; {por ejemplo}
      frm_DataModule.trans_Commit.Rollback;
   end;

- La linea "frm_DataModule.qry_Alum_Calificacion.SQL.Text;" creo que no sirve para nada. Quizás asi sola de un error y entre directamente al Except y haga el Rollback.
- Pones un par de cadenas vacías al final de cada Add(....+''). Esto no sirve para nada.
- Qué tipo de campo son M01, ID_MATERIA1 y MATRICULA ?

- El SQL qudaría algo asi:
Código SQL [-]
UPDATE CALIFICACION 
set CALIFICACION.M01 ='EEE', CALIFICACION.ID_MATERIA1 = No Esta Cursando
WHERE CALIFICACION.MATRICULA ='LLL'

Como podrás ver "CALIFICACION.ID_MATERIA1 = No Esta Cursando" no creo que sea correcto.
O bien, si MATERIA1 es un string debería estar entre comillas
O debes poner algo correcto si no es un string (numero, boolean, etc.)

Nota: No es necesario que llames cada campo con el nombre de la tabla, si no utilizas muchas tablas en la consulta.

Yo creo que debería quedar asi:
Código Delphi [-]
   try
      frm_DataModule.trans_Commit.StartTransaction;
      frm_DataModule.qry_Alum_Calificacion.Close;
      frm_DataModule.qry_Alum_Calificacion.SQL.Clear;
      frm_DataModule.qry_Alum_Calificacion.SQL.Add('UPDATE CALIFICACION set M01 ='+QuotedStr(Edit2.Text)+', ID_MATERIA1 = '+QuotedStr('No Esta Cursando'));
      frm_DataModule.qry_Alum_Calificacion.SQL.Add('WHERE MATRICULA ='+QuotedStr(Label2.Caption));
      frm_DataModule.qry_Alum_Calificacion.ExecSQL;
      frm_DataModule.trans_Commit.Commit;
   Except
      frm_DataModule.trans_Commit.Rollback;
      MessageDlg('Ha ocurrido un error al modificar los datos.', mtError,[mbOk], 0);
   end;

Última edición por duilioisola fecha: 02-10-2007 a las 21:59:20.
Responder Con Cita