Bonjour à tous!
J'ai un petit problème de filtrage pour mes DBLookupComboBox.
J'en ai trois (dans l'ordre): Site, Service, Salarié.
Lorsque l'utilisateur choisi un site (et si la CheckBox "Filtrer" est cochée), la DBLookupComboBox_Service ne contiendra que les services présents sur le site en question. De même pour les Salarié appartenant à un Service d'un Site.
J'ai eu un peu de mal, mais tout marche! ...
... Sauf dans le cas où le service ne contient aucun salariés (ce qui est impossible en théorie, mais je souhaite quelque chose qui marche dans n'importe quelle situation). Dans ce cas là, j'ai le petit sablier SQL, et sa fait une boucle infinie. =/
Voici un morceau de mon code :
(Heberger est l'association reliant Site & Service, pour savoir quel site contient quel(s) service(s))
J'aimerais avoir vos avis et vos idées sur ce problème, merci d'avance!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 procedure TForm2.DBLookupComboBox3Exit(Sender: TObject); begin DM1.Heberger.First; DBLookupComboBox4.ListSource.DataSet.Filter := ''; DBLookupComboBox5.ListSource.DataSet.Filter := ''; if CheckBox1.Checked=TRUE then begin while DM1.SiteSite_ID.Value <> DM1.HebergerSite_ID.Value do DM1.Heberger.Next; DBLookupComboBox4.ListSource.DataSet.Filter := 'Serv_ID = '+inttostr(DM1.HebergerServ_ID.Value); while DM1.SiteSite_ID.Value = DM1.HebergerSite_ID.Value do begin DBLookupComboBox4.ListSource.DataSet.Filter := DBLookupComboBox4.ListSource.DataSet.Filter + 'OR Serv_ID = '+inttostr(DM1.HebergerServ_ID.Value); DM1.Heberger.Next; end; end; end;
Partager