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 :

requete sql avec variable


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2003
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 316
    Par défaut [Résolu]requete sql avec variable
    bonjour, je debute en sql et delphi mais bon je me debrouille un peu
    j'ai deux tables dans l'une j'ai une clé externe et dans l'autre j'ai une primaire qui me donne le nom d'un fournisseur je voudrais arriver a mettre les deux ensemble

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    query1.SQL.text:=('select produit from produit where fk_categorie in(SELECT id_categorie FROM categorie WHERE categorie='+QuotedStr(chaine));

    chaine est une variable qui récupere un choix de l'utilisateur.

    lorsque j'utilise la sous requete seule j'ai ce dont j'ai besoin mais je ne sais pas l'utiliser !

    merci de m'aider :)

  2. #2
    Expert confirmé
    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 : 62
    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
    Par défaut
    Salut,

    Tout d'abord bienvenu au club !

    Pour ta requête tu es face à quel problème exactement ?. As-tu une erreur d'exécution au moment ou tu lances ta requête, ou bien la requête ne renvoie rien, ou pas ce que tu attends ? ....

    Précise un peu plus ton problème.
    @+

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2003
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 316
    Par défaut
    bien il me met qu'il y'a une utilisation incorrecte du mot clé
    et il plante


    Query1.SQL.text:=('select * from produit where fk_categorie like "'+chaine+'%";');
    now j'ai essayé ca mais il me met différence de type dans une expression chaine est un string javais essayé avec un byte avant mais ca n'allait pas non plus fk_categorie est un numerique(j'utilise interbase)


    je sais pas quoi faire j'a essayé avec des sql.add mais meme chose ca plante

  4. #4
    Expert confirmé
    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 : 62
    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
    Par défaut
    Re,

    Si ton champ est de type numérique il ne faut délimiter ta variable (par QuotedStr par exemple).

    Essaye plutot ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    query1.SQL.text:=('select produit from produit where fk_categorie in(SELECT id_categorie FROM categorie WHERE categorie=' + chaine + ')');
    @+

  5. #5
    Expert confirmé
    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 : 62
    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
    Par défaut
    Un autre conseil,

    Privilegie l'utilisation d'un STARTING WITH 'ABC' plutôt qu'un LIKE 'ABC%', car avec un STARTING WITH Interbase va utiliser l'index sur ce champ (si il existe) et les temps de réponse seront très souvent nettement meilleur !

    @+

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2003
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 316
    Par défaut
    ca marche pas je vais essayer d'ere plus clair

    l'utilisateur fait un choix dans un listbox, je récupere cette donnée et je dois avec cette donnée trouver la clé primaire correspondante, et avec cette clé primaire, je dois trouver toutes les clés externes sur une autre table afin de prendre le nom correspondant aux clés externes
    je sais pas si c'est plus clair mais bon :)

    c'est pourquoi dans une variable je récupere le choix de l'utilisateur
    et ensuite je pensais simplement faire une requete et une sous requete
    du style

    select nom from produit where fk_categorie in(select pk_categorie where nom_categorie=num)

    le nom c'est ce que je recherche, fk c'est la clé externe, pk la primaire, nom categorie c'est ds ma table et c'est un choix du listbox et num c'est le resultat du choix ds une variable

  7. #7
    Membre éclairé
    Inscrit en
    Avril 2003
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 316
    Par défaut
    en fait je viens de voir que c'est a peu pres ce que tu avais mis en haut mais ca ne va pas et je ne comprends pas pq on peut pas mettre de variable numerique dans les requetes sql ?

  8. #8
    Membre éclairé
    Inscrit en
    Avril 2003
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 316
    Par défaut
    tant que jy suis je pense avoir un autre prob , c'est dans l'extraction du résultat de ma requete dans une variable

    Query1.SQL.add('SELECT id_categorie FROM categorie'+' WHERE categorie='+QuotedStr(chaine));
    query1.Open;
    num:=table1.fields[0].asinteger;

    le table1.fields[0] me semble bizarre

  9. #9
    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 Mihalis
    tant que jy suis je pense avoir un autre prob , c'est dans l'extraction du résultat de ma requete dans une variable

    Query1.SQL.add('SELECT id_categorie FROM categorie'+' WHERE categorie='+QuotedStr(chaine));
    query1.Open;
    num:=table1.fields[0].asinteger;

    le table1.fields[0] me semble bizarre
    Oui c'est bizarre vu que tu travail avec Query1, pourquoi tu vas chercher dans Table1
    Modérateur Delphi

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

  10. #10
    Membre éclairé
    Inscrit en
    Avril 2003
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 316
    Par défaut
    en effet je l'ai modifié, mais comment je peux utiliser la resultat que je mets dans ma variable dans la requete ?

  11. #11
    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 Mihalis
    en effet je l'ai modifié, mais comment je peux utiliser la resultat que je mets dans ma variable dans la requete ?
    Quel requete, celle que tu as mis dans le premier post ?
    Modérateur Delphi

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

  12. #12
    Membre éclairé
    Inscrit en
    Avril 2003
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 316
    Par défaut
    voila jarrive enfin a ce que je veux, enfin presque :p


    Query1.SQL.Add('select fournisseur.Nom, produit.Produit, produit.Description, produit.Stock, produit.Prix');
    query1.SQL.Add('from produit, categorie, ss_Cat, fournisseur WHERE produit.Fk_fournisseur = num AND (produit.Fk_categorie = categorie.Id_categorie) AND (produit.Sous_cat = ss_cat.Fk_ss_cat)');
    ca c'est ma requete

    je voudrais que num qui est un integer ca pris en compte, j'ai essayé like, @ devant mais il ne la prend pas comme un paramètre :/

  13. #13
    Membre confirmé
    Inscrit en
    Décembre 2002
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 32
    Par défaut
    Citation Envoyé par Mihalis
    query1.SQL.Add('from produit, categorie, ss_Cat, fournisseur WHERE produit.Fk_fournisseur = num AND (produit.Fk_categorie = categorie.Id_categorie) AND (produit.Sous_cat = ss_cat.Fk_ss_cat)');
    ca c'est ma requete

    je voudrais que num qui est un integer ca pris en compte, j'ai essayé like, @ devant mais il ne la prend pas comme un paramètre :/
    si num est une variable il faut : les 2 points avant la variable
    WHERE produit.Fk_fournisseur = :num

  14. #14
    Membre éclairé
    Inscrit en
    Avril 2003
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 316
    Par défaut
    Salut, il me met que c'est un champ inconnu :/


    dois-j le déclarer qque part en tant que parametre de la requete ?

  15. #15
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Query1.SQL.Add('from produit, categorie, ss_Cat, fournisseur');
    Query1.SQL.Add('WHERE produit.Fk_fournisseur = ' + inttostr(num) + ' AND (produit.Fk_categorie = categorie.Id_categorie) AND (produit.Sous_cat = ss_cat.Fk_ss_cat)');
    Ca focntionnerai mieux si tu cavertisais en string la variable num

    sinon a quoi te sert la table fournisseur vu que tu ne fais aucune jointure dessus ?
    Modérateur Delphi

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

  16. #16
    Membre éclairé
    Inscrit en
    Avril 2003
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 316
    Par défaut
    Voila j'ai trouvé !!


    query1.SQL.clear;
    Query1.SQL.Add('select fournisseur.Nom, produit.Produit, produit.Description, produit.Stock, produit.Prix');
    query1.SQL.Add('from produit, categorie, ss_Cat, fournisseur WHERE (produit.Fk_fournisseur = :num) AND (produit.Fk_categorie = categorie.Id_categorie) AND (produit.Sous_cat = ss_cat.Fk_ss_cat)');
    Query1.params[0].AsInteger:=num;
    query1.Open;


    je devais le mettre dans params :)

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

Discussions similaires

  1. Requete SQL avec variable php
    Par Darkyl dans le forum Langage
    Réponses: 8
    Dernier message: 24/06/2011, 21h06
  2. [AC-2007] Requete SQL avec variables
    Par Greg47 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 26/05/2010, 19h07
  3. Requete SQl avec variable d'un combobox
    Par nonopower dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 15/03/2010, 17h08
  4. requete sql avec variable feuil-range
    Par jokenjo dans le forum Excel
    Réponses: 6
    Dernier message: 18/03/2008, 15h47
  5. requete sql avec variable
    Par stefon dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 02/08/2006, 16h29

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