Estou postando aqui uma rotina completa Marcio. Não preocupa em fazer ela
rodar não porque vai dar um monte de erro, mas presta atenção na sequencia
de código que começa com o comentario "// Começa a coleta de dados dos
valores das atividades da planília" e vai até o "// para pular coluna de
valor do serviço", é neste intervalo que eu pego os dados da planilha que
deve estar em formato texto separado por tabulações.



procedure TfmpNumPedido.btnImportClick(Sender: TObject);
const
//  CMEDICAOMATERIAL = '2.1.14';
//  CMEDICAOSERVICO = '2.1.09';
  CMEDICAOMATERIAL = '2.1.17';
  CMEDICAOSERVICO = '2.1.16';

//  CMEDICAOMATERIAL = '2.1.14';
//  CMEDICAOSERVICO = '2.1.09';
  CFATURAMENTOMATERIAL = '2.1.17';
  CFATURAMENTOSERVICO = '2.1.16';

var
  fb : file of byte;
  fi, fo, fr : textfile;
  line,
  preco,
  DadNumMedicao,
  DadNumNota,
  DadNumItem,
  DadNumPedido,
  DadPedItem,
  DadPedValor,
  BackupName,
  strLocate,
  strSelMov,
  strMov,
  fname : string;
(*$IFDEF DEBUG*)
  LinhaLog: String;
(*$ENDIF*)

  nprod, nrejected, nerror,
  iLenghtLine, i, j: integer;
  idmov  : integer;

  done : boolean;
  qryItensMov,
  qryMov, qrySelMov, qryLocate : TQuery;
