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 SQL d'AdoQuery selon une variable locale


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Points : 72
    Points
    72
    Par défaut Filtre SQL d'AdoQuery selon une variable locale
    Bonjour à tous,

    Une question surement fort simple pour vous
    Il faudrait que je filtre ma TAdoQuery en fonction d'une variable local utilisée dans une de mes unités. Comment dois-je écrire mon code SQL ?

    J'ai essayé des truks du genre :
    select * from commande
    where Cat = fiche1_commande.cat
    Bien sur : fiche1_commande est mon unité ou se trouve la variable "cat".

    D'avance merci

  2. #2
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Salut;

    la réponse est dans l'utilisation des paramètres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select * from commande
    where Cat =:varLocal
    ensuite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ADOQuery1.Close;
    ADOQuery1.SQL.Params[0].Value := fiche1_commande.cat;
    ADOQuery1.Open;
    je crois que c'est tout.

    Bon codage.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  3. #3
    Membre actif Avatar de hazamor
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2008
    Messages : 179
    Points : 206
    Points
    206
    Par défaut Encore
    Tu peut encore formé la requete dynamiquement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    rsql:= 'select * from commande where Cat =' + varLocal.valu;
    ADOQuery1.SQL.Add(rsql);
    ADOQuery1.Open;

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par hazamor Voir le message
    Tu peut encore formé la requete dynamiquement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    rsql:= 'select * from commande where Cat =' + varLocal.valu;
    ADOQuery1.SQL.Add(rsql);
    ADOQuery1.Open;
    ça ne fonctionne pas! Delphi demande de déclarer la variable 'rsql' de la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rsql:= 'select * from commande where Cat =' + varLocal.valu;
    J'ai essayé de remplacer 'rsql' par 'sql' au cas ou il y aurait une faute de frappe mais non!!!



    J'ai donc utilisé la méthode fourni par Just-Soft mais là également Delphi me demande de déclarer 'Params' de la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ADOQuery1.SQL.Params[0].Value := fiche1_commande.cat;
    Il n'y a aucune procedure commençant par un 'p' aprés : 'ADOQuery1.SQL'

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    tout simplement parque rsql est une variable string à déclarer
    mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear; 
    ADOQuery1.SQL.Add('select * from commande where Cat =' + varLocale);
    ADOQuery1.Open;
    doit fonctionner, cependant passer par un paramètre est fortement recommandé , en effet si cat est un entier et varlocale aussi il faudrait écrire
    Cat='+inttostr(varlocale)
    dans le cas de chaine de car il faudrait soit mettre de " en plus
    CAT="'+varlocale+'"'
    soit mettre
    Cat='+quotedstr(varlocale)
    je passe sur les dates et différents formats , les Floats etc ....
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Points : 72
    Points
    72
    Par défaut
    Je venais tout juste de comprendre qu'il fallait déclarer 'rsql' en tant que string.

    En tout cas : bien vu pour le reste SergioMaster!!!
    Tu as deviné juste sur tout : L'ajout de double guillemet, l'utilisation de 'inttostr'.
    Impressionné!!!

    Maintenant ça fonctionne à merveille

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 187
    Points : 72
    Points
    72
    Par défaut
    J'ai oublié d'ajouter que :
    m'a générer une erreur alors que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ADOQuery1.Active:= false;
    focntionne.
    Je ne sais pas trop pourquoi mais bon vu que ça marche

    Encore merci à tous

  8. #8
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Tu es sûr ?

    Cela m'étonne puisque la méthode Close de TDataSet se résume mettre Active à False.

    @+ Claudius

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/08/2013, 17h54
  2. [SQL] Puis-je insérer une variable PHP pour déterminer ORDER BY ?
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 30/05/2006, 01h41
  3. [SQL] Récupération éventuelle d'une variable pour faire des tests
    Par mougeole dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 24/05/2006, 13h56
  4. [POO] Déclaration de classe selon une variable
    Par Michaël dans le forum Langage
    Réponses: 1
    Dernier message: 07/01/2006, 18h33
  5. [MFC] Globaliser une variable locale
    Par Philippe320 dans le forum MFC
    Réponses: 3
    Dernier message: 01/12/2005, 20h12

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