Componente ADO Link Master/Detail - Rolagem de registros na ordem inversa 2

Delphi

13/05/2020

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?
Guilherme Wiethaus

Guilherme Wiethaus

Curtidas 0
POSTAR