Importar txt para db
03/11/2009
0
Francisco Assis
Posts
03/11/2009
Pjrm1470
Normalmente se tem um delimitador para separar cada campo.
Se o corpo do arquivo estivesse assim:
| Codigo;Descricao;Quantidade;
| 50855;Produto 1;100; | 56125;Produto 2;70; | 65214;Produto 3;60;
O delimitador é " ; " (Ponto e virgula).
Sendo assim em cada linha vc pega cada caractere e vai formando a palavra. Chegou no delimitador, para ai e joga o valor a seu respectivo campo e pula para o proximo campo.
No seu caso terá que fazer uma verificação de espaços bem calculados.
Como se você tivesse que criar uma tabela imaginaria separando os campos e seus valores estão centralizados na tabela.
Alguns "Bancos" usam essa formatação nos arquivos txt para enviar informações.
Talvez eu n tenha ajudado, mas com isso vc terá uma noção de como podera resolver o problema.
Att,
Plínio.
03/11/2009
Francisco Assis
04/11/2009
Pjrm1470
| codigo Descrição Quantidade | 50855 Produto 1 100 | 56125 Produto 2 70 | 65214 Produto 3 60
Pensei assim:
| procedure TForm1.Button4Click(Sender: TObject);
| var
| tx: TextFile;
| st: String;
| I, C: Integer; // C = Campo
| begin
| AssignFile(tx, 'C:\arquivo.txt'); //le o arquivo
| Reset(tx);
| while not Eof(tx) do
| begin
| Readln(tx, st); //Joga a linha atual para a string
| C := 1;
| for I := 1 to Length(st) do //varre cada caractere da linha
| begin
| Campo[C] := Campo[C] + st[I];
| if (I = 6) or (I = 18) then //Nas posições aonde penso ser o final do campo
| Inc(C); //pula para o proximo campo
| end;
| end;
| CloseFile(tx);
| end;
Legenda:
Campo[]: array[1..X] of String; //onde X é o numero de campos que tem. neste caso 3.
Lembre-se de que se tiver outros arquivos com formatações e espaços diferentes, você terá que fazer um codigo para cada um, pois não uma forma dinamica de se fazer isso sem ter um delimitador para dizer quando haverá a separação dos campos.
Espero que lhe ajude o exemplo.
Qlqr coisa so pergunta.
Att,
Plínio.
04/11/2009
Pjrm1470
Corrigindo, não há botão editar. poderia habilita-lo por 30-60s apos o post.
Clique aqui para fazer login e interagir na Comunidade :)