PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Como Editar dados do banco de dados direto de um LookupComboBox #469310

08/02/2014

0

Olá Pessoal,

Eu tenho uma tabela chamada CARGO onde contém os seguinte campos: ID_CARGO, NOME.
O meu LookupComboBox lista os nomes (ou seja o listfield esta o campo nome).
Os outros campos do LookupComboBox estão:
-listSource - dtsCargoLkp
-keyfield - ID_CARGO
-datasource - dtsCadastrar
-datafield - ID_CARGO
E o que eu quero fazer é que quando o usuário selecionar um nome vai ter um botão ao lado chamado Editar Cargo, onde quando ele clicar ali vai abrir uma Janela Modal com todos os campos dessa janela ja preenchidos com os seus respectivos valores (ou seja o ID e o NOME), e quando ele clicar no botao Salvar a Edição seja feita e no LookupComboBox passe a aparecer o campo editado (eu entendo que isso é só questao de fechar e abrir o datasource).
Vale consta que eu já tenho a Janela Modal criada e que minha unica dificuldade é no código para fazer a Edição.
Eu já tentei desta maneira porém ele da o seguinte erro
Maneira, o Params[0] tem como parametro o '0 - id':
procedure TF_FormFuncionario.btnAlterarCargoClick(Sender: TObject);
var
  t:Integer;
begin
  with TClientDataSet(dtsCadastrar.DataSet) do
  begin
    Close;
      Params[0].AsInteger :=  lkpCargo.DataSource.DataSet.FieldByName(lkpCargo.KeyField).Value;
    Open;
    Edit;
  end;
  F_FormCargoAlterar.showmodal;
end;


Erro:
Project CMS.exe raised exception class EVariantTypeCastError with message 'Could not convert variant of type (Null) into type (Integer)'.


Eu já fiz desta forma com um DBGrid e funcionou perfeitamente o problema é que agora eu quero fazer com um LookupComboBox.
procedure TF_FormFuncionario.btnAlterarCargoClick(Sender: TObject);
begin
  with TClientDataSet(dtsCadastrarCargo.DataSet) do
  begin
    Close;
    Params[0].AsInteger := TClientDataSet(dtsConsultar.DataSet).Fields[0].AsInteger;
    Open;
    Edit;
  end;
end;


Estou precisando muito resolver esse problema qualquer ajuda será muito bem vinda! Desde já Agradecido!
Edson Vilhalba

Edson Vilhalba

Responder

Posts

08/02/2014

Edson Vilhalba

Resolvi galera eu estava fazendo um erro bobo eu dentro do TClientDataSet estava com o dts errado. E o codigo que eu utilizei para fazer isso caso alguem precise foi este.
procedure TF_FormFuncionario.btnAlterarCargoClick(Sender: TObject);
var
  t:Integer;
begin
  with TClientDataSet(dtsCadastrarCargo.DataSet) do
  begin
    Close;
      Params[0].AsInteger :=  lkpCargo.ListSource.DataSet.FieldByName(lkpCargo.KeyField).Value;
    Open;
    Edit;
  end;
  F_FormCargoAlterar.showmodal;
end;

Responder

Gostei + 0

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

Aceitar