Componente ADO Link Master/Detail - Rolagem de registros na ordem inversa 2
13/05/2020
0
Delphi 10.3, Windows 10 x32
Preciso de ajuda porque isto acontece. Deveria ocorrer o disparo do evento AfterScroll na ordem em que rola os registros de mestre para os detalhes. Isto não está ocorrendo
O experimento de como foi feito para reproduzir e só assim poderão me ajudar:
1) Coloque um componente ADOConnection e ligue este a um banco de dados sql server.
2) Coloque 2 componentes ADODataSet (ADODataSet1 e ADODataSet2)
3) Coloque 1 componente DataSource (DataSource1)
4) No componente ADODataSet1 (ligue alguma tabela mestre)
5) No componente DataSource1 ligue ao ADODataSet1
5) No componente ADODataSet2 (ligue alguma tabela relacionada com a mestre)
6) No componente ADODataSet2 (coloque no campo Datasource o componente DataSource1)
7) Crie para cada um um evento Aftescroll para ADODAtaSet1 e ADODataSet2
8) coloque pontos de parada em cada evento
Agora a segunda etapa:
9) No formulário coloque dois botões. Um deles ADODataSet1.Prev e no outro ADODataSet1.Next para fazer a rolagem
10) coloque no form no evento OnShow a abertura de conexão com o banco de dados, a abertura do ADODataSet1 e ADODataSet2, nesta ordem.
11) Rode a aplicação
Resultados:
1) Ao abrir cada tabela, ira disparar por vez o evento AfterScroll do ADODataSet1 e depois o ADODataSet2. Até ai tudo bem. e se esperaria isto mesmo. Para cada tabela que abre, dispara este evento.
Agora a parte que parece um bug:
1) Role o registro para o próximo e ira perceber que dispara primeiro o evento do ADODataSet2 ao invés do ADODataSet1. como o ADODataSet2 está ligado ao ADODataSet1 deveria disparar o afterscroll do ADODAtaSer1 e depois o ADODataSet2, mas ocorre o contrário e isto não está certo, pois quem inicia a primeira rolagem deveria ser o máster e depois o detail.
Alguém sabe o que está ocorrendo e como se pode fazer para contornar isto?
Preciso de ajuda porque isto acontece. Deveria ocorrer o disparo do evento AfterScroll na ordem em que rola os registros de mestre para os detalhes. Isto não está ocorrendo
O experimento de como foi feito para reproduzir e só assim poderão me ajudar:
1) Coloque um componente ADOConnection e ligue este a um banco de dados sql server.
2) Coloque 2 componentes ADODataSet (ADODataSet1 e ADODataSet2)
3) Coloque 1 componente DataSource (DataSource1)
4) No componente ADODataSet1 (ligue alguma tabela mestre)
5) No componente DataSource1 ligue ao ADODataSet1
5) No componente ADODataSet2 (ligue alguma tabela relacionada com a mestre)
6) No componente ADODataSet2 (coloque no campo Datasource o componente DataSource1)
7) Crie para cada um um evento Aftescroll para ADODAtaSet1 e ADODataSet2
8) coloque pontos de parada em cada evento
Agora a segunda etapa:
9) No formulário coloque dois botões. Um deles ADODataSet1.Prev e no outro ADODataSet1.Next para fazer a rolagem
10) coloque no form no evento OnShow a abertura de conexão com o banco de dados, a abertura do ADODataSet1 e ADODataSet2, nesta ordem.
11) Rode a aplicação
Resultados:
1) Ao abrir cada tabela, ira disparar por vez o evento AfterScroll do ADODataSet1 e depois o ADODataSet2. Até ai tudo bem. e se esperaria isto mesmo. Para cada tabela que abre, dispara este evento.
Agora a parte que parece um bug:
1) Role o registro para o próximo e ira perceber que dispara primeiro o evento do ADODataSet2 ao invés do ADODataSet1. como o ADODataSet2 está ligado ao ADODataSet1 deveria disparar o afterscroll do ADODAtaSer1 e depois o ADODataSet2, mas ocorre o contrário e isto não está certo, pois quem inicia a primeira rolagem deveria ser o máster e depois o detail.
Alguém sabe o que está ocorrendo e como se pode fazer para contornar isto?
Guilherme Wiethaus
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)