Importar txt para bd(não consigo importar uma linha).

Delphi

14/06/2006

fala galera blz?

É o seguinte, to precisando copiar para meu bd um arquivo de texto neste formato.
Fiz o código assim

AssignFile(Arquivo, LocalNome);
 Reset(Arquivo);
while not Eof(Arquivo) do
 Readln(Arquivo, LinhaDados);
if Copy(LinhaDados, 17, 1)=´1´then
begin
 DmGeral.Qr_Funcionarios.Append;
 DmGeral.Qr_Funcionarios.FieldByName(´Cod´).AsString:= Copy(LinhaDados,17,2);
 DmGeral.Qr_Funcionarios.FieldByName(´Nome´).AsString:= Copy(LinhaDados,23,25);
 DmGeral.Qr_Funcionarios.FieldByName(´Setor´).AsString:=  Copy(LinhaDados,40,40);
 DmGeral.Qr_Funcionarios.FieldByName(´Endereco´).AsString:= Copy(LinhaDados,46,55);
 DmGeral.Qr_Funcionarios.Post;

A minha tabela ta assim Cod, Nome, Setor, Endereco.
Neste caso eu iria descartar as primeiras linhas.
Eu consegui importar (cod, nome e endereço), mais não tó conseguindo exibir no dbgrid o ´Setor´ pois ele ta numa linha que não tem código.
Uso Delphi 7 + Firebird 2.0

Desde já agradeço.


Vitoreduardo

Vitoreduardo

Curtidas 0

Respostas

Paullsoftware

Paullsoftware

14/06/2006

mais esse arquivos não está formatado para importação...
ele deve ter uma estrutura melhorada para que vc possa tratá-lo corretamente na hora da importação...
se é vc quem tá fazendo ele, procure deixá-lo mais ou menos assim:

12332;Paulo Ricardo;Rua da Salvade;87090234;18/08/1981
454;Ricardo Nunes;Rua da Salvade;87090234;18/08/1981
11544;Andréa Alves;Rua da Salvade;87090234;18/08/1981
3511;Marcos Azevedo;Rua da Salvade;87090234;18/08/1981
38574;Fábio Tavares;Rua da Salvade;87090234;18/08/1981
45;Marcio Neves;Rua da Salvade;87090234;18/08/1981

assim fica mais fácil de fazer a leitura...


GOSTEI 0
André Bianchi

André Bianchi

14/06/2006

tem certeza que na coluna 40 tem alguma coisa?
nao entendi quando vc disse ´pois ele ta numa linha que não tem código.´


/******************************************/
Voce pode encontrar hoje 900 dicas, 39 downloads,
18 artigos, e outras ajudas em:
[url]www.dicasdelphi.xpg.com.br[/url]
/******************************************/


GOSTEI 0
Adriano Santos

Adriano Santos

14/06/2006

mais esse arquivos não está formatado para importação... ele deve ter uma estrutura melhorada para que vc possa tratá-lo corretamente na hora da importação... se é vc quem tá fazendo ele, procure deixá-lo mais ou menos assim: 12332;Paulo Ricardo;Rua da Salvade;87090234;18/08/1981 454;Ricardo Nunes;Rua da Salvade;87090234;18/08/1981 11544;Andréa Alves;Rua da Salvade;87090234;18/08/1981 3511;Marcos Azevedo;Rua da Salvade;87090234;18/08/1981 38574;Fábio Tavares;Rua da Salvade;87090234;18/08/1981 45;Marcio Neves;Rua da Salvade;87090234;18/08/1981 assim fica mais fácil de fazer a leitura...


tem certeza que na coluna 40 tem alguma coisa? nao entendi quando vc disse ´pois ele ta numa linha que não tem código.´ /******************************************/ Voce pode encontrar hoje 900 dicas, 39 downloads, 18 artigos, e outras ajudas em: [url]www.dicasdelphi.xpg.com.br[/url] /******************************************/


