Hallo, Jimmy -
SQL ist nicht DBF.
dbSetRelation() hat eigentlich keine SQL-Entsprechung.
Unterstellen wir mal folgende Tabellen:
Tabelle A:
Code: Alles auswählen
+----------+------------+
! ID ! Datum !
! 1 ! 02.03.2018 !
! 2 ! 02.03.2018 !
+----------+------------+
Code: Alles auswählen
+----------+------------+
! ID ! Anhang !
! 1 ! ABCDEFGHIJ !
! 1 ! BCDEFGHIJK !
! 2 ! CDEFGHIJKL !
+----------+------------+
Ein dbSetRelation() liefert Dir eine Verbindung mit dem 1. gefundenen Satz in der Child-Tabelle:
Code: Alles auswählen
+----------+------------+------------+
! ID ! Datum ! Anhang !
! 1 ! 02.03.2018 ! ABCDEFGHIJ !
! 2 ! 02.03.2018 ! CDEFGHIJKL !
+----------+------------+------------+
Dahingegen liefert ein SELECT * FROM tablea LEFT JOIN tableb ON tablea.id = tableb.id folgendes Ergebnis:
Code: Alles auswählen
+----------+------------+------------+
! ID ! Datum ! Anhang !
! 1 ! 02.03.2018 ! ABCDEFGHIJ !
! 1 ! 02.03.2018 ! BCDEFGHIJK !
! 2 ! 02.03.2018 ! CDEFGHIJKL !
+----------+------------+------------+
DBF verhält sich "anders", da der Fokus auf der ersten Tabelle liegt, wird halt erst einmal der erste Treffer in der zweiten Tabelle gesucht and bereitgestellt, während SQL direkt ein komplettes Ergebnis (result set) liefert.
Da Du bei SQL aber den Satz mit der ID 1 aus tablea nur einmal im Browse sehen willst, musst Du also für beide Browses ein eigenes result set verwenden, wobei das zweite immer dann aktualisiert werden muss, wenn die Bewegung im ersten Browse auf einem Datensatz zur Ruhe gekommen ist.
Da ich ein solches Konstrukt noch nicht eingesetzt habe, kann ich Deine Frage
die beiden SELECT sind soweit klar. aber wann/wie starte ich die 2nd Anfrage ...
leider nicht beantworten.
Die Frage
also das ganze dann mit einer neuen Connection im Thread
verstehe ich nicht ganz. Von daher kann meine Antwort auch falsch sein. Die Connection ist die Verbindung vom Programm zum SQL-Server. Auf dieser Connection kannst Du beliebig viele SQL Queries laufen lassen. Du brauchst also für das zweite result set keine neue Connection. Du solltest jedoch daran denken, nicht mehr benötigte result sets zu schliessen. Bei Hector's Klasse wäre das dann ein :close() bei Verwendung der MyResult()-Klasse.