Ou est mon erreur

Signaler
Messages postés
92
Date d'inscription
mercredi 4 décembre 2002
Statut
Membre
Dernière intervention
18 mai 2018
-
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
-
R A P A K O O T I

ca devrais trie mais ca le fais pas

procedure TForm1.Button1Click(Sender: TObject);
begin
If ComboBox1.Text='' Then
Table1.Filtered := False
Else
Begin
if Pargenre1.Checked=true then
begin Table1.Filter :' GENRE '+QuotedStr( ComboBox1.Text);
Table1.Filtered := True;
end;
if ParNationalit1.Checked=true then
begin Table1.Filter :' NATIONALITE '+QuotedStr( ComboBox1.Text);
Table1.Filtered := True;
end;

End;
end;

3 réponses

Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
Ce n'est pas un tri que tu demandes mais un filtrage !
Pour obtenir les données dans un ordre donné, il faut utiliser les indexes ou alors utiliser une requête SQL.
May Delphi be with you
Messages postés
92
Date d'inscription
mercredi 4 décembre 2002
Statut
Membre
Dernière intervention
18 mai 2018

R A P A K O O T I
desole je sais je me suis trompe je voulais dire filtrer ce qu il na fais pas
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
Si on regarde le code, on s'aperçoit que :
1-si combobox1.text n'est pas vide et qu'aucune des deux cases n'est cochée, alors la table n'est pas filtrée.

2- si combobox1.text est vide et que parnationalit1 est cochée, alors il affiche les enregistrements où NATIONALITE est vide.

Or, tu sembles vouloir filtrer les donnéées que quand comcobox1.text n'est pas vide. Un else bien placé devrait résoudre le problème
procedure TForm1.Button1Click(Sender: TObject);
begin
 //Faut-il filtrer ? 
If ComboBox1.Text='' Then
 Table1.Filtered := False
 Else
 Begin
   if Pargenre1.Checked then
  begin     Table1.Filter :' GENRE '+QuotedStr( ComboBox1.Text);
   if ParNationalit1.Checked then     Table1.Filter :'AND NATIONALITE '+QuotedStr( ComboBox1.Text);
   end
  else
  if ParNationalit1.Checked then     Table1.Filter :'NATIONALITE '+QuotedStr( ComboBox1.Text);
   //activation du filtrage
    Table1.Filtered := True;
 end;
End;


Apparemment, tu as utilisé des cases à cocher pour traiter les différentes situations possibles :
- pas de filtrage
- filtrer selon la nationalité
- filtrer selon le genre
- filtrer selon le genre ET la nationalité (implicitement !)

Dans ce dernier cas, tu ne prends en compte que le filtrage de la nationalité.

Mais dans ton code, tu traites le filtrage par nationalité même quand combobox1.text est vide...
May Delphi be with you