converter as informações de um arquivo txt para o mysql..
ola,não tenho muito esperiencia com o delphi..
Precisso converter os dados de um arquivo prod6.txt, para uma tabela no mysql.
o formato dos dados no arquivo estão da seguinte maneira..
cod Desc Val Unid Data
"1476","VESTIDO",0.00,"PÇ",05/12/2007
"1027","TOP",13.90,"PÇ",05/09/2007
"1528","BLUSA",32.00,"PÇ",07/01/2008
"1524","VESTIDO",0.00,"PÇ",05/12/2007
"1425","BLUSA",0.00,"PÇ",05/12/2007
"1028","BLUSA",29.90,"PÇ",05/09/2007
"1616","BLUSA",0.00,"PÇ",05/12/2007
Precisso fazer uma rotina pra copiar essas informações e jogar numa tabela produtos
no mysql. Uso o Data Sourse e o SimpleDataSet.
alguem pode me passar alguma rotina..
aguardo
Odair Vavassori
Curtidas 0
Respostas
Eriley Barbosa
05/08/2010
Rotina pronta não tem, mas passe o nome do seu simpledataset usado para inserir e o nome dos campos.
Atenciosamente
Eriley
GOSTEI 0
Odair Vavassori
05/08/2010
ola,não tenho muito esperiencia com o delphi..
Precisso converter os dados de um arquivo prod6.txt, para uma tabela no mysql.
o formato dos dados no arquivo estão da seguinte maneira..
cod Desc Val Unid Data
"1476","VESTIDO",0.00,"PÇ",05/12/2007
"1027","TOP",13.90,"PÇ",05/09/2007
"1528","BLUSA",32.00,"PÇ",07/01/2008
"1524","VESTIDO",0.00,"PÇ",05/12/2007
"1425","BLUSA",0.00,"PÇ",05/12/2007
"1028","BLUSA",29.90,"PÇ",05/09/2007
"1616","BLUSA",0.00,"PÇ",05/12/2007
Precisso fazer uma rotina pra copiar essas informações e jogar numa tabela produtos
no mysql. Uso o Data Sourse e o SimpleDataSet.
alguem pode me passar alguma rotina..
aguardo
O nome do arquivo é prod6.txt
SDSProd= é o SimpleDataSet
cod= codigo
descp= descrição
vendp= valor
unip= PÇ
datacp=data
GOSTEI 0
Eriley Barbosa
05/08/2010
Imagine que você tem um botão para realizar a importação do txt para o banco de dados, o código para fazer isso, seria assim:
procedure TForm1.Button1Click(Sender: TObject);
var
{Variável que recebe o conteúdo do arquivo texto }
arquivo: TStringList;
SAspas, SVirgula, SPonto: string;
i, posicao: Integer;
begin
{Instancia a variável arquivo }
arquivo := TStringList.Create;
try
{Carrega o conteúdo do arquivo texto para a memória }
arquivo.LoadFromFile('c:\prod6.txt');
{Realiza um loop em toda a lista }
if not(SDSProd.Active) then
SDSProd.Open;
for i := 1 to arquivo.Count - 1 do
begin
SDSProd.Insert;
//Retira as aspas
SAspas := StringReplace(arquivo[i],'"','',[rfReplaceAll]);
//Troca Virgula por ponto e virgula
SVirgula := StringReplace(SAspas,',',';',[rfReplaceAll]);
//Troca ponto por virgula pois é o padrão decimal
SPonto := StringReplace(SVirgula,'.',',',[rfReplaceAll]);
if pos(';',SPonto) > 0 then
begin
posicao := pos(';',SPonto) - 1;
SDSProdCod.Value := StrToInt(Copy(SPonto,1, posicao));
Delete(SPonto,1, posicao + 1);
if pos(';',SPonto) > 0 then
begin
posicao := pos(';',SPonto) - 1;
SDSProddescp.Value := Copy(SPonto,1, posicao);
Delete(SPonto,1, posicao + 1);
end;
if pos(';',SPonto) > 0 then
begin
posicao := pos(';',SPonto) - 1;
SDSProdvendp.Value := StrToFloat(Copy(SPonto,1, posicao));
Delete(SPonto,1, posicao + 1);
end;
if pos(';',SPonto) > 0 then
begin
posicao := pos(';',SPonto) - 1;
SDSProdunip.Value := Copy(SPonto,1, posicao);
Memo1.Lines.Add(unip);
Delete(SPonto,1, posicao + 1);
end;
SDSProddatacp.Value := StrToDateTime(SPonto);
SDSProd.Post;
end;
end;
finally
SDSProd.ApplyUpDates(0);
{Libera a instancia da lista da memória }
FreeAndNil(arquivo);
end;
end; Atenciosamente Eriley
var
{Variável que recebe o conteúdo do arquivo texto }
arquivo: TStringList;
SAspas, SVirgula, SPonto: string;
i, posicao: Integer;
begin
{Instancia a variável arquivo }
arquivo := TStringList.Create;
try
{Carrega o conteúdo do arquivo texto para a memória }
arquivo.LoadFromFile('c:\prod6.txt');
{Realiza um loop em toda a lista }
if not(SDSProd.Active) then
SDSProd.Open;
for i := 1 to arquivo.Count - 1 do
begin
SDSProd.Insert;
//Retira as aspas
SAspas := StringReplace(arquivo[i],'"','',[rfReplaceAll]);
//Troca Virgula por ponto e virgula
SVirgula := StringReplace(SAspas,',',';',[rfReplaceAll]);
//Troca ponto por virgula pois é o padrão decimal
SPonto := StringReplace(SVirgula,'.',',',[rfReplaceAll]);
if pos(';',SPonto) > 0 then
begin
posicao := pos(';',SPonto) - 1;
SDSProdCod.Value := StrToInt(Copy(SPonto,1, posicao));
Delete(SPonto,1, posicao + 1);
if pos(';',SPonto) > 0 then
begin
posicao := pos(';',SPonto) - 1;
SDSProddescp.Value := Copy(SPonto,1, posicao);
Delete(SPonto,1, posicao + 1);
end;
if pos(';',SPonto) > 0 then
begin
posicao := pos(';',SPonto) - 1;
SDSProdvendp.Value := StrToFloat(Copy(SPonto,1, posicao));
Delete(SPonto,1, posicao + 1);
end;
if pos(';',SPonto) > 0 then
begin
posicao := pos(';',SPonto) - 1;
SDSProdunip.Value := Copy(SPonto,1, posicao);
Memo1.Lines.Add(unip);
Delete(SPonto,1, posicao + 1);
end;
SDSProddatacp.Value := StrToDateTime(SPonto);
SDSProd.Post;
end;
end;
finally
SDSProd.ApplyUpDates(0);
{Libera a instancia da lista da memória }
FreeAndNil(arquivo);
end;
end; Atenciosamente Eriley
GOSTEI 0
Odair Vavassori
05/08/2010
Ele só não copiou a 1ª linha do arquivo, mas o restante deu tudo certo a importação.
Muito obrigado pela ajuda Eriley
Abraços
Odair
GOSTEI 0
Eriley Barbosa
05/08/2010
É que o layout que tu postou não precisa importar a primeira linha:
cod Desc Val Unid Data
"1476","VESTIDO",0.00,"PÇ",05/12/2007
"1027","TOP",13.90,"PÇ",05/09/2007
"1528","BLUSA",32.00,"PÇ",07/01/2008
"1524","VESTIDO",0.00,"PÇ",05/12/2007
"1425","BLUSA",0.00,"PÇ",05/12/2007
"1028","BLUSA",29.90,"PÇ",05/09/2007
"1616","BLUSA",0.00,"PÇ",05/12/2007 Troque 1 por 0 no For: procedure TForm1.Button1Click(Sender: TObject);
var
{Variável que recebe o conteúdo do arquivo texto }
arquivo: TStringList;
SAspas, SVirgula, SPonto: string;
i, posicao: Integer;
begin
{Instancia a variável arquivo }
arquivo := TStringList.Create;
try
{Carrega o conteúdo do arquivo texto para a memória }
arquivo.LoadFromFile('c:\prod6.txt');
{Realiza um loop em toda a lista }
if not(SDSProd.Active) then
SDSProd.Open;
for i := 0 to arquivo.Count - 1 do
begin
SDSProd.Insert;
//Retira as aspas
SAspas := StringReplace(arquivo[i],'"','',[rfReplaceAll]);
//Troca Virgula por ponto r virgula
SVirgula := StringReplace(SAspas,',',';',[rfReplaceAll]);
//Troca ponto por virgula pois é o padrão decimal
SPonto := StringReplace(SVirgula,'.',',',[rfReplaceAll]);
if pos(';',SPonto) > 0 then
begin
posicao := pos(';',SPonto) - 1;
SDSProdCod.Value := StrToInt(Copy(SPonto,1, posicao));
Delete(SPonto,1, posicao + 1);
if pos(';',SPonto) > 0 then
begin
posicao := pos(';',SPonto) - 1;
SDSProddescp.Value := Copy(SPonto,1, posicao);
Delete(SPonto,1, posicao + 1);
end;
if pos(';',SPonto) > 0 then
begin
posicao := pos(';',SPonto) - 1;
SDSProdvendp.Value := StrToFloat(Copy(SPonto,1, posicao));
Delete(SPonto,1, posicao + 1);
end;
if pos(';',SPonto) > 0 then
begin
posicao := pos(';',SPonto) - 1;
SDSProdunip.Value := Copy(SPonto,1, posicao);
Delete(SPonto,1, posicao + 1);
end;
SDSProddatacp.Value := StrToDateTime(SPonto);
SDSProd.Post;
end;
end;
finally
SDSProd.ApplyUpDates(0);
{Libera a instancia da lista da memória }
FreeAndNil(arquivo);
end;
end; Atenciosamente Eriley
"1476","VESTIDO",0.00,"PÇ",05/12/2007
"1027","TOP",13.90,"PÇ",05/09/2007
"1528","BLUSA",32.00,"PÇ",07/01/2008
"1524","VESTIDO",0.00,"PÇ",05/12/2007
"1425","BLUSA",0.00,"PÇ",05/12/2007
"1028","BLUSA",29.90,"PÇ",05/09/2007
"1616","BLUSA",0.00,"PÇ",05/12/2007 Troque 1 por 0 no For: procedure TForm1.Button1Click(Sender: TObject);
var
{Variável que recebe o conteúdo do arquivo texto }
arquivo: TStringList;
SAspas, SVirgula, SPonto: string;
i, posicao: Integer;
begin
{Instancia a variável arquivo }
arquivo := TStringList.Create;
try
{Carrega o conteúdo do arquivo texto para a memória }
arquivo.LoadFromFile('c:\prod6.txt');
{Realiza um loop em toda a lista }
if not(SDSProd.Active) then
SDSProd.Open;
for i := 0 to arquivo.Count - 1 do
begin
SDSProd.Insert;
//Retira as aspas
SAspas := StringReplace(arquivo[i],'"','',[rfReplaceAll]);
//Troca Virgula por ponto r virgula
SVirgula := StringReplace(SAspas,',',';',[rfReplaceAll]);
//Troca ponto por virgula pois é o padrão decimal
SPonto := StringReplace(SVirgula,'.',',',[rfReplaceAll]);
if pos(';',SPonto) > 0 then
begin
posicao := pos(';',SPonto) - 1;
SDSProdCod.Value := StrToInt(Copy(SPonto,1, posicao));
Delete(SPonto,1, posicao + 1);
if pos(';',SPonto) > 0 then
begin
posicao := pos(';',SPonto) - 1;
SDSProddescp.Value := Copy(SPonto,1, posicao);
Delete(SPonto,1, posicao + 1);
end;
if pos(';',SPonto) > 0 then
begin
posicao := pos(';',SPonto) - 1;
SDSProdvendp.Value := StrToFloat(Copy(SPonto,1, posicao));
Delete(SPonto,1, posicao + 1);
end;
if pos(';',SPonto) > 0 then
begin
posicao := pos(';',SPonto) - 1;
SDSProdunip.Value := Copy(SPonto,1, posicao);
Delete(SPonto,1, posicao + 1);
end;
SDSProddatacp.Value := StrToDateTime(SPonto);
SDSProd.Post;
end;
end;
finally
SDSProd.ApplyUpDates(0);
{Libera a instancia da lista da memória }
FreeAndNil(arquivo);
end;
end; Atenciosamente Eriley
GOSTEI 0
Odair Vavassori
05/08/2010
Deu Certo
Obrigado pela força
Abraços
Odair
GOSTEI 0