Fórum Ordenação de registros de estrutura mestre/detalhe #279184
27/04/2005
0
olá pessoal
gostaria de uma dica/idéia.
tenho uma estrtura mestre/detalhe.
na tabela detalhe eu tenho um campo SEQ - que é um campo integer.
na tela tenho dois grids. Acima o Grid com a tabela mestre e no grid2 abaixo tenho a tabela detalhe ligada pelo Mastersource.
o que preciso é que o campo SEQ da tabela detalhe seja um campo de ´ordenação´ dos registros.
por exemplo, ao cadastrar na tabela detalhe fica assim:
TblDetalhe (a ordem de exibição é o campo SEQ)
eu gostaria de ter ao lado do GRIDdetalhe dois botões: ´acima´ e ´abaixo´, que ao clicar neles mudasse automaticamente a ordem do ítem selecionado.
exemplo: se eu estiver com o item 1089 - SEQ2 selecionado e clicar no botão ´acima´, o valor do seu campo SEQ recebe 1 , e o registro 1052 passa de SEQ 1 para SEQ 2...
alguem teria um exemplo ou poderia me dar uma ajuda?
abraço
Diogo
gostaria de uma dica/idéia.
tenho uma estrtura mestre/detalhe.
na tabela detalhe eu tenho um campo SEQ - que é um campo integer.
na tela tenho dois grids. Acima o Grid com a tabela mestre e no grid2 abaixo tenho a tabela detalhe ligada pelo Mastersource.
o que preciso é que o campo SEQ da tabela detalhe seja um campo de ´ordenação´ dos registros.
por exemplo, ao cadastrar na tabela detalhe fica assim:
TblDetalhe (a ordem de exibição é o campo SEQ)
Cd_Item | Ds_item | Qtde |SEQ 1052 Grampos 20 1 1089 Lapiseira 04 2 1034 Canetas 02 3
eu gostaria de ter ao lado do GRIDdetalhe dois botões: ´acima´ e ´abaixo´, que ao clicar neles mudasse automaticamente a ordem do ítem selecionado.
exemplo: se eu estiver com o item 1089 - SEQ2 selecionado e clicar no botão ´acima´, o valor do seu campo SEQ recebe 1 , e o registro 1052 passa de SEQ 1 para SEQ 2...
alguem teria um exemplo ou poderia me dar uma ajuda?
abraço
Diogo
Diogoalles
Curtir tópico
+ 0
Responder
Posts
28/04/2005
Raserafim
diogoalles, a lógica da resolução deste problema poderia ser o seguinte:
al clicar no botão ´acima´ o registro selecionado trocar de valor SEQ com o registro de cima e vice-versa. na prática seiria, o valor SEQ do registro selecionado receberia o seu próprio valor diminuído de 1; e o registro anterior receberia o valor de SEQ acrescido de 1.
Mas para conseguir isso voa código agente pode fazer o seguinte:
al clicar no botão ´acima´ o registro selecionado trocar de valor SEQ com o registro de cima e vice-versa. na prática seiria, o valor SEQ do registro selecionado receberia o seu próprio valor diminuído de 1; e o registro anterior receberia o valor de SEQ acrescido de 1.
Mas para conseguir isso voa código agente pode fazer o seguinte:
procedure ....acima... var Cod, Sequen: Integer; begin Cod := Query.Cd_Item.Value; Sequen := Query.SEQ.value; Query.Locate(´SEQ´, Sequen - 1, [loCaseInsensitive]); Query.Edit; Query.SEQ.Value := Sequen; Query.Post; Query.Locate(´Cd_Item´, Cod, [loCaseInsensitive]); Query.Edit; Query.SEQ.Value := Sequen - 1; Query.Post; Query.Close; Query.Open; end;
procedure ....abaixo... var Cod, Sequen: Integer; begin Cod := Query.Cd_Item.Value; Sequen := Query.SEQ.value; Query.Locate(´SEQ´, Sequen + 1, [loCaseInsensitive]); Query.Edit; Query.SEQ.Value := Sequen; Query.Post; Query.Locate(´Cd_Item´, Cod, [loCaseInsensitive]); Query.Edit; Query.SEQ.Value := Sequen + 1; Query.Post; Query.Close; Query.Open; end;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)