TABELAS IBEXPERT E ARQUIVOS .TXT
Galera sei que e ate um pouco vergonhoso eu fazer essa pergunta, mas sou iniciante em Delphi e estou fazendo a minha primeira aplicação agora, estou utilizando o Delphi 2010 e o FireBird 2.5, e preciso criar uma tabela no IBExpert q vai receber o histórico do controle de ligações de uma empresa, com os seguintes dados:
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!
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
Curtidas 0
Respostas
Luciano Moraes
23/01/2013
Olá, este código não usei ainda, mas pode ser útil.
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
Luciano Moraes
23/01/2013
Olá, este código não usei ainda, mas pode ser útil. Tentei identar no post anterior, mas não consegui. Vou testar neste.
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;
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
Samuel Silva
23/01/2013
?? desculpe Luciano mas não entendi
GOSTEI 0
Luciano Moraes
23/01/2013
Este código serve para importar arquivo de texto para banco de dados.
GOSTEI 0
Samuel Silva
23/01/2013
Perdoe minha falta de conhecimento, mas sou iniciante, onde coloco este código Luciano?
GOSTEI 0
Samuel Silva
23/01/2013
E AI GALERA MAIS ALGUEM, AJUDA AI POR FAVOR, TO SOFRENDO COM ISSO AÍ
GOSTEI 0
Douglas
23/01/2013
Luciano,
código abaixo faz exatamente o que você precisa.
Porém se vai ter que adaptar o código para o seu padrão.
Qualquer dúvida só postar. Vamos resolver logo este problema !
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
Douglas
23/01/2013
Luciano,
código abaixo faz exatamente o que você precisa.
Porém se vai ter que adaptar o código para o seu padrão.
Qualquer dúvida só postar. Vamos resolver logo este problema !
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