Fórum TABELAS IBEXPERT E ARQUIVOS .TXT #433136
23/01/2013
0
TRONCO (LINHA TELEFÔNICA EX. 01, 02, 03, 04....)
RAMAL (EX. 200, 201, 202...)
NÚMERO (TELEFONE)
HORA
TEMPO (DURAÇÃO)
DATA
VALOR
CÓDIGO LOCAL (DDD UTILIZADO NA LIGAÇÃO)
Ou seja todos vão receber caracteres numéricos. Após criar a tabela, preciso pegar estes dados que estão dentro de arquivos .txt e preciso jogá-los nessa tabela, preciso muito da ajuda de vocês.
Agradeço a aguardo a opinião e ajuda de todos!
Samuel Silva
Curtir tópico
+ 0Posts
23/01/2013
Luciano Moraes
var
sArquivo: TextFile;
Entrada, sArq2: string;
iLinha: integer;
begin
tblCep.Open;
tblCepLoc.Open;
bCancelaImport := False;
AssignFile(sArquivo, FileNameEdit1.FileName);
sArq2 := After('Cep_Loc.txt',FileNameEdit1.FileName);
iLinha := 0;
if FileNameEdit1.FileName = 'C:\Download\Ceps\Cep_loc.txt' then begin
// Arquivo de Localidades
RzProgressBar1.TotalParts := 0;
RzProgressBar1.TotalParts := NumLinhasArq(FileNameEdit1.FileName);
Reset(sArquivo);
Readln(sArquivo,Entrada);
while not Eoln(sArquivo) do begin
Inc(iLinha);
Readln(sArquivo,Entrada);
// 0 = Base Total e 2 = Inclusao
if (copy(Entrada,90,1) = '0') or (copy(Entrada,90,1) = '2') then
begin
tblCepLoc.Append;
tblCepLoc.FieldByName('cep_ChvLocal').AsString :=
copy(Entrada,1,6);
tblCepLoc.FieldByName('cep_Cidade').AsString :=
copy(Entrada,7,60);
tblCepLoc.FieldByName('cep_UF').AsString := copy(Entrada,75,2);
try
blCepLoc.Post;
except
blCepLoc.Cancel;
end;
end
else if (copy(Entrada,90,1) = '1') then begin // Exclusao
if tblCepLoc.Locate('cep_ChvLocal', copy(Entrada,1,6),
[loPartialKey]) then
tblCepLoc.Delete;
end
else if (copy(Entrada,90,1) = '3') then begin // Alteracao
if tblCepLoc.Locate('cep_ChvLocal', copy(Entrada,1,6),
[loPartialKey])
then begin
tblCepLoc.Edit;
tblCepLoc.FieldByName('cep_Cidade').AsString :=
copy(Entrada,7,60);
tblCepLoc.FieldByName('cep_UF').AsString :=
copy(Entrada,75,2);
end;
try
tblCepLoc.Post;
except
tblCepLoc.Cancel;
end;
end;
RzProgressBar1.PartsComplete := iLinha;
Application.ProcessMessages;
if bCancelaImport then
Break;
end;
CloseFile(sArquivo);
end;Gostei + 0
23/01/2013
Luciano Moraes
var
sArquivo: TextFile;
Entrada, sArq2: string;
iLinha: integer;
begin
tblCep.Open;
tblCepLoc.Open;
bCancelaImport := False;
AssignFile(sArquivo, FileNameEdit1.FileName);
sArq2 := After('Cep_Loc.txt',FileNameEdit1.FileName);
iLinha := 0;
if FileNameEdit1.FileName = 'C:\Download\Ceps\Cep_loc.txt' then begin
// Arquivo de Localidades
RzProgressBar1.TotalParts := 0;
RzProgressBar1.TotalParts := NumLinhasArq(FileNameEdit1.FileName);
Reset(sArquivo);
Readln(sArquivo,Entrada);
while not Eoln(sArquivo) do begin
Inc(iLinha);
Readln(sArquivo,Entrada);
// 0 = Base Total e 2 = Inclusao
if (copy(Entrada,90,1) = '0') or (copy(Entrada,90,1) = '2') then
begin
tblCepLoc.Append;
tblCepLoc.FieldByName('cep_ChvLocal').AsString :=
copy(Entrada,1,6);
tblCepLoc.FieldByName('cep_Cidade').AsString :=
copy(Entrada,7,60);
tblCepLoc.FieldByName('cep_UF').AsString := copy(Entrada,75,2);
try
blCepLoc.Post;
except
blCepLoc.Cancel;
end;
end
else if (copy(Entrada,90,1) = '1') then begin // Exclusao
if tblCepLoc.Locate('cep_ChvLocal', copy(Entrada,1,6),
[loPartialKey]) then
tblCepLoc.Delete;
end
else if (copy(Entrada,90,1) = '3') then begin // Alteracao
if tblCepLoc.Locate('cep_ChvLocal', copy(Entrada,1,6),
[loPartialKey])
then begin
tblCepLoc.Edit;
tblCepLoc.FieldByName('cep_Cidade').AsString :=
copy(Entrada,7,60);
tblCepLoc.FieldByName('cep_UF').AsString :=
copy(Entrada,75,2);
end;
try
tblCepLoc.Post;
except
tblCepLoc.Cancel;
end;
end;
RzProgressBar1.PartsComplete := iLinha;
Application.ProcessMessages;
if bCancelaImport then
Break;
end;
CloseFile(sArquivo);
end;
Gostei + 0
23/01/2013
Samuel Silva
Gostei + 0
23/01/2013
Luciano Moraes
Gostei + 0
24/01/2013
Samuel Silva
Gostei + 0
29/01/2013
Samuel Silva
Gostei + 0
29/01/2013
Douglas
código abaixo faz exatamente o que você precisa.
Porém se vai ter que adaptar o código para o seu padrão.
procedure TForm1.Button1Click(Sender: TObject);
var
//Declarando tamanho das variaveis que do arquivo.
Tronco : string[2]; //TRONCO
Ramal : string[3]; //RAMAL
Telefone : string[8]; //NÚMERO
hora : string[6]; // HORA
tempo : string[6]; //tempo
data : string[8]; //data
CodLocal : string[2]; //codigo local
//Variaveis Auxiliares
Arq : TextFile;
begin
if OpenDialog1.Execute then
exit;
AssignFile(Arq, OpenDialog1.FileName);
Reset(Arq);
while not Eof(Arq) do
begin
Readln(Arq, Tronco, Ramal, Telefone, Hora, Tempo, Data, CodLocal);
Qry_Aux.Close;
Qry_Aux.SQL.Clear;
Qry_Aux.SQL.Add('INSERT INTO TELEFONICA');
Qry_Aux.SQL.Add('(TRONCO, RAMAL, TELEFONE, HORA, TEMPO, DATA, CODLOCAL)');
Qry_Aux.SQL.Add('VALUES');
Qry_Aux.SQL.Add('(:TRONCO, :RAMAL, :TELEFONE, :HORA, :TEMPO, :DATA, :CODLOCAL)');
Qry_Aux.ParamByName('TRONCO' ).AsInteger := StrToInt(TRONCO);
Qry_Aux.ParamByName('RAMAL' ).AsInteger := StrToInt(RAMAL);
Qry_Aux.ParamByName('TELEFONE').AsString := TELEFONE;
Qry_Aux.ParamByName('HORA' ).AsTime := StrToTime(HORA);
Qry_Aux.ParamByName('TEMPO' ).AsTime := StrToTime(TEMPO);
Qry_Aux.ParamByName('DATA' ).AsDate := STRTODATE(DATA);
Qry_Aux.ParamByName('CODLOCAL').AsInteger := StrToInt(CODLOCAL);
Qry_Aux.ExecSQL;
end;
CloseFile(Arq);
FreeAndNil(Qry_Aux);
end;
end.
Qualquer dúvida só postar. Vamos resolver logo este problema !
Gostei + 0
29/01/2013
Douglas
código abaixo faz exatamente o que você precisa.
Porém se vai ter que adaptar o código para o seu padrão.
procedure TForm1.Button1Click(Sender: TObject);
var
//Declarando tamanho das variaveis que do arquivo.
Tronco : string[2]; //TRONCO
Ramal : string[3]; //RAMAL
Telefone : string[8]; //NÚMERO
hora : string[6]; // HORA
tempo : string[6]; //tempo
data : string[8]; //data
CodLocal : string[2]; //codigo local
//Variaveis Auxiliares
Arq : TextFile;
begin
if not OpenDialog1.Execute then
exit;
AssignFile(Arq, OpenDialog1.FileName);
Reset(Arq);
while not Eof(Arq) do
begin
Readln(Arq, Tronco, Ramal, Telefone, Hora, Tempo, Data, CodLocal);
Qry_Aux.Close;
Qry_Aux.SQL.Clear;
Qry_Aux.SQL.Add('INSERT INTO TELEFONICA');
Qry_Aux.SQL.Add('(TRONCO, RAMAL, TELEFONE, HORA, TEMPO, DATA, CODLOCAL)');
Qry_Aux.SQL.Add('VALUES');
Qry_Aux.SQL.Add('(:TRONCO, :RAMAL, :TELEFONE, :HORA, :TEMPO, :DATA, :CODLOCAL)');
Qry_Aux.ParamByName('TRONCO' ).AsInteger := StrToInt(TRONCO);
Qry_Aux.ParamByName('RAMAL' ).AsInteger := StrToInt(RAMAL);
Qry_Aux.ParamByName('TELEFONE').AsString := TELEFONE;
Qry_Aux.ParamByName('HORA' ).AsTime := StrToTime(HORA);
Qry_Aux.ParamByName('TEMPO' ).AsTime := StrToTime(TEMPO);
Qry_Aux.ParamByName('DATA' ).AsDate := STRTODATE(DATA);
Qry_Aux.ParamByName('CODLOCAL').AsInteger := StrToInt(CODLOCAL);
Qry_Aux.ExecSQL;
end;
CloseFile(Arq);
FreeAndNil(Qry_Aux);
end;
end.
Qualquer dúvida só postar. Vamos resolver logo este problema !
Só editando ali no OpenDialog1.Execute esqueci do (NOT)
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)