begin
  if eFileName.Text = '' then
  begin
     MessageDlg('Você deverá selecionar um arquivo para proceder com a
importação', mtError, [mbOk], 0);
     eFileName.Setfocus;
     Exit;
  end;
  btnAbort.Visible := True;
  btnImport.Visible := False;
  DecimalSeparator := '.';
  ProgressBarImport.Min := 0;
  ProgressBarImport.Max := 0;
  ProgressBarImport.Position := 1;
  codfilial   := Param.Filial;
  StopProcess := False;
(*$IFDEF DEBUG*)
  assignfile(f, 'c:\temp\tstimpnumpedido.txt');
  rewrite(f);
  writeln(f, 'Numero de pedidos importados');
  writeln(f, 'Data da importação: ' + DateToStr(Now));
  writeln(f,'');
(*$ENDIF*)
  try
    ProgressBarImport.position := 0;
    assignfile(fb, eFileName.text);
    FileMode := 0;
    reset(fb);
    ProgressBarImport.max := FileSize(fb);
    closefile(fb);
  except
    Exit;
  end;
  try
    assignfile(fi, eFileName.text);
    {$i-} Reset(fi); {$i+}
    if ioresult <> 0 then
    begin
      MessageDlg('Erro ao abrir arquivo ' + eFileName.text + 'Erro: ' +
Exception(exceptobject).message, mtError, [mbOk], 0);
      exit;
    end;
    fmpNumPedido.Caption := 'Importanto arquivo ' + eFileName.text;
    CombStatusPlan.Enabled := False;
    chkMedicaoesFat.Enabled := False;
    fname := eFileName.text;
    i := length(fname);
    while (i > 1) and (fname[i] <> '.') do
      dec(i);
    fname := copy(fname, 1, i);
    //       and SERIE = 'MD'
    if iStatusPlan = 0 then
    begin
      strLocate := 'select CAMPOLIVRE2 from TMOV where CODFILIAL =
:CODFILIAL and CODCOLIGADA = :CODCOLIGADA and CODTMV in ("' +
CMEDICAOSERVICO + '","' + CMEDICAOMATERIAL + '") and SERIE = "MD" and
NUMEROMOV = :NUMEROMOV';
      if chkMedicaoesFat.Checked then
        strSelMov := 'select IDMOV from TMOV where CODFILIAL = :CODFILIAL
and CODCOLIGADA = :CODCOLIGADA and CODTMV in ("' + CMEDICAOSERVICO + '","' +
CMEDICAOMATERIAL + '") and SERIE = "MD" and NUMEROMOV = :NUMEROMOV and
STATUS = "F"'
      else
        strSelMov := 'select IDMOV from TMOV where CODFILIAL = :CODFILIAL
and CODCOLIGADA = :CODCOLIGADA and CODTMV in ("' + CMEDICAOSERVICO + '","' +
CMEDICAOMATERIAL + '") and SERIE = "MD" and NUMEROMOV = :NUMEROMOV and
STATUS = "A"';
    end
    else
    begin
      strLocate := 'select CAMPOLIVRE2 from TMOV where CODFILIAL =
:CODFILIAL and CODCOLIGADA = :CODCOLIGADA and CODTMV in ("2.2.01", "2.2.15")
and SERIE in ("U", "1") and NUMEROMOV = :NUMEROMOV';
      strSelMov := 'select IDMOV from TMOV where CODFILIAL = :CODFILIAL and
CODCOLIGADA = :CODCOLIGADA and CODTMV in ("2.2.01", "2.2.15") and SERIE in
("U", "1") and NUMEROMOV = :NUMEROMOV and STATUS = "F"';
    end;
    qryLocate := TQuery.Create(nil);
    qryLocate.DatabaseName := CorporeRM.DatabaseName;
    qryLocate.sql.Clear;
    qryLocate.sql.Add(strLocate);
    qryLocate.Prepare;
    qrySelMov := TQuery.Create(nil);
    qrySelMov.DatabaseName := CorporeRM.DatabaseName;
    qrySelMov.sql.Clear;
    qrySelMov.sql.Add(strSelMov);
    qrySelMov.Prepare;
    qryMov := TQuery.Create(nil);
    qryMov.DatabaseName := CorporeRM.DatabaseName;
    qryMov.sql.Clear;
    if iStatusPlan = 0 then
      qryMov.sql.Add('update TMOV set CAMPOLIVRE2 = :NUMPEDIDO where SERIE =
"MD" and CODFILIAL = :CODFILIAL and CODCOLIGADA = :CODCOLIGADA and IDMOV =
:IDMOV')
    else
      qryMov.sql.Add('update TMOV set CAMPOLIVRE2 = :NUMPEDIDO where SERIE
in ("U", "1") and CODFILIAL = :CODFILIAL and CODCOLIGADA = :CODCOLIGADA and
IDMOV = :IDMOV');

    qryMov.Prepare;
    qryItensMov := TQuery.Create(nil);
    qryItensMov.DatabaseName := CorporeRM.DatabaseName;
    qryItensMov.sql.Clear;
    qryItensMov.sql.Add('update TITMMOV set CAMPOLIVRE = :ITEM where
NUMEROSEQUENCIAL = :NUMEROSEQMOV and CODCOLIGADA = :CODCOLIGADA and IDMOV =
:IDMOV');
    qryItensMov.Prepare;
    readln(fi, line);
    // Começa a coleta de dados dos valores das atividades da planília
    while (not done) and (not Eof(fi)) and (not StopProcess) do
    begin
      readln(fi, line);
      iLenghtLine := length(Line);
      if (line <> '') then
      begin
        i := 0;
        j := 0;
        DadNumMedicao := '';
        DadNumNota := '';
        DadNumItem := '';
        DadNumPedido := '';
        DadPedItem := '';
        preco := '';
        DadPedValor := '0';
        btnAbort.Visible := True;
        btnImport.Visible := False;
        while i <= iLenghtLine do
        begin
         {
          while (i <= iLenghtLine) and (line[i] <> #$09) do // Pula o campo
Código da Atividades
            inc(i);
          while line[i] = #$09 do
            inc(i);
          while (i <= iLenghtLine) and (line[i] <> #$09) do  // Pula o campo
Código da Localidade
            inc(i);
          while line[i] = #$09 do
            inc(i);
          while (i <= iLenghtLine) and (line[i] <> #$09) do  // Pula o campo
Descrição
            inc(i);
          while line[i] = #$09 do
            inc(i);
         }
          while (i <= iLenghtLine) and (line[i] <> #$09) do    // Numero do
movimento/Medição
          begin
            if line[i] <> '' then DadNumMedicao := DadNumMedicao + line[i];
            inc(i);
          end;
          while line[i] = #$09 do
            inc(i);
          //
          if iStatusPlan = 1 then
          begin
            while (i <= iLenghtLine) and (line[i] <> #$09) do    // Numero
da Nota fiscal (somente para importação de pedidos já faturados)
            begin
              if line[i] <> '' then DadNumNota := DadNumNota + line[i];
              inc(i);
            end;
          while line[i] = #$09 do
            inc(i);
          end;
          //
          while (i <= iLenghtLine) and (line[i] <> #$09) do   // Sequência
do ítem
          begin
            if line[i] <> '' then DadNumItem := DadNumItem + line[i];
            inc(i);
          end;
          while line[i] = #$09 do
            inc(i);
          while (i <= iLenghtLine) and (line[i] in ['0'..'9', ',', '.',' '])
do   // Valor do ítem
          begin
              if line[i] in ['0'..'9',','] then DadPedValor := DadPedValor +
line[i];
              inc(i);
          end;
          while line[i] = #$09 do
            inc(i);
          while (i <= iLenghtLine) and (line[i] <> #$09) do   // Número do
pedido PC
          begin
            if line[i] <> '' then DadNumPedido := DadNumPedido + line[i];
            inc(i);
          end;
          while line[i] = #$09 do
            inc(i);
          while (i <= iLenghtLine) and (line[i] <> #$09) do    // Número do
ítem do pedido PC
          begin
            if line[i] <> '' then DadPedItem := DadPedItem + line[i];
            inc(i);
          end;
          while line[i] = #$09 do
            inc(i);
          inc(i);  // para pular coluna de valor do serviço
          inc(j);
          Application.ProcessMessages;
        end;
        if iStatusPlan = 0 then
          DadNumMedicao := SomenteDigitos(DadNumMedicao,6)
        else
          DadNumNota := SomenteDigitos(DadNumNota,6);
        Label5.Caption := '';
        try
          qryLocate.Close;
          qryLocate.ParamByName('CODFILIAL').AsInteger := codfilial;
          qryLocate.ParamByName('CODCOLIGADA').AsInteger :=
CorporeRM.Coligada;
          if iStatusPlan = 0 then
            qryLocate.ParamByName('NUMEROMOV').AsString := DadNumMedicao
          else
            qryLocate.ParamByName('NUMEROMOV').AsString := DadNumNota;

          qryLocate.Open;
          begin
            try
              qrySelMov.ParamByName('CODFILIAL').AsInteger := codfilial;
              qrySelMov.ParamByName('CODCOLIGADA').AsInteger :=
CorporeRM.Coligada;
              if iStatusPlan = 0 then
                qrySelMov.ParamByName('NUMEROMOV').AsString := DadNumMedicao
              else
                qrySelMov.ParamByName('NUMEROMOV').AsString := DadNumNota;

              qrySelMov.Open;
              if not qrySelMov.Eof then
              begin
                idmov := qrySelMov.FieldByName('IDMOV').AsInteger;
                Label5.Caption := DadNumPedido;
                //if qryLocate.FieldByName('CAMPOLIVRE2').AsString <>
DadNumPedido then
                //begin
                  try
                    qryMov.ParamByName('CODFILIAL').AsInteger := codfilial;
                    qryMov.ParamByName('NUMPEDIDO').AsString :=
DadNumPedido;
                    qryMov.ParamByName('CODCOLIGADA').AsInteger :=
CorporeRM.Coligada;
                    qryMov.ParamByName('IDMOV').AsInteger := idmov;
                    //
  (*$IFDEF DEBUG*)
                    if iStatusPlan = 0 then
                      LinhaLog := 'Medição lida: ' + DadNumMedicao + ';
Numero do PC gerado: ' + DadNumPedido
                    else
                      LinhaLog := 'Nota fiscal lida: ' + DadNumNota + ';
Numero do PC gerado: ' + DadNumPedido;
  (*$ENDIF*)
                    qryMov.ExecSQL;
                //end;
                  try
                    //
                    if iStatusPlan = 0 then
                       Label2.Caption := 'Importando o item ' + DadPedItem +
' da Medição nº: ' + DadNumMedicao
                    else
                       Label2.Caption := 'Importando o item ' + DadPedItem +
' da Nota Fiscal nº: ' + DadNumNota;
                    //
                    qryItensMov.ParamByName('ITEM').AsString := DadPedItem;
                    qryItensMov.ParamByName('NUMEROSEQMOV').AsString :=
DadNumItem;
                    qryItensMov.ParamByName('CODCOLIGADA').AsInteger :=
CorporeRM.Coligada;
                    qryItensMov.ParamByName('IDMOV').AsInteger := idmov;
(*$IFDEF DEBUG*)
                    LinhaLog := LinhaLog + '; Número do ítem PC gerado: ' +
DadPedItem;
(*$ENDIF*)
                    qryItensMov.ExecSQL;
                  except
                    nerror := 2501;
                    if MessageDlg('Ocorreu um erro durante a importação dos
dados. O arquivo de importação pode estar com algum erro ou a conexão com o
banco de dados foi perdida durante este processo. É recomendável você
cancelar esta importação e revisar o arquivo de origem.' + #$0a + #$0d +
#$0a + #$0d + exception(exceptobject).Message + #$0a + #$0d + #$0a + #$0d +
'Deseja prosseguir com a importação? ', mtError, [mbYes, mbNo], 0) = mrNo
then
                    begin
                     StopProcess := True;
                     qryItensMov.Close;
                    end;
(*$IFDEF DEBUG*)
                    LinhaLog := LinhaLog + exception(exceptobject).Message;
(*$ENDIF*)
                  end;
                except
                  nerror := 2501;
                  if MessageDlg('Ocorreu um erro durante a importação dos
dados. O arquivo de importação pode estar com algum erro ou a conexão com o
banco de dados foi perdida durante este processo. É recomendável você
cancelar esta importação e revisar o arquivo de origem.' + #$0a + #$0d +
#$0a + #$0d + exception(exceptobject).Message + #$0a + #$0d + #$0a + #$0d +
'Deseja prosseguir com a importação? ', mtError, [mbYes, mbNo], 0) = mrNo
then
                  begin
                   StopProcess := True;
                   qryMov.Close;
                  end;
(*$IFDEF DEBUG*)
                  LinhaLog := exception(exceptobject).Message;
(*$ENDIF*)
                end;
              end;
              qrySelMov.Close;
            except
             nerror := 2502;
             if MessageDlg('Ocorreu um erro ao conectar com o banco de
dados. A conexão pode ter sido perdida devido a um erro de rede. É
recomendável você cancelar esta importação e revisar a conexão com a base de
dados.'+ #$0a + #$0d + #$0a + #$0d + exception(exceptobject).Message + #$0a
+ #$0d + #$0a + #$0d + 'Deseja prosseguir com a importação?', mtError,
[mbYes, mbNo], 0) = mrNo then StopProcess := True;
            end;
          end;
        except
          nerror := 2502;
          if MessageDlg('Ocorreu um erro ao conectar com o banco de dados. A
conexão pode ter sido perdida devido a um erro de rede. É recomendável você
cancelar esta importação e revisar a conexão com a base de dados.'+ #$0a +
#$0d + #$0a + #$0d + exception(exceptobject).Message + #$0a + #$0d + #$0a +
#$0d + 'Deseja prosseguir com a importação?', mtError, [mbYes, mbNo], 0) =
mrNo then StopProcess := True;
        end;
      end;

(*$IFDEF DEBUG*)
      writeln(f, LinhaLog);
(*$ENDIF*)
      ProgressBarImport.StepBy(iLenghtLine + 2);
      Application.ProcessMessages;
    end;
  finally
    MessageDlg('Importação finalizada', mtInformation, [mbOk], 0);
    //
    CloseFile(fi);
    qryMov.UnPrepare;
    qryItensMov.UnPrepare;
    if nerror <> 2502 then qrySelMov.UnPrepare;
    FreeAndNil(qryMov);
    FreeAndNil(qryItensMov);
    FreeAndNil(qrySelMov);
    btnAbort.Visible := False;
    btnImport.Visible := True;
    CombStatusPlan.Enabled := True;
    chkMedicaoesFat.Enabled := True;
    ProgressBarImport.Position := 0;
    Label5.Caption := '';
    Label2.Caption := '';
    //
(*$IFDEF DEBUG*)
    closefile(f);
(*$ENDIF*)
    //
    if not StopProcess then
    begin
      //
      BackupName := ExtractFileName(eFileName.text);
      BackupName := ChangeFileExt(BackupName, '.old');
      if not RenameFile(eFileName.text, BackupName) then
        raise Exception.Create('Não foi possível renomear o arquivo já
importado!');
      //
    end;
    //
  end;
end;

[]s

Walter Alves Chagas Junior
Projeto e desenvolvimento de sistemas
Telemont Engenharia de telecomunicações S/A
Belo Horizonte - MG - Brasil
[EMAIL PROTECTED]
Fone: (31) 3389-8215 Fax: (31) 3389-8200


-----Mensagem original-----
De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED]
nome de MarcioCC©
Enviada em: terça-feira, 23 de maio de 2006 10:06
Para: delphi-br@yahoogrupos.com.br
Assunto: Re: [delphi-br]Itabyte®-Importar do Excel p/ Delphi - Obrigado


Se você puder me enviar agradeça muito , outra pergunta :
Por acaso se sabe como faço via delphi para bloquear o msn e alguns sites da
net como orkut, playboy , sex e tal ??

JESUS TE AMA !!!

----- Original Message -----
From: "Walter Alves Chagas Junior" <[EMAIL PROTECTED]>
To: <delphi-br@yahoogrupos.com.br>
Sent: Monday, May 22, 2006 11:01 AM
Subject: RES: [delphi-br]Itabyte®-Importar do Excel p/ Delphi - Obrigado


Marcio, eu faço muito disto aqui mas eu converto a planílha primeiro pra TXT
separado por tabulações. Se o exemplo servir eu te passo ele.

[]s

Walter Alves Chagas Junior
Projeto e desenvolvimento de sistemas
Telemont Engenharia de telecomunicações S/A
Belo Horizonte - MG - Brasil
[EMAIL PROTECTED]
Fone: (31) 3389-8215 Fax: (31) 3389-8200


-----Mensagem original-----
De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED]
nome de MarcioCC©
Enviada em: segunda-feira, 22 de maio de 2006 09:35
Para: delphi-br@yahoogrupos.com.br
Assunto: Re: [delphi-br]Itabyte®-Importar do Excel p/ Delphi - Obrigado


Bom dia como você fez para fazer a importaçao do excel para o banco?? Daria
para enviar o exemplo ..obrigado!!!

JESUS TE AMA !!!
----- Original Message -----
From: "Nesio Messias" <[EMAIL PROTECTED]>
To: <delphi-br@yahoogrupos.com.br>
Sent: Friday, May 19, 2006 11:09 AM
Subject: Re: [delphi-br] Importar do Excel p/ Delphi - Obrigado



Valeu pessoal deu certo....obrigado...
__________________________________________________
Faça ligações para outros computadores com o novo Yahoo! Messenger
http://br.beta.messenger.yahoo.com/

[As partes desta mensagem que não continham texto foram removidas]



--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>



Links do Yahoo! Grupos













--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>



Links do Yahoo! Grupos









[As partes desta mensagem que não continham texto foram removidas]



--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>



Links do Yahoo! Grupos













--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>



Links do Yahoo! Grupos









[As partes desta mensagem que não continham texto foram removidas]



--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

<*> Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

<*> Para falar com o moderador, envie um e-mail para:
    [EMAIL PROTECTED]



Yahoo! Grupos, um serviço oferecido por:
PUBLICIDADE


Links do Yahoo! Grupos

Responder a