Locate em 2 clientdataset ligado a 1 tabela.

Delphi

03/12/2013

Bom dia,

Eu tenho um plano de contas com 2 clientdatasets um para os planos à receber e outro para os planos à pagar, no evento onclick de cada dbTreeView eu coloquei o seguinte código.

Na treeview à receber.
  codigo := dsPlanoContasReceber.DataSet.FieldByName('PLANOCONTASID').AsInteger;


Na treeview à pagar.

  codigo := dsPlanoContasPagar.DataSet.FieldByName('PLANOCONTASID').AsInteger;


E quando eu clico no botão alterar.

ds.DataSet.Locate('PLANOCONTASID', codigo, []);


Só que quando é um plano a receber que eu tenho que editar ele altera tranquilo e quando é um à pagar ele pega o código mas não localiza pra mim.
Nícolas Braz

Nícolas Braz

Curtidas 0

Respostas

Vander Ferraz

Vander Ferraz

03/12/2013

Não entendi direito seu problema, você usa um botão alterar para os dois datasets?
GOSTEI 0
Nícolas Braz

Nícolas Braz

03/12/2013

Bom dia,

Essa é a minha tela de plano de contas.

http://imageshack.us/photo/my-images/96/k1xc.jpg/

O que eu tentei explicar na imagem é que essa tela possui 3 ClientDatasets 1 que basicamente dá um * from e os outros dois que como parametros filtram os planos de despesas e os planos de receitas.

O que eu estou tentando fazer, quando o usuário clicar em algum plano de qualquer uma das duas colunas uma variavel irá receber o valor da chave primária da tabela e quando eu clicar em alterar ou excluir ele receber esse valor só alterando o registro seleciona.
GOSTEI 0
Nícolas Braz

Nícolas Braz

03/12/2013

O que está acontecendo é o seguinte:

Quando eu clico em um plano de contas do tipo Receitas ele pega o código (eu ativei um showmessage para ver quem está ficando na minha variavel).

https://imageshack.com/i/jttky5p

E quando clico em alterar. (coloquei um edit para mostrar o código que está o registro e ele conseguiu localizar o registro com sucesso).

https://imageshack.com/i/0yyjfcp

Agora eu clico em um plano de contas do tipo Despesas (não precisa ser nessa ordem de qualquer forma ele não consegue abrir o plano de contas a pagar).

https://imageshack.com/i/nrrkzpp

Ele pegou com sucesso o código! mas quando eu clico no alterar acontece isso.

https://imageshack.com/i/f2iz3bp

Ele vai para o primeiro registro!!!

O código do meu botão alterar é esse.

  if codigo = 0 then
  begin
    ShowMessage('Selecione um registro para alterar.');
    Abort;
  end
  else
  begin
    ds.DataSet.Locate('PLANOCONTASID', codigo, []);
    tipo := ds.DataSet.FieldByName('TIPO').AsString;
    ShowMessage (intToStr(Codigo));
    inherited;
GOSTEI 0
Marcos Saffran

Marcos Saffran

03/12/2013

Olá Nicolas,

olhando suas imagens vi que na imagem https://imageshack.com/i/nrrkzpp, o campo selecionado de receitas é o primeiro, mas como você deseja que seja mostrado o de receitas verifique qual dataset o botão alterar está buscando, acredito que seja o de despesas.
GOSTEI 0
Vander Ferraz

Vander Ferraz

03/12/2013

Não é isso, ele está trabalhando com três datasets, e alimentando a variavel codigo, deveria funcionar, vou tentar simular aqui pra ver o que pode estar errado.
GOSTEI 0
POSTAR