1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
| procedure TfmListe.tvObjetClick(Sender: TObject);
begin
with qbeneficiaire do
begin
SQL.Clear;
// si c'est un noeud parent alors selectionner le premier noeud fils
if (tvObjet.Selected.HasChildren) then
tvObjet.Select(tvObjet.Items[tvObjet.Selected.AbsoluteIndex + 1]);
// Bénéficiaire
// retourne zéro enregistrements pour cette partie
if (tvObjet.Selected.HasAsParent(tvObjet.Items[0])) then
begin
//ShowMessage(inttostr(tvObjet.Selected.Index));
case tvObjet.Selected.Index of
// tout
0 : Texte := 'SELECT * FROM Benef_Cat_Fam';
// actif
1 : Texte := 'SELECT * FROM Benef_Cat_Fam WHERE Actif=True';
// inactif
2 : Texte := 'SELECT * FROM Benef_Cat_Fam WHERE Actif=False';
end;
end;
// Contrat
if tvObjet.Selected.HasAsParent(tvObjet.Items[4]) then
begin
Texte := 'SELECT Contrat.Fin_Contrat, Benef_cat_fam.Nom, '
+ 'Benef_cat_fam.Prenom, Benef_cat_fam.Date_Naissance, '
+ 'Benef_cat_fam.Num_Identite, Benef_cat_fam.Num_Securite_Sociale, '
+ 'Benef_cat_fam.Num_Dossier, Benef_cat_fam.Actif, Benef_cat_fam.Archivage '
+ 'FROM Benef_Cat_Fam Benef_cat_fam '
+ 'LEFT OUTER JOIN Contrat Contrat '
+ 'ON (Contrat.code_beneficiaire = Benef_cat_fam.code_beneficiaire) ';
case tvObjet.Selected.Index of
// contrat expiré
0 : Texte := Texte + 'WHERE Contrat.Fin_Contrat = FALSE';
// contrat en cours
1 : Texte := Texte + 'WHERE Contrat.Fin_Contrat = TRUE';
// sans contrat
2 : Texte := 'SELECT DISTINCT Contrat.Fin_Contrat, Beneficiare.Nom, '
+ 'Beneficiare.Prenom, Beneficiare.Date_Naissance, Beneficiare.Lieu_Naissance, '
+ 'Beneficiare.Num_Identite, Beneficiare.Num_Securite_Sociale, '
+ 'Beneficiare.Num_Dossier, Beneficiare.Actif, Beneficiare.Archivage, Contrat.date_Entree '
+ 'FROM Contrat Contrat '
+ 'RIGHT OUTER JOIN Beneficiare Beneficiare '
+ 'ON (Beneficiare.code_beneficiaire = Contrat.code_beneficiaire) '
+ 'WHERE Contrat.Code_Contrat IS NULL '
+ 'ORDER BY Contrat.Fin_Contrat';
end
end;
// Archive
if (tvObjet.Selected.HasAsParent(tvObjet.Items[8])) then
begin
case tvObjet.Selected.Index of
0 : Texte := 'SELECT * FROM Benef_Cat_Fam WHERE Archivage=True';
1 : Texte := 'SELECT * FROM Benef_Cat_Fam WHERE Archivage=True AND Actif=TRUE';
2 : Texte := 'SELECT * FROM Benef_Cat_Fam WHERE Archivage=True AND Actif=FALSE';
end
end;
// Groupe
if tvObjet.Selected.HasAsParent(tvObjet.Items[12]) then
begin
tvObjet.Selected.SelectedIndex := 16;
Texte := 'SELECT * FROM Benef_Cat_Fam '
+ 'WHERE Categorie=' + QuotedStr(tvObjet.Selected.Text);
end;
// Activité
if tvObjet.Selected.HasAsParent(tvObjet.Items[pos_noeud-1]) then
begin
tvObjet.Selected.SelectedIndex := 16;
Texte := 'SELECT * FROM Benef_Cat_Fam '
+ 'WHERE Famille=' + QuotedStr(tvObjet.Selected.Text);
end;
// Traitement en Mode SQL
if (texte <> '') then
begin
qbeneficiaire.SQL.Text := texte;
qbeneficiaire.Open;
case qbeneficiaire.RecordCount of
-1,0 : sbInfo.Panels[0].Text := 'Aucun enregistrement';
1 : sbInfo.Panels[0].Text := '1 enregistrement trouvé';
else sbInfo.Panels[0].Text := IntToStr(qbeneficiaire.RecordCount)
+ ' enregistrements trouvés';
end
end;
end;
end;
Toues les parties de ce code me rendent le nembre d'enregistrements exacat sauf cette partie
// Bénéficiaire
if (tvObjet.Selected.HasAsParent(tvObjet.Items[0])) then
begin
//ShowMessage(inttostr(tvObjet.Selected.Index));
case tvObjet.Selected.Index of
// tout
0 : Texte := 'SELECT * FROM Benef_Cat_Fam';
// actif
1 : Texte := 'SELECT * FROM Benef_Cat_Fam WHERE Actif=True';
// inactif
2 : Texte := 'SELECT * FROM Benef_Cat_Fam WHERE Actif=False';
end;
end; |
Partager