Ola,

Tenho um formulario que consulta produtos com uma dbdrig e campos
de busca e ao clicar duas vezes no dbdrig eu tenho um comando que duplica os
dados da tabela e grava normal.

Porem se eu faço uma consulta no dbdrig antes, ele não grava, o que estou
fazendo errado.

Segue o comando de duplicar registros:


//Função para duplicar registros
procedure TfConsulta_Ent_NovaEdicao.DuplicaRegistroDataSet(
  dataSet: TCustomClientDataSet; recNo: integer;
  camposIgnorar: array of string);
  function IgnorarCampo(campo: string): boolean;
  var
    i: integer;
  begin
    Result := false;

    for i := 0 to Length(camposIgnorar) - 1 do
    begin
      if (camposIgnorar[i] = campo) then
      begin
         Result := true;
         Break;
      end;
    end;
  end;

var
  valores: Variant;
  i: integer;
  readOnly: boolean;
begin
  // Duplica o registro "recNo" de um dataset
  dataSet.RecNo := recNo;
  valores := VarArrayCreate([0, dataSet.FieldCount - 1],
                                            VarVariant);

  for i := 0 to (dataSet.FieldCount - 1) do
    valores[i] := dataSet.Fields[i].Value;

  dataSet.Insert;
  for i := 0 to (dataSet.FieldCount - 1) do
  begin
    if (not(IgnorarCampo(dataSet.Fields[i].FieldName)))
    then
    begin
      readOnly := dataSet.Fields[i].ReadOnly;
      dataSet.Fields[i].ReadOnly := false;

      dataSet.Fields[i].Value := valores[i];

      dataSet.Fields[i].ReadOnly := readOnly;
    end;
  end;
end;
E no botao de pesquisa tenho o comando:

// Pesquisa Código
   if campo_pesquisa.ItemIndex = 0 then
   begin
      dm.cdsProduto.Close;
      dm.cdsProduto.CommandText:='select * from produto where cod
like'+QuotedStr(texto_pesquisa.Text+'%');
      dm.cdsProduto.Open;
      if dm.cdsProduto.RecordCount = 0 then
         ShowMessage('Cadastro não encotrado');
   end;


Ao dar duplo clique no dbdrig ele abre a tela de cadastro de produtos com os
dados ja duplicados, porem como disse se usar a consulta ele nao grava.
-- 
Att

Eduardo Melo
3º Sistemas de Informação - Bacharelado
www.meloshospedagem.com.br


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

Responder a