REVELAR

Fórum Importar Arquivo Texto #328259

30/08/2006

0

[color=red:39ff944e03]Título editado por Massuda Por favor, procure usar um título descritivo.[/color:39ff944e03]

Bom dia Galera,

Estou desenvolvendo uma aplicação para controlar o ponto, tem os relógio, o software do relógio gera o arquivo .txt com os registros. 0001200820060800 um debaixo do outro.

Criei uma tabela com os campos matricula, data e hora, onde peguei este arquivo texto e desmembrei conforme a tabela,
Exemplo os 4 primeiros dígitos vão para o campo matricula, os próximos 8, para o campo data e os últimos 4 para hora.

Consegui importa para o sistema aonde farei os cálculos,
Só que desta forma fica muito difícil para fazer os cálculos das horas.

Estou querendo criar outra tabela contendo matrícula, data, entrada1, saida1, entrada2, saida2

Só que na hora de importar o arquivo texto estará dessa forma:
0001200820060800
0001200820061200
0001200820061300
0001200820061700
Um em baixo do outro.
Eu queria que na hora que importar para esta nova tabela que criei, o sistema entendesse da seguinte forma:
Ele vai ler a primeira linha e armazenar os 4 primeiros dígitos no campo matricula, os próximos 8 no campo data e os últimos 4 no campo entrada1.
Na hora que ele for ler a segunda e ver q a matricula e data estão iguais e que o campo entrada1 já esta armazenado ele vai gravar apenas os últimos 4 digitos no campo saida1.
Depois ele vai seguir o mesmo exemplo, caso a matricula e a data estiverem iguais, ai ele começa a comparar que os campos da tabela entrada1, saída1, já estão gravados ai ele grava somente os últimos 4 digitos no campo Entrada2.
E assim sucessivamente.
Desta forma fica fácil de fazer os cálculos das horas por dia. Pois quando for consultar a data eu visualizo as horas em dbedits e faço os cálculos pelo o q tiver dentro dos dbedits.

Eu utilizei o seguinte código para importar o arquivo texto do modo onde eu tinha apenas os campos Matricula, Data, Hora
procedure Tfrmponto.BitBtn1Click(Sender: TObject);
var
texto : textfile;
linha : string;
dia,mes,ano,data : string;
begin
if FileExists(´C:\Sistema\Coleta.TXT´)then
begin
adoquery1.Close;

adoquery1.SQL.Clear;
adoquery1.SQL.Add(´Select * from ponto where matricula = matricula and data = data order by matricula´);
adoquery1.Open;

assignfile(texto, ´C:\Sistema\Coleta.txt´);
filemode := 2;
reset(texto);

while not eof(texto) do

begin
readln(texto,linha);
adoquery1.Open;
adoquery1.Insert;
adoquery1.FieldByName(´Matricula´).Value := copy(linha, 1,4);

dia := copy(linha, 5,2);
mes := copy(linha,7,2);
ano := copy(linha,9,4);
data := (dia+´/´+mes+´/´+ano);

adoquery1.FieldByName(´Data´).AsString := data;

adoquery1.FieldByName(´Hora´).Value := copy(linha,13,2)+ ´:´ + copy(linha,15,2);
adoquery1.Post;

end;

Só que com desta forma, fica difícil de fazer os cálculos das horas. Pois da forma que estou querendo utilizando a tabela contendo matricula, data, entrada1, saida1 entrada2, saida2. quando ocorrer do funcionário esquecer de bater o ponto ele não grava nada em um dos campos. Ai eu só digitaria e preenchia o campo q estivesse faltando.

Alguém pode me ajudar?
Desde já agradeço a atenção.


Vinicius/campolina

Vinicius/campolina

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar