e ai pessoal, tranquilo??
Eu estou fazendo um sistema de controle de acesso com delphi. Em
termos já resolvi o problema, mas queria o auxilio de voces para
outros modos de utilização do sistema.

Bom eu tenho uma Tabela no Access chamada TabAcesso que tem os
seguintes campos:
ID
pessoa_ID
data
hraEntrada
hraSaida
Status

Essa tabela,a TabAcessos, dentro do AdoTable dei o nome de tbAcesso.

Bom, quando uma pessoa entra na instituição, eu pesquiso primeiramente
se essa pessoa já teve o acesso naquele dia. Se não entrou eu preencho
os campos da tabela menos o hraSaida e no estatus eu coloco a letra
"E" referente a Entrada. Feito isso, quando essa pessoa sair eu faço
uma pesquisa SQL que verifica qual é o status da pessoa dessa maneira:

qryStatus.SQL.Clear;
qryStatus.SQL.ADD('SELECT TOP 1 * FROM TabAcessos WHERE pessoa_ID = '
+ edID.txt);
qryStatus.SQL.ADD('Order By pessoa_ID Desc);
qryStatus.Open;


Nessa pesquisa, eu acho o ultimo registro dessa pessoa, como não
entendo muito de SQL e pesquisei esse comando na net não sei se esta
100% correto, mas sei que esta funcionando aqui.

Bom, depois de ter feito isso eu faço o seguinte:

 if (qryStatus.FieldByName('Status').AsString = 'E') then
  Begin
    tbAcesso.Locate('ID', qryStatus.FieldByName('ID').AsInteger,[]);
    tbAcesso.Edit;
  End
 else
   tbAcesso.Append;

Bom, depois da consulta SQL eu faço um teste para verificar se o
ultimo registro da pessoa o status dela é 'E' se ele for eu com o
tbAcesso.Locate eu tento me posicionar naquele registro para alterar a
hora de saida e o status para 'S'. Mas é importante frizar que uma
pessoa pode entrar e sair varias vezes no dia.

Eu queria que voces dessem uma olhada para me dizer se existe uma
outra maneira derrepente até mais segura. Eu tenho receio do
tbAcesso.Locate em não se posicionar na ultima coluna da pessoa para
que eu possa edita-la.

Bom, é isso
[]´s Michael











Responder a