Por favor URGENTE. Importação de um arquivo .TXT

Delphi

14/02/2003

Pessoal não entendo o que está errado, estou tentando importar um arquivo .txt e não grava nada. O que pode ser ? Alguém pode me ajudar ?

While not Eoln(arq) do
begin
ReadLn(arq,entrada);
// IbtProcMedData.Insert;
V_CODIGO := Copy(entrada,01,08);
V_NOME := Copy(entrada,09,80);
V_INC := Copy(entrada,89,2);
V_FILME := Copy(entrada,91,6);
V_AUX := Copy(entrada,97,2);
V_PORTE_ANEST := Copy(entrada,99,2);
V_CUST_OPER := Copy(entrada,101,8);
V_HONO_MED := Copy(entrada,109,8);

IBQ1.Params[0].AsInteger := STRTOINT(V_CODIGO);
IBQ1.Params[1].AsString := V_NOME;
IBQ1.Params[2].AsInteger := STRTOINT(V_INC);
IBQ1.Params[3].AsString := V_FILME;
IBQ1.Params[4].AsInteger := STRTOINT(V_AUX);
IBQ1.Params[5].AsInteger := STRTOINT(V_PORTE_ANEST);
IBQ1.Params[6].AsInteger := STRTOINT(V_CUST_OPER);
IBQ1.Params[7].AsInteger := STRTOINT(V_HONO_MED);

IBQ1.SQL.Add(´INSERT INTO PROC_MED (PM_CODIGO,PM_NOME,PM_INC,PM_FILME,PM_AUX,PM_PORTE_ANEST,PM_CUST_OPER,PM_HONO_MED) VALUES(:V_CODIGO,:V_NOME,:V_INC,:V_FILME,:V_AUX,:V_PORTE_ANEST,:V_CUST_OPER,:V_HONO_MED) ´);
IBQ1.ExecSQL;
IBQ1.SQL.Clear;
IBQ1.SQL.Add(´commit´);
IBQ1.ExecSQL;

end;
CloseFile(Arq);
end
else
begin
Showmessage(´Cancelado pelo Usuário !!!´);
Abort;
end;
end;


Ruf@

Ruf@

Curtidas 0

Respostas

Anonymous

Anonymous

14/02/2003

Para Gravar, vc deve usar o ApplyUpdates(-1) do seu DataSet


GOSTEI 0
Anonymous

Anonymous

14/02/2003

Verifique se o arquivo não contém uma linha em branco no inicio do arquivo, pois com a função EOLN() você lê a linha até seu último caracter, caso a primeira linha esteja vazia, pode ocorrer de seu laço não estar sendo executado nenhuma vez...
Se for esse o caso, vc pode substituir EOLN por EOF, garantindo que todo o arquivo será lido!!!

[]´s
Rodrigo Duarte.


GOSTEI 0
Raposao

Raposao

14/02/2003

[quote:95cee7e15d=´ruf@´]Pessoal não entendo o que está errado, estou tentando importar um arquivo .txt e não grava nada. O que pode ser ? Alguém pode me ajudar ?

While not Eoln(arq) do
begin
ReadLn(arq,entrada);
// IbtProcMedData.Insert;
V_CODIGO := Copy(entrada,01,08);
V_NOME := Copy(entrada,09,80);
V_INC := Copy(entrada,89,2);
V_FILME := Copy(entrada,91,6);
V_AUX := Copy(entrada,97,2);
V_PORTE_ANEST := Copy(entrada,99,2);
V_CUST_OPER := Copy(entrada,101,8);
V_HONO_MED := Copy(entrada,109,8);

IBQ1.Params[0].AsInteger := STRTOINT(V_CODIGO);
IBQ1.Params[1].AsString := V_NOME;
IBQ1.Params[2].AsInteger := STRTOINT(V_INC);
IBQ1.Params[3].AsString := V_FILME;
IBQ1.Params[4].AsInteger := STRTOINT(V_AUX);
IBQ1.Params[5].AsInteger := STRTOINT(V_PORTE_ANEST);
IBQ1.Params[6].AsInteger := STRTOINT(V_CUST_OPER);
IBQ1.Params[7].AsInteger := STRTOINT(V_HONO_MED);

IBQ1.SQL.Add(´INSERT INTO PROC_MED (PM_CODIGO,PM_NOME,PM_INC,PM_FILME,PM_AUX,PM_PORTE_ANEST,PM_CUST_OPER,PM_HONO_MED) VALUES(:V_CODIGO,:V_NOME,:V_INC,:V_FILME,:V_AUX,:V_PORTE_ANEST,:V_CUST_OPER,:V_HONO_MED) ´);
IBQ1.ExecSQL;
IBQ1.SQL.Clear;
IBQ1.SQL.Add(´commit´);
IBQ1.ExecSQL;

end;
CloseFile(Arq);
end
else
begin
Showmessage(´Cancelado pelo Usuário !!!´);
Abort;
end;
end;[/quote:95cee7e15d]



caro colega gostaria de saber se vc conseguiu resolver este problema pois estou com o mesmo,e nao consigo,ja tentei varias formas mas nenhuma grava na tabela,gostaria de saber se vc consegui fazer esta funcionar e se pudesse compartilhar comigo,desde ja agradeço pela colaboração.


GOSTEI 0
Anonymous

Anonymous

14/02/2003

Taí uma dica, tente!!!
Jogue o texto no Excel,
No Excel salve como tipo dBase III (*.dbf)
Abra o arquivo .dbf no Access;
No Access salve como tipo Paradox, ou tente importar
para Paradox.
Espero que vc consiga!
Enio Marconcini
www.apocaliptica.hpg.com.br


GOSTEI 0
Anonymous

Anonymous

14/02/2003

Pode enviar-me seu e-mail, e descarrego um exemplo operaciol....

ok


GOSTEI 0
POSTAR