Bom dia pessoal, Estou com um problema no While, é o seguinte tenho um sistema com delphi 2006 Dbexpress + SQL server. Estou conectando no meu banco e fazendo um select em minha tabela de pedidos, e jogando para um dbgrid. No DblClick do primeiro DB grid ... Eu jogo o registro selecionado para um clientDataSet temporario ... que esta ligando a um 2º datasource .. e ligando a um 2º datasource....
É para o usuario ir selecionando todas as linhas do que ele precisa do Dbgrid1 ....que depois irei jogar em uma tabela definitiva .... Agora vem o problema .... criei o loop, porem ele não esta parando ... entra no loop e não sai mais .. alguem pode ajudar ... segue o codigo: procedure TfrmApontPedido.DBGrid1DblClick(Sender: TObject); begin while cdsTemp.Eof do begin if (cdsTemp.FieldByName('CodProduto').AsString <> dmApontPTK.cdsPedidoCodproduto.Value) Then begin //Insert cdsTemp.Active := true; cdsTemp.Insert; cdsTemp.FieldByName('VndPedido').AsInteger := dmApontPTK.cdsPedidoVndpedido.Value; cdsTemp.FieldByName('Complemento').AsString := dmApontPTK.cdsPedidoComplemento.Value; cdsTemp.FieldByName('DataPedido').AsDateTime := dmApontPTK.cdsPedidoDatapedido.AsDateTime; cdsTemp.FieldByName('DataEntrega').AsDateTime := dmApontPTK.cdsPedidoDataEntrega.AsDateTime; cdsTemp.FieldByName('CodNatOpe').AsInteger := dmApontPTK.cdsPedidoCodNatOpe.Value; cdsTemp.FieldByName('Situacao').AsInteger := dmApontPTK.cdsPedidoSituacao.Value; cdsTemp.FieldByName('CodTipoProd').AsInteger := dmApontPTK.cdsPedidoCodTipoProd.Value; cdsTemp.FieldByName('CodMarca').AsString := dmApontPTK.cdsPedidoCodMarca.Value; cdsTemp.FieldByName('CodProduto').AsString := dmApontPTK.cdsPedidoCodProduto.Value; cdsTemp.FieldByName('CodTamanho').AsString := dmApontPTK.cdsPedidoCodTamanho.Value; cdsTemp.FieldByName('PrecoVenda').AsInteger := dmApontPTK.cdsPedidoPrecoVenda.AsInteger; cdsTemp.FieldByName('QtdePedida').AsInteger := dmApontPTK.cdsPedidoQtdePedida.AsInteger; cdsTemp.FieldByName('QtdeEntregue').AsInteger := dmApontPTK.cdsPedidoQtdeEntregue.AsInteger; cdsTemp.FieldByName('Qtdecancelada').AsInteger := dmApontPTK.cdsPedidoQtdecancelada.AsInteger; cdsTemp.FieldByName('Usuario').AsString := dmApontPTK.cdsPedidoUsuario.Value; cdsTemp.FieldByName('DtRec').AsDateTime := dmApontPTK.cdsPedidoDtRec.AsDateTime; cdsTemp.Next; end else Begin ShowMessage('Produto ja cadastrado'); end; end; end; Abraços, [As partes desta mensagem que não continham texto foram removidas]