Problema na Hora de Formatar a Data do meu Arquivo TXT
Bom Meus amigos,
Segue minha rotina criada com ajuda dos colegas do forum, para importar meu arquivo TXT para uma Base Firebird, gostaria de mais uma ajudinha pois estou com dificuldade na hora de converter a data para importar para a tabela desejada.
O erro que me retorna é o seguinte;
A linha do arquivo TXT que estou querendo importar é essa, nesta linha a um espaço entre a data e a hora
como poderia importar esta data;
2011-04-12 07:29:00;IEZ9395;MAF0687;C;AR000135131
--------------------------------------------------------------------------
desde ja agradeço mais uma vez, fico no aguardo
segue o codigo para uma breve analise;
var
ListaGrava,ListaLer:Tstrings;
data,linha: String;
i,posini:Integer;
begin
if edImporta.Text <> '' then
begin
ListaGrava:=TStringList.Create;
ListaLer:=TStringList.Create;
try
listaLer.LoadFromFile('C:\enLastre\eadi.txt');//Aqui vc vai colocar o caminho onde esta o Arquivo Txt que se quer exportar
ListaGrava.Delimiter:=';';
for i := 0 to pred(ListaLer.Count) do
begin
posini:= pos(';',ListaLer.Strings[i]);
linha:=listaler.Strings[i];
data:=copy(linha,1,posini-1);
copy(linha,1,posini-1);
linha :=copy(linha,posini+1,length(linha));
ListaGrava.DelimitedText:=Linha;
ListaGrava.DelimitedText:=ListaLer.Strings[i];
showmessage(ListaGrava.Strings[0]+
ListaGrava.Strings[1]+
ListaGrava.Strings[2]+
ListaGrava.Strings[3]+
ListaGrava.Strings[4]);
//rotina para importar dados tab_eadisul
dm.qrImpE.Close;
dm.qrImpE.SQL.Clear;
dm.qrImpE.SQL.Add('insert into tab_eadisul');
dm.qrImpE.SQL.Add('(DATA,CAVALO,REBOQUE,STATUS,MIC_ID) VALUES');
dm.qrImpE.SQL.Add('(:DATA,:CAVALO,:REBOQUE,:STATUS,:MIC_ID)');
if not dm.Transacao.InTransaction then
dm.Transacao.StartTransaction;
dm.qrImpE.Close;
dm.qrImpE.ParamByName('DATA').AsString := ListaGrava.Strings[0];
dm.qrImpE.ParamByName('CAVALO').AsString := ListaGrava.Strings[1];
dm.qrImpE.ParamByName('REBOQUE').AsString:= ListaGrava.Strings[2];
dm.qrImpE.ParamByName('STATUS').AsString := ListaGrava.Strings[3];
dm.qrImpE.ParamByName('MIC_ID').AsString := ListaGrava.Strings[4];
dm.qrImpE.Open;
dm.Transacao.Commit;
end;
finally
ListaGrava.Free;
ListaLer.Free;
edImporta.Clear;
ListaGrava,ListaLer:Tstrings;
data,linha: String;
i,posini:Integer;
begin
if edImporta.Text <> '' then
begin
ListaGrava:=TStringList.Create;
ListaLer:=TStringList.Create;
try
listaLer.LoadFromFile('C:\enLastre\eadi.txt');//Aqui vc vai colocar o caminho onde esta o Arquivo Txt que se quer exportar
ListaGrava.Delimiter:=';';
for i := 0 to pred(ListaLer.Count) do
begin
posini:= pos(';',ListaLer.Strings[i]);
linha:=listaler.Strings[i];
data:=copy(linha,1,posini-1);
copy(linha,1,posini-1);
linha :=copy(linha,posini+1,length(linha));
ListaGrava.DelimitedText:=Linha;
ListaGrava.DelimitedText:=ListaLer.Strings[i];
showmessage(ListaGrava.Strings[0]+
ListaGrava.Strings[1]+
ListaGrava.Strings[2]+
ListaGrava.Strings[3]+
ListaGrava.Strings[4]);
//rotina para importar dados tab_eadisul
dm.qrImpE.Close;
dm.qrImpE.SQL.Clear;
dm.qrImpE.SQL.Add('insert into tab_eadisul');
dm.qrImpE.SQL.Add('(DATA,CAVALO,REBOQUE,STATUS,MIC_ID) VALUES');
dm.qrImpE.SQL.Add('(:DATA,:CAVALO,:REBOQUE,:STATUS,:MIC_ID)');
if not dm.Transacao.InTransaction then
dm.Transacao.StartTransaction;
dm.qrImpE.Close;
dm.qrImpE.ParamByName('DATA').AsString := ListaGrava.Strings[0];
dm.qrImpE.ParamByName('CAVALO').AsString := ListaGrava.Strings[1];
dm.qrImpE.ParamByName('REBOQUE').AsString:= ListaGrava.Strings[2];
dm.qrImpE.ParamByName('STATUS').AsString := ListaGrava.Strings[3];
dm.qrImpE.ParamByName('MIC_ID').AsString := ListaGrava.Strings[4];
dm.qrImpE.Open;
dm.Transacao.Commit;
end;
finally
ListaGrava.Free;
ListaLer.Free;
edImporta.Clear;
Luciano Farias
Curtidas 0
Respostas
Wilson Junior
02/05/2011
Tente assim
Espero ter colaborado.
dm.qrImpE.ParamByName('DATA').AsDateTime := StrToDateTime( ListaGrava.Strings[0], 'yyyy-mm-dd hh:nn:ss' );
Espero ter colaborado.
GOSTEI 0
Luciano Farias
02/05/2011
Grato Amigão pela ideia, mas não funcionou da um erro e estou aberto a mais
Sugestões
GOSTEI 0
Wilson Junior
02/05/2011
de uma olhada neste link http://www.delphibasics.co.uk/RTL.asp?Name=StrToDateTime
Espero ter colaborado.
Espero ter colaborado.
GOSTEI 0
Luciano Farias
02/05/2011
Amigo, outra duvida
este meu arquivo txt contem estas linhas para importar para a base de dados, mas quando tento importar com o espaço entre a data e a hora me mostra esta mensagem a baixo;
2011-04-12 07:29:00;IEZ9395;MAF0687;C;AR000135131
2011-04-12 07:29:00;IEZ9395;MAF0687;C;AR000135131 e se eu tiro o espaço ela importa perfeitamente o problema é que meu arquivo é gerado neste formato com o espaço entre a data e a hora;
2011-04-1207:29:24;EFW0724;EFW0714;V;AR000135103
2011-04-1207:30:01;DJF6492;DTB9722;V;AR000135070 Grato pelas ajudas
2011-04-12 07:29:00;IEZ9395;MAF0687;C;AR000135131 e se eu tiro o espaço ela importa perfeitamente o problema é que meu arquivo é gerado neste formato com o espaço entre a data e a hora;
2011-04-1207:29:24;EFW0724;EFW0714;V;AR000135103
2011-04-1207:30:01;DJF6492;DTB9722;V;AR000135070 Grato pelas ajudas
GOSTEI 0
Wilson Junior
02/05/2011
Olhe este link e veja se lhe ajuda https://www.devmedia.com.br/post-13222-Delphi--Exemplo-de-uso-da-funcao-StringReplace.html. Pois vc pode substituir o seu espaço por nada.
Espero ter colaborado.
Espero ter colaborado.
GOSTEI 0