Fórum Locate em 2 clientdataset ligado a 1 tabela. #462908
03/12/2013
0
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
Curtir tópico
+ 0Posts
04/12/2013
Vander Ferraz
Gostei + 0
04/12/2013
Nícolas Braz
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
06/12/2013
Nícolas Braz
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
06/12/2013
Marcos Saffran
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
07/12/2013
Vander Ferraz
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)