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)+'');
frm_DataModule.qry_Alum_Calificacion.SQL.Text;
frm_DataModule.qry_Alum_Calificacion.ExecSQL;
frm_DataModule.trans_Commit.Commit;
Except
hay_error := True;
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;