Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Aprendizporumavida

posição do select atribuido a outra query

Recommended Posts

Bom dia pessoal,

 

Seguinte, eu tenho duas query, ao realizar um select com uma eu tenho 3 registros, e esses registros são exibidos em dbedits,

e também uso como padrão o mesmo tipo de select com a outra query que também me retorna 3 registros..

no entanto na segunda query são exibidas em dbgrid..lembrando que ambos select estão na mesma tabela.

 

O problema é que os dbedits estão presos em um navigator, eu movimento os edits mas o grid fica parado o focu no primeiro registro

retornado pelo select.

 

o que eu gostaria de sabe é se tem como eu dizer para a 2ª query focar o registro que está focado na 1ª.

 

Algo parecido com isto. posição do focu da 2ª recebe a posição do focu da 1ª

 

query2.position := query1.position

 

obrigado desde já pessoal..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se a intenção é fazer com que apareçam os mesmo dados no DBEdit e no DBGrid, então seria interessante que você colocasse o DBGrid com o mesmo DATASOURCE que os DBEdits...

No caso, se os campos são da mesma tabela, pq não coloca todos eles apenas em 1 query e exibe os 3 que desejar nos DBEdits e os demais no grid???

 

Em meu pensamento esse procedimento seria melhor... evitaria menos transtornos e melhor performance, pois você efetuaria apenas 1 consulta...

 

Flw!!! http://forum.imasters.com.br/public/style_emoticons/default/natal_smile.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim eu fiz desta forma, realmente fica bem melhor..

No entanto, se eu linkar o dbedits e o dbgrid no mesmo data source, quando esta em modo de inserção, ex: se digito algo em um campo dbedit, ao pressionar tab, ele já atribui o valor ao dbgrid, e estéticamente não fica legar, informar valor no dbedit pressionar tab e o mesmo aparecer no grid, o ideal seria aparecer somente depois de gravar ou cancelar..e não antes disso.

 

Se souberem como posso fazer para evitar isto, agradeço desde já..

 

obrigado pessoal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No Evento AfterScroll da query1 coloque o comando para setar o mesmo registro na query2...

 

Posicionar a query2 no mesmo registro que a query1...

 

Tipo isso... ai você adapta ai....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ou você REFAZ o select na QUERY2 Adicionando o filtro para relacionar a Query2 com a Query1....

 

 

 

ou você usa métodos para filtrar a query...

 

Como o LOCATE, FILTER... ai vai do seu gosto...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu já tenho uma procedure chamada pAtualizaGrid, que chamo no after scroll da query 1

 

Tudo que acontece na query 1 é refletido na query 2(grid) no entanto a seta que posiciona qual registro esta setado no grid não

acompanha o que está setado nos dbedits..

é que se tenho 3 registros nos debedis, também terei no grid, mas o que não consigo é fazer setar no grid o mesmo que está no dbedits

 

ou seja os registros movimentam nos dbedits, mas ficam parados no grid, embora sejam os mesmos em ambas queys..

 

o que não consigo é dizer isto em código..

 

query2.DataSetField.FocusControl := query1t.DataSetField.FocusControl;

 

é algo parecido com isto que preciso..mas não isto, porque deste jeito não funciona.

 

A lógica eu tenho em mente, só preciso de um help para transformar em código.

 

Obrigado..hugo..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixe me ver se eu entendi...

 

 

Vamos supor que você tenha:

 

Edit Campo

DBEdtNome Nome

DBEdtCidade Cidade

DBEdtEstado Estado

 

 

 

Você quer que quando o DBEdtNome receba o foco o grid seja posicionado na coluna do mesmo campo que o DBEdtNome representa? No caso o campo nome???

 

Ou deseja que a informação mostrada nos DBEdits seja a mesma que no Grid???

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que desejo é que a informação mostrada nos DBEdits seja a mesma que no Grid, pois tenho um dbnavigator, ele movimenta os registros dos dbedits, mas embora a quantidade e os dados que tenho no grid sejam os mesmos que no dbedits

não é movimentado no grid.

 

Ex:

 

Tenho os campos e os valores no dbedits

 

DBedtcodigo codigo 1 2 3

DBEdtNome Nome 'carlos' 'pedro' 'ANA'

DBEdtCidade Cidade 'são paulo' 'BH' 'Rio Janeiro'

DBEdtEstado Estado 'sp' 'MG' 'RJ'

 

 

e tenho os mesmos campos e os valores no grid

 

DBedtcodigo codigo 1 2 3

DBEdtNome Nome 'carlos' 'pedro' 'ANA'

DBEdtCidade Cidade 'são paulo' 'BH' 'Rio Janeiro'

DBEdtEstado Estado 'sp' 'MG' 'RJ'

 

 

Mas quem esta ligado ao navigator é os dbedits e não o grid.

 

por exemplo, se clico no navigator > ele sai do registro 1 e vai para o 2 nos dbedits

mas no grid fica ainda setado com a linha marcada o registro 1.

 

o que preciso é que quando movimentar os registros nos dbedits, movimentem tamém no grid setando(selecionando) a linha que está sendo exibida nos dbedits.

 

é como se eu estivesse usando a mesma query e data source para os dbedits e grid, só não estou utilizando assim pelo fato exposto anteriormente..

 

Se souber como posso resolver isto..

 

Obrigado mesmo hugo..

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta algo do tipo:

procedure TForm1.Query1AfterScroll(DataSet: TDataSet);
begin
  Query2.Locate('CampoChave',Query1CampoChave.Value,[]);
end;

 

MAs lembre de substituir CampoChave pelo seu campo que é chave primária...e adaptar a sua necessidade esse código...

 

Flw aew! http://forum.imasters.com.br/public/style_emoticons/default/natal_smile.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.