Fórum Formatar Valor no TXT para gravar no paradox #326179

26/07/2006

0

Tenho um campo em um arquivo TXT tipo 456.99, que gostaria de importar para um campo valor em uma tabela PARADOX.

Como seria???

Grato


Tecrogerio

Tecrogerio

Responder

Posts

26/07/2006

Rjun

Jogue o conteúdo do seu TXT em uma stringList. Depois percorra a lista e de um COPY para pegar a parte da linha que você quer e jogue para sua tabela. Você ta importando tudo para uma tabela nova? Se não, como você sabe em qual registro deve ser inserido o valor que você esta pegando do txt?


Responder

Gostei + 0

26/07/2006

Paullsoftware

amigão, post a estrutura do seu arquivo txt e os campos da tabela onde o mesmo será jogado, para que possamos te ajudar melhor..


Responder

Gostei + 0

27/07/2006

Tecrogerio

a estrutura do arquivo txt é assim:
159422/3 ;JPM CONSTRUCOES ;18072006;862.31; ;-8;LUANDA REP E COM LTDA ;

onde os campos são:
duplicata,cliente,vencimento,valor,dias de atraso,representante:

respectivamente transferidos para uma tabela paradox vazia, com a estrutura lógica para cada item.

o campo da tabela valor é obviamente valor, a dificuldade é só o metodo de conversão campo no arquivo texto para a tabela. ja localizei o campo e tudo.

Muito Obrigado.


Responder

Gostei + 0

27/07/2006

Paullsoftware

coloque um botão e no evento onclick o código abaixo:
Var Registros,ListaCampos: TStringList;
    j: Integer ;
Const Enter_ = #13 + 10;
begin
try
   try
   Registros := TStringList.Create;
   ListaCampos := TStringList.Create;
   Registros.LoadFromFile(FilenameEdit1.FileName);//aqui é o arquivo que contem os dados
   Memo1.Lines.Clear;
   for j := 0 to Registros.Count -1 do
   begin
      // Separa os campos do registro em itens do TStrinList, registro a registro.
      ListaCampos.Text := StringReplace(Registros[j], ´;´, Enter_, [rfReplaceAll, rfIgnoreCase]);
          ////// coloque aqui a inserção dos campos no BD /////////
          Memo1.Lines.Add(´DUPLICATA: ´ + ListaCampos[0]);
          Memo1.Lines.Add(CLIENTE: ´ + ListaCampos[1]);
          Memo1.Lines.Add(VENCIMENTO: ´ + ListaCampos[2]);
          Memo1.Lines.Add(´VALOR: ´ + FormatFloat(‘#,,0.00’,StrToFloat(ListaCampos[3]));//aqui formato o valor
          Memo1.Lines.Add(´DIAS_ATRASO: ´ + ListaCampos[4]);
          Memo1.Lines.Add(´REPRESENTANTE: ´ + ListaCampos[5]);
          Memo1.Lines.Add(´==============================´);
  End;//do for
Finally
 Registros.Free;
 ListaCampos.Free;
End;//do try
Except
 Raise exception Create(‘Erro durante o processo de importação!’);
End;

eu observei que no seu arquivo tem um espaço não ultilizado, dê uma olhada e adapte as suas necessidades... qualquer coisa post ai! :wink:
159422/3 ;JPM CONSTRUCOES ;18072006;862.31;[b:d271f12efa]ESSE ESPAÇO[/b:d271f12efa] ;-8;LUANDA REP E COM LTDA ;



Responder

Gostei + 0

27/07/2006

Tecrogerio

Caro paullo

Ainda não funcionou, diz ´362.22´ não é um ponto flutuante válido.
lembrando que o erro ocorre quando tento gravar em um campo valor da tabela.

grato


Responder

Gostei + 0

27/07/2006

Tecrogerio

Caro Paullo

Muito Obrigado pela ajuda, descobri o que era

o caso era que o delphi não cosiderava o ponto no valor como separador de decimal, assim usando a funcão Stringreplace substitui o ponto pela virgula ai sim o SrtToFloat funcionou.

Muito obrigado a todos pela atenção.


Responder

Gostei + 0

28/07/2006

Aroldo Zanela

Colegas,


Outra forma:

var Arquivo: TextFile;
    Linha: string;
    Campos: TStringList;
begin
  Campos  := TStringList.Create;
  AssignFile(Arquivo,´C:\TEMP\TESTE.TXT´);
  Reset(Arquivo);
  while not Eof(Arquivo) do
  begin
    Readln(Arquivo, Linha);
    Campos.Clear;
    ExtractStrings([´;´],[], PChar(Linha), Campos);
    if (Campos.Count=8) then
    begin
      Campos.Strings[0]; // duplicata,
      Campos.Strings[1]; // cliente,
      Campos.Strings[2]; // vencimento,
      Campos.Strings[3]; // valor,
      Campos.Strings[4]; // não consta,
      Campos.Strings[5]; // dias de atraso,
      Campos.Strings[6]; // representante:
    end;
  end;
  CloseFile(Arquivo);
end;



Responder

Gostei + 0

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

Aceitar