IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

filtre dbgrid avec sql


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2011
    Messages : 87
    Par défaut filtre dbgrid avec sql
    Bonjour
    pouvez vous m'orienter (aide) svp
    je viens de m'intersser à delphi pour réaliser une application de gestion, mais là je bute sur sql, et ce pour filtrer une dbgrid sur 02 champs: voila le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ADOQuery1.Active := false ;
    ADOQuery1.SQL.Text := 'SELECT * FROM table1 WHERE année='+QuotedStr(combobox3.Text)+ 'and situation ='+QuotedStr(edit3.Text);
    ADOQuery1.Active := true ;
    form1.Edit1.Text := IntToStr(ADOQuery1.RecordCount);
    une fois compilé aucun résultas, même pas un message d'erreur...!
    merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 786
    Par défaut
    Bonjour,
    Citation Envoyé par kasrimus Voir le message
    une fois compilé aucun résultas, même pas un message d'erreur...!
    C'est à dire ? Rien ne s'affiche ? Avez vous tracé le code pour être sur qu'il est réellement exécuté ?
    Sinon, j'éviterais de construire votre requête comme vous l'avez fait. J'utiliserais des paramètres, cela éviterait tout problème de conversion de type lors de l'évaluation de la requête et peut être des résultats autres que ceux attendus...
    J'écrirais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ADOQuery1.Active := False;
    ADOQuery1.SQL.Text := 'SELECT * FROM table1 WHERE année = :PAnnee  and situation = :PSituation';
    ADOQuery1.Parameters.ParamValues['PAnnee'] := ComboBox3.Text;
    ADOQuery1.Parameters.ParamValues['PSituation'] := Edit3.Text;
    ADOQuery1.Active := True ;
    // form1.Edit1.Text := IntToStr(ADOQuery1.RecordCount);
    // Le code est très certainement dans une méthode de la classe TForm1,
    // aussi, éviter d'appeler une variable d'instanciation de cette classe,
    // mais utiliser Self
    Self.Edit1.Text := IntToStr(ADOQuery1.RecordCount);
    La colonne "année", c'est pour l'exemple car je ne suis pas sur qu'ADO apprécie....
    Dernière chose, n'oubliez pas à l'avenir de préciser quelle moteur de base de données vous utilisez.

  3. #3
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Par défaut
    Salut

    Essai ceci :

    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
    17
    18
    With ADOQuery do
    begin
      Sql.Clear;
      Sql.Add('SELECT * FROM table1 ');
      Sql.Add('Where Année= :xAnnée ');
      Sql.Add('And Situation= :xSituation ');
      Parameters.ParamByName('xAnnée').DataType := ftString;
      Parameters.ParamByName('xSituation').DataType := ftString;
      Parameters.ParamByName('xAnnée').Value := combobox3.Text;
      Parameters.ParamByName('xSituation').Value := edit3.Text;
      Try
       Open;
       Edit1.Text := IntToStr(RecordSet.RecordCount);
      Finally
       Close;
      end;
     
    end;

    Grillé par Ph. lloll

  4. #4
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 786
    Par défaut
    Citation Envoyé par BuzzLeclaire Voir le message
    Grillé par Ph. lloll
    Meuh non...
    De plus, l'approche sur les paramètres est plus précise que celle que j'avais donnée.

  5. #5
    Membre actif
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2011
    Messages : 87
    Par défaut filtre dbgrid avec sql
    Bonsoir
    Oh...! Merci pour vos réponse, je suis vraiment très touché c'est gentil de votre part.
    S'agissant de mon problème, je effectué les corrections (code) toujour le même problème rien ne s'affiche, par contre quand je filtre sur un seul champ ca marche :
    code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ADOQuery1.Active := false ;
    ADOQuery1.SQL.Text := 'SELECT * FROM table1 WHERE année='+QuotedStr(combobox3.Text);
    ADOQuery1.Active := true ;
    form1.Edit1.Text := IntToStr(ADOQuery1.RecordCount);
    base de donnée access 2007 delphi 2010
    merci encore pour l'aide.

  6. #6
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 786
    Par défaut
    Citation Envoyé par kasrimus Voir le message
    S'agissant de mon problème, je effectué les corrections (code) toujour le même problème rien ne s'affiche, par contre quand je filtre sur un seul champ ca marche :
    Quand vous filtrez seulement sur l'autre colonne ? ça fonctionne ?
    Êtes vous sur que le jeu d'essai doit renvoyer une réponse à vos conditions de filtre ?

  7. #7
    Membre actif
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2011
    Messages : 87
    Par défaut filtre dbgrid avec sql
    Bonsoir
    effectivement, quand je filtre uniquement sur un champ cela fonctionne.
    je vous remercie bien pour l’intérêt que vous accorder à mon problème
    Merci

  8. #8
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2010
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2010
    Messages : 192
    Par défaut Filtre dbgrid avec sql
    Salut tous le monde, est je remercie tous qui ont participé ce se sujet.

    Je remercie surtout [SergioMaster] et [Buzleclair] de leur aide précieuse et je confirme que cette solution donnée par les amis et après le test que j'ai fait elle marche très bien, il y'a qu'il faut faire la différence entre ADOQUERY et TQUERY elle change au niveau des Paramètre exemple :

    1 - Pour ADOQUERY il faut mettre:
    ADOQUERY1.Parameters.ParamByName('xnom').Value := edit1.Text;
    2 - pour TQUERY ca change faite attention:
    Qry1.ParamByName('xnom').asString := edit1.text;

    Il faut ne pas oublier les guillemets à mettre dans parambyname de la variable. ici dans l'exemple 'xnom', bonne chance à tous.

  9. #9
    Membre actif
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2011
    Messages : 87
    Par défaut Filtre dbgrid avec sql
    Bonsoir
    j'ai toujours pas réglé mon problème, svp est ce possible de m'orienter svp
    merci d'avance

  10. #10
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2010
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2010
    Messages : 192
    Par défaut Filtre dbgrid avec sql
    Salut,

    donne t'a requête pour voir ou sa ne va pas?

  11. #11
    Membre actif
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2011
    Messages : 87
    Par défaut Filtre dbgrid avec sql
    Bonjour
    Mon problème c'est que je veux filtrer un dbgrid à l'aide d'un combobox sur 2 colonnes [situation] et [année]. je n'arrive pas, mais sur une seule colonne cela marche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ADOQuery1.Active := false ;
    ADOQuery1.SQL.Text := 'SELECT * FROM table1 WHERE année='+QuotedStr(combobox3.Text)+ 'and situation ='+QuotedStr(edit3.Text);
    ADOQuery1.Active := true ;
    form1.Edit1.Text := IntToStr(ADOQuery1.RecordCount);
    merci pour votre aide

  12. #12
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    en plus des avantages sus-cités par Phillipe , je rajouterais qu'avec une requête paramétrée on ne se souciera plus du format de la date (dans le cas de son dernier SQL)
    Citation Envoyé par kasrimus Voir le message
    Bonjour
    Mon problème c'est que je veux filtrer un dbgrid à l'aide d'un combobox sur 2 colonnes [situation] et [année]. je n'arrive pas, mais sur une seule colonne cela marche.
    Comme dit plus haut, le passage de paramètre est la meilleure solution, surtout que tu gères une date et que selon les bases de données il faut un format spécifique (Ex: Access : MM/DD/YYYY, MYSQL : YYYY-MM-DD, etc ...)

    Après Année est il un champ numérique ou alphanumérique ?
    Si numérique alors faut enlever le Quoted
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  13. #13
    Membre actif
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2011
    Messages : 87
    Par défaut Filtre dbgrid avec sql
    Bonjour,
    j'ai toujours le même problème. je filtre sur un seul champ cela fonctionne, mais sur 02 champs cela coince, j'utilise BD access 2007.
    champs : situation et année. voilà, mes amis, et je remercie l’ensemble des intervenants.

    code:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ADOQuery1.Active := false ;
    ADOQuery1.SQL.Text := 'SELECT * FROM table1 WHERE année='+QuotedStr(combobox3.Text)+ 'and situation ='+QuotedStr(edit3.Text);
    ADOQuery1.Active := true ;
    form1.Edit1.Text := IntToStr(ADOQuery1.RecordCount);

  14. #14
    Membre actif
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2011
    Messages : 87
    Par défaut Filtre dbgrid avec sql
    bonjour,
    merci pour votre réponse
    comment enlever le quoted svp, un exemple svp
    je filtre sur 2 champs sitution et année.
    merci d'avance pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Filtre glissant en SQL avec la fonction decode
    Par jerem7w dans le forum SQL
    Réponses: 4
    Dernier message: 09/01/2012, 12h06
  2. DBgrid avec champs de recherche et filtre
    Par thered dans le forum Composants VCL
    Réponses: 9
    Dernier message: 20/06/2009, 03h19
  3. Réponses: 4
    Dernier message: 26/02/2008, 09h55
  4. Alimenter DBgrid avec requete SQL ?
    Par La_Bande_A_Zozo dans le forum C++Builder
    Réponses: 5
    Dernier message: 31/05/2006, 17h51
  5. Delete on cascade avec SQL server
    Par fadoua dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/01/2004, 11h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo