TABELAS IBEXPERT E ARQUIVOS .TXT

23/01/2013

7

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!
Responder

Posts

23/01/2013

Luciano Moraes

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;
Responder

23/01/2013

Luciano Moraes

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;
Responder

23/01/2013

Samuel Silva

?? desculpe Luciano mas não entendi
Responder

23/01/2013

Luciano Moraes

Este código serve para importar arquivo de texto para banco de dados.
Responder

24/01/2013

Samuel Silva

Perdoe minha falta de conhecimento, mas sou iniciante, onde coloco este código Luciano?
Responder

29/01/2013

Samuel Silva

E AI GALERA MAIS ALGUEM, AJUDA AI POR FAVOR, TO SOFRENDO COM ISSO AÍ
Responder

29/01/2013

Douglas

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.

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 !
Responder

29/01/2013

Douglas

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.

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)
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira