Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   registrar asistencias si repetirse (https://www.clubdelphi.com/foros/showthread.php?t=87957)

jose.ignacio.ve 24-03-2015 18:27:54

registrar asistencias si repetirse
 
hola alguien me puede ayudar a registrar asistencias de alumnos si repetirse? o sea que si ya se registro la asistencia de un alumno hoy no se vuelva a registrar hasta mañana.. yo tengo un codigo que solo funciona para un dia!
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.tasistencias.Locate('id_alumnos',fmodulo.zqlistado_alumnos.FieldByName('id_alumnos').asinte  ger,[]))
     and (fmodulo.tasistencias['fecha']= fecha )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;
lo que quiero hacer es que me localice el id_alumnos que me trae el listado de alumnos que lo tomo de un dbgrid. y que verifique si el dia de hoy ya se registro asistencia.. si hoy se registro que muestre el cartel si no se registro que lo guarde en la tabla asistencia

tmsanchez 24-03-2015 21:47:16

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;
    // (suponiendo que ya tienes un TQuery o similar conectado a la base de datos)
    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.

jose.ignacio.ve 25-03-2015 00:03:48

Si ya lo solucione muchas gracias,, me sirvio mucho.. pero solo hice una consulta con esas condiciones.. y si me trae mas de un registro es porq ya se registro en el dia.!!


La franja horaria es GMT +2. Ahora son las 09:49:54.

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