O [b:66816c89d7]paullsoftware[/b:66816c89d7] e o [b:66816c89d7]bianchi[/b:66816c89d7] tem razão, se você mesmo que está desenvolvendo o arquivo texto pense no formato dele. 1 linha para cada registro. É mais fácil. Melhorando ainda mais o formato sugerido pelo Paulo eu faria assim:

[quote:66816c89d7=´Arquivo texto´]
12332;Paulo Ricardo ;Rua da Salvade;87090234;18/08/1981
00454;Ricardo Nunes ;Rua da Salvade;87090234;18/08/1981
11544;Andréa Alves ;Rua da Salvade;87090234;18/08/1981
03511;Marcos Azevedo ;Rua da Salvade;87090234;18/08/1981
38574;Fábio Tavares ;Rua da Salvade;87090234;18/08/1981
00045;Marcio Neves ;Rua da Salvade;87090234;18/08/1981
[/quote:66816c89d7]

Note que onde existem números coloquei zeros a esquerda. Isso facilita muito, pois basta fazer uma conversão para que o valor se torne válido no banco de dados. Ex:

[quote:66816c89d7=´Exemplo de cópia´]
    DmGeral.Qr_Funcionarios.FieldByName(´Cod´).AsInteger:=  StrToInt(Copy(LinhaDados, 1, 5));
  

[/quote:66816c89d7]

Agora, se não é você que está gerando este arquivo texto vai ficar complicado. Experimente usar o Debug do Delphi e descobrir o que ele está copiando na coluna 40.


GOSTEI 0
Vitoreduardo

Vitoreduardo

14/06/2006

Agradeço a atenção.

paullsoftware

Não sou eu quem ta fazendo os arquivos não, eu recebo esses arquivos ou por disquete ou por email.
Alguns arquivos podem ter até mais linhas umas 200, por exemplo.
Mais a formatação é sempre a mesma com o texto centralizado no bloco de notas.
E as vezes eu receber até uns 20 arquivos desse tipo.

Teria como formatar esse texto pelo Delphi, eu pensei em abri os arquivos num memo e então eu faria e edição e depois jogaria no banco.
Mais o problema é que se for muitos arquivos com muitas linhas, ai complica um pouco.


GOSTEI 0
Paullsoftware

Paullsoftware

14/06/2006

Agradeço a atenção. paullsoftware Não sou eu quem ta fazendo os arquivos não, eu recebo esses arquivos ou por disquete ou por email. Alguns arquivos podem ter até mais linhas umas 200, por exemplo. Mais a formatação é sempre a mesma com o texto centralizado no bloco de notas. E as vezes eu receber até uns 20 arquivos desse tipo. Teria como formatar esse texto pelo Delphi, eu pensei em abri os arquivos num memo e então eu faria e edição e depois jogaria no banco. Mais o problema é que se for muitos arquivos com muitas linhas, ai complica um pouco.


Acho que vc deveria falar com o programador que faz a exportação para ele formatar de uma forma melhor esse arquivo que vc está tendo dificuldades para processar as informações, pois, até mesmo os banco quando mandam as informações eles mandam elas bem formatadas...

se almenos existisse um separador de conteúdo, um Ponto e virgula ou Traço ou qq coisa que identificasse o inicio e final de cada dado do arquivo, assim fica complicado...


GOSTEI 0
Vitoreduardo

Vitoreduardo

14/06/2006

Agradeço a todos pela atenção.

Acho que vc deveria falar com o programador que faz a exportação para ele formatar de uma forma melhor esse arquivo que vc está tendo dificuldades para processar as informações, pois, até mesmo os banco quando mandam as informações eles mandam elas bem formatadas... se almenos existisse um separador de conteúdo, um Ponto e virgula ou Traço ou qq coisa que identificasse o inicio e final de cada dado do arquivo, assim fica complicado...


Vou fazer isso mesmo paullsoftware.
Vai facilitar muito a minha vida.

Obrigado.


GOSTEI 0
POSTAR