Hola. No conozo la estructura de tu base de datos pero, va una idea:
Una opción es que agreges una función en tu DataModule que te regrese un valor booleano para saber si ya esta registrada la asistencia:
Código Delphi
[-]
unit fmodulo;
...
...
..
type
TFmodulo = class(TDataModule)
public
function asistenciaRegistrada(idAlumno: Integer; fecha: TDateTime): boolean;
end;
...
procedure TFModulo.asistenciaRegistrada(idAlumno: Integer; fecha: TDateTime): boolean;
var
registrada: boolean;
begin
registrada := False;
with queryAuxiliar do
begin
Close;
SQL.Text := 'SELECT FECHA,ID_ALUMNO FROM TASISTENCIA WHERE FECHA = :FECHA AND ID_ALUMNO = :IDALUMNO';
ParamByName('FECHA').AsDate := fecha;
ParamByName('IDALUMNO').AsDate := idAlumno;
Open;
registrada := recordCount > 0;
Close;
end;
result := registrada;
end;
y desde tu botón en la forma lo evalues mas o menos así:
Código Delphi
[-]
procedure Tflistado_alumnos.basistenciasClick(Sender: TObject);
var
fecha: string;
Ca,Tt:integer;
begin
fmodulo.tasistencias.Active:=true;
fmodulo.tasistencias.Refresh;
fecha:= datetostr(now);
if (fmodulo.asistenciaRegistrada(now,fmodulo.zqlistado_alumnos.FieldByName('id_alumnos').asinteger) then
begin
Application.MessageBox('YA SE REGISTRO PREVIAMENTE ','GIMNASIO RUJA',MB_OK+MB_ICONINFORMATION)
end
else
begin
fmodulo.ZQcantasistencia.Active:=true;
fmodulo.ZQcantasistencia.ParamByName('id_alumnos').AsInteger:= fmodulo.zqlistado_alumnos['id_alumnos'];
fmodulo.ZQcantasistencia.Refresh;
ca:=fmodulo.ZQcantasistencia['tasistencias'];
fmodulo.tasistencias.Insert;
fmodulo.tasistencias['fecha']:= now;
fmodulo.tasistencias['hora']:= now;
fmodulo.tasistencias['estado']:= 'PRESENTE';
fmodulo.tasistencias['id_alumnos']:= fmodulo.zqlistado_alumnos['id_alumnos'];
fmodulo.tasistencias.Post;
Application.MessageBox('REGISTRADO','GIMNASIO RUJA',MB_OK+MB_ICONINFORMATION);
fmodulo.tasistencias.Refresh;
end;
fmodulo.tasistencias.Close;
end;
Saludos.