Formatar Valor no TXT para gravar no paradox
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
Como seria???
Grato
Tecrogerio
Curtidas 0
Respostas
Rjun
26/07/2006
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?
GOSTEI 0
Paullsoftware
26/07/2006
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..
GOSTEI 0
Tecrogerio
26/07/2006
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.
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.
GOSTEI 0
Paullsoftware
26/07/2006
coloque um botão e no evento onclick o código abaixo:
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:
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 ;
GOSTEI 0
Tecrogerio
26/07/2006
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
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
GOSTEI 0
Tecrogerio
26/07/2006
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.
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.
GOSTEI 0
Aroldo Zanela
26/07/2006
Colegas,
Outra forma:
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;
GOSTEI 0