GARANTIR DESCONTO

Fórum converter as informações de um arquivo txt para o mysql.. #382900

05/08/2010

0

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

Odair Vavassori

Responder

Posts

05/08/2010

Eriley Barbosa

Rotina pronta não tem, mas passe o nome do seu simpledataset usado para inserir e o nome dos campos.   Atenciosamente   Eriley
Responder

Gostei + 0

05/08/2010

Odair Vavassori

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
Responder

Gostei + 0

06/08/2010

Eriley Barbosa

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
Responder

Gostei + 0

06/08/2010

Odair Vavassori

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
Responder

Gostei + 0

06/08/2010

Eriley Barbosa

É 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
Responder

Gostei + 0

06/08/2010

Odair Vavassori

Deu Certo Obrigado pela força Abraços Odair
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar