Publicité
+ Répondre à la discussion
Page 1 sur 2 12 DernièreDernière
Affichage des résultats 1 à 20 sur 21

Discussion: filtre avec adoquery

  1. #1
    Invité de passage
    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
    Points : 0
    Points
    0

    Par défaut filtre avec adoquery

    Bonsoir
    svp, comment peut-ton filtrer une base données avec adoquery.
    ayant 02 tables [access 2007],
    table1 : concessionnaire
    table2 : marques
    avec 02 dbgrid [marques] dbgrid [concessionnaires]
    ce que je souhaiterais faire c'est quand je sélectionne une marque dans dbgrid [marques] tous les concessionnaires commercialisant la marque sélectionnée seront affichés dans la dbgrid [concessionnaires]
    comment faire svp
    merci pour compréhension.

  2. #2
    Expert Confirmé
    Avatar de Ph. B.
    Homme Profil pro Philippe
    Inscrit en
    avril 2002
    Messages
    1 292
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2002
    Messages : 1 292
    Points : 3 497
    Points
    3 497

    Par défaut

    Bonjour,
    Citation Envoyé par kasrimus Voir le message
    svp, comment peut-ton filtrer une base données avec adoquery.
    ayant 02 tables [access 2007],
    table1 : concessionnaire
    table2 : marques
    avec 02 dbgrid [marques] dbgrid [concessionnaires]
    ce que je souhaiterais faire c'est quand je sélectionne une marque dans dbgrid [marques] tous les concessionnaires commercialisant la marque sélectionnée seront affichés dans la dbgrid [concessionnaires]
    Il s'agit d'une relation Maître Détails. Il faut paramétrer les 2 ensembles de données associés aux grilles de manières adéquates, en jouant sur les propriétés MasterSource, MasterFields de l'ensemble détails quand il s'agit de TADOTable.
    Pour des TADOQuery, il faut utiliser l'événement AfterScroll du 1° query. il est déclenché à chaque déplacement dans l'ensemble. Dans la procédure appelée par cet événement, il faut réactualiser le second query en changeant le paramètre correspondant à l'id qui sert de clé étrangère...
    Attention, ne pas oublier de désactiver l'événement lors du chargement du 1° query et de le réactiver après le chargement pour éviter des rafraichissements inutiles et couteux en ressources pour le 2° query.
    Rapidement, cela donne :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
      // Débrancher l'événement
      ADOQuery1.AfterScroll := nil;
      // Ouvrir l'ensemble de données
      ADOQuery1.Open;
      // Rebrancher l'événement
      ADOQuery1.AfterScroll := ADOQuery1AfterScroll;
      // Appeler le gestionnaire d'événement pour réactualiser le 2° ensemble
      ADOQuery1AfterScroll(nil);
    Philippe.

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2012
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : août 2012
    Messages : 70
    Points : 105
    Points
    105

    Par défaut

    bonjour,

    une piste : avec l’événement on change du datasource (lié au tadoquery et à la grille).
    mais attention : il me semble que cet événement est aussi appelé lors du chargement de la grille (prevoir soit un boolean d'initialisation ou de jouer avec l'affectation de l'evenement )

  4. #4
    Invité de passage
    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
    Points : 0
    Points
    0

    Par défaut

    Bonsoir
    merci pour la réponse
    sincèrement, j'ai rien pigé chose qui m'échappe totalement.
    sans trop demander plus de précisions svp.
    merci

  5. #5
    Expert Confirmé
    Avatar de Ph. B.
    Homme Profil pro Philippe
    Inscrit en
    avril 2002
    Messages
    1 292
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2002
    Messages : 1 292
    Points : 3 497
    Points
    3 497

    Par défaut

    Bonjour,
    Citation Envoyé par kasrimus Voir le message
    sincèrement, j'ai rien pigé chose qui m'échappe totalement.
    Quel point vous a échappé ?

    En attendant je complète ce que j'ai dit concernant les TADOQuery (les instructions SQL devront être adaptées).
    1. 1°) table1 : concessionnaire : les composants
      ADOQuery1 => DataSource1 => DBGrid1
      Code :
      ADOQuery1.SQL.Text :=  'select ID_CONC, NOM_CONC, VILLE_CONC from CONCESSIONNAIRES where ID_MARQUE = :Id';
    2. 2°) table2 : marques
      ADOQuery2 => DataSource2 => DBGrid2
      Code :
      ADOQuery2.SQL.Text :=  'select ID_MARQUE, NOM_MARQUE from MARQUES';

    Pour le composant ADOQuery2, on va créer un gestionnaire d'événement pour l'événement AfterScroll. On aura :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.ADOQuery2AfterScroll(DataSet: TDataSet);
    begin
      // Fermeture de la requête des concessionnaires
      ADOQuery1.Close;
      // On change le paramètre (=la marque)
      ADOQuery1.Parameters.ParamByName('Id').Value := ADOQuery2.FieldValues['ID_MARQUE'];
      // Ouverture de la requête avec le nouveau paramètre
      ADOQuery1.Open;
    end;
    Comme je le disais précédemment, pour éviter d'appeler le gestionnaire d'événement plusieurs fois lors de l'ouverture de ADOQuery2, on va écrire :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    // Débrancher l'événement
    ADOQuery2.AfterScroll := nil;
    // Ouvrir l'ensemble de données
    ADOQuery2.Open;
    // Rebrancher l'événement
    ADOQuery2.AfterScroll := ADOQuery2AfterScroll;
    // Appeler le gestionnaire d'événement pour réactualiser ADOQuery1
    ADOQuery2AfterScroll(nil);
    Philippe.

  6. #6
    Invité de passage
    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
    Points : 0
    Points
    0

    Par défaut

    Bonjour
    merci pour votre réponse, j'ai testé ça n'a pas marché y a toujours un problème sans que cette fois-ci message d'erreur ??? est ce que je pourrais vous faire part de l'application svp pour un exemple bien concret
    merci encore.

  7. #7
    Expert Confirmé
    Avatar de Ph. B.
    Homme Profil pro Philippe
    Inscrit en
    avril 2002
    Messages
    1 292
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2002
    Messages : 1 292
    Points : 3 497
    Points
    3 497

    Par défaut

    Bonjour,
    Citation Envoyé par kasrimus Voir le message
    merci pour votre réponse, j'ai testé ça n'a pas marché y a toujours un problème sans que cette fois-ci message d'erreur ???
    Qu'est ce que cela donne en traçant pas à pas le code ?
    Citation Envoyé par kasrimus Voir le message
    est ce que je pourrais vous faire part de l'application svp pour un exemple bien concret
    Publiez juste l'unité de la fiche (TForm) où se trouvent les grilles (DBGrid), voire l'unité du module de données (TDatamodule) associé...
    Philippe.

  8. #8
    Invité de passage
    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
    Points : 0
    Points
    0

    Par défaut

    bonsoir
    voila ce que j'ai pu faire
    merci encore.
    Images attachées Images attachées

  9. #9
    Expert Confirmé
    Avatar de Ph. B.
    Homme Profil pro Philippe
    Inscrit en
    avril 2002
    Messages
    1 292
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2002
    Messages : 1 292
    Points : 3 497
    Points
    3 497

    Par défaut

    Oups, je me suis mal fait comprendre
    Citation Envoyé par Ph. B. Voir le message
    Publiez juste l'unité de la fiche (TForm) où se trouvent les grilles (DBGrid), voire l'unité du module de données (TDatamodule) associé...
    Je parlais du code source de l'unité de cette fiche...
    Philippe.

  10. #10
    Invité de passage
    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
    Points : 0
    Points
    0

    Par défaut

    Bonjour
    je vous remercie bien vivement
    voilà je vous fait part de l'unit1
    merci encore pour votre aide
    Images attachées Images attachées

  11. #11
    Expert Confirmé
    Avatar de Ph. B.
    Homme Profil pro Philippe
    Inscrit en
    avril 2002
    Messages
    1 292
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2002
    Messages : 1 292
    Points : 3 497
    Points
    3 497

    Par défaut

    Bonjour,
    Citation Envoyé par kasrimus Voir le message
    voilà je vous fait part de l'unit1
    Je voulais dire le fichier source de l'unité (unit1.pas si c'est le nom de l'unité), pas la capture d'écran...
    J'ai quand même vu que tout avait été mélangé...
    Il faut reprendre le code gestionnaire de l'événement AfterScroll tel que je vous l'ai donné...
    La 2° partie de code est à placer dans la procédure qui va réaliser l'ouverture de AdoQuery2, mais pas dans le code gestionnaire. La, vous avez introduit un appel récursif à la procédure ADOQuery2AfterScroll.
    Ce bout de code peut éventuellement se placer dans la procédure FormCreate ou dans un procédure qui est susceptible d'ouvrir et de ré-ouvrir ADOQuery2...
    Philippe.

  12. #12
    Invité de passage
    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
    Points : 0
    Points
    0

    Par défaut

    Bonsoir
    merci pour votre patience et surtout pour la compréhension à mon égard
    voilà je vous fait part code [zip]
    merci encore
    Fichiers attachés Fichiers attachés

  13. #13
    Invité de passage
    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
    Points : 0
    Points
    0

    Par défaut Bonne année 2013

    Bonsoir à toute l'équipe.
    Images attachées Images attachées

  14. #14
    Expert Confirmé
    Avatar de Ph. B.
    Homme Profil pro Philippe
    Inscrit en
    avril 2002
    Messages
    1 292
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2002
    Messages : 1 292
    Points : 3 497
    Points
    3 497

    Par défaut

    Bonsoir,
    J'ai regardé le code. Voila la marche à suivre :
    1. Dans la base Access, il faut créer une colonne Codmarq dans la table concessionnaires de même type que celle de la table marque.
    2. Renseigner les valeurs de cette colonne pour chacune des lignes de la table.
    3. Reprendre l'unité Unit1 que j'ai modifiée en fonction de cet ajustement
      J'ai juste renommé certains composants pour plus de clarté et placé le code comme il le fallait...
    Fichiers attachés Fichiers attachés
    Philippe.

  15. #15
    Invité de passage
    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
    Points : 0
    Points
    0

    Par défaut

    Bonjour et joyeuse nouvelle année. Que du bonheur.
    mes sincères remerciements pour votre aide.
    au fait ce n'est pas ce que je voulais???
    quand je clique sur un nom de marque il me ressort pas l’ensemble des concessionnaires commercialisant la marque sélectionnée.

    ex: audi --> CONS1 - CONS3 - CONS10 - CONS21. dans dbgrid CONCESSIONNAIRES.
    merci quand même, je vais vous casser la tête éternellement.
    a+

  16. #16
    Invité de passage
    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
    Points : 0
    Points
    0

    Par défaut

    Bonsoir,
    pardon, il fallait lire "merci quand même, je vais pas vous casser la tête éternellement"
    merci encore
    si je peux me permettre c'est toujours sur adoquery. en l'absence
    de table adotable là ou il y a possibilité de lier par table grâce au master source, on est un perdu.
    ma question est : peut-on lier 4 tables (adoquery) svp
    merci encore.

  17. #17
    Membre émérite Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    août 2008
    Messages
    1 527
    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 527
    Points : 920
    Points
    920

    Par défaut

    Citation Envoyé par kasrimus Voir le message
    ....
    ma question est : peut-on lier 4 tables (adoquery) svp
    merci encore.
    Bonsoir,

    Lier 4 tables et le termes ADOQUERY n'a pas de sens...

    ADOQUERY sert à l'établissement (l'execution) d'une requête SQL. avec une requête SQL tu peux effectivement lier beaucoup de tables entre elles mais quid des clés ?

    a+

  18. #18
    Invité de passage
    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
    Points : 0
    Points
    0

    Par défaut

    Bonsoir,
    c'est ce que je voulais savoir justement. y a une possibilité d'un exemple ou une adresse [site] svp ?
    merci encore pour le tout

  19. #19
    Invité de passage
    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
    Points : 0
    Points
    0

    Par défaut

    Bonjour
    pas de réponse?
    questions restent ouvertes...! toujours
    merci

  20. #20
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2005
    Messages
    5 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    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 192
    Points : 7 622
    Points
    7 622

    Par défaut

    Citation Envoyé par kasrimus Voir le message
    Bonjour
    pas de réponse?
    questions restent ouvertes...! toujours
    merci
    Ce n'est pourtant pas dur d'aller sur le menu SGBD et de cliquer sur SGBD & SQL après il y a une section tutoriel qui te permettra de faire tes premiers pas en SQL pour lier tes 4 tables.
    Modérateur Delphi Combattez la brute
    Aucune réponse aux sollicitations techniques par MP

    Le guide du bon forumeur :
    __________
    [Projet en cours] Des unités pour faciliter l'utilisation d'indy : EasyIndy 1.3

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •