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 / Ado


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 40
    Par défaut Requete SQL / Ado
    Bonjour à tous,

    Je galère un tout petit peu sur une requete SQL via ADO qui interroge 2 tables paradox.

    Ca doit etre un truc tout bete mais je trouve pas et j'aimerai bien comprendre

    Je sais que la requete suivante marche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    with ADOQuery1 do begin
        SQL.Clear;
        SQL.Add('SELECT SUPPPROD.SupplierNumber, SUPPPROD.SupplierProductCode, PLU.PluCode, PLU.Coef ');
        SQL.Add('FROM PLU INNER JOIN SUPPPROD ON PLU.ProductNumber = SUPPPROD.ProductNumber ');
        SQL.Add('WHERE (((SUPPPROD.SupplierNumber)=' + edt1.text +' )) GROUP BY SUPPPROD.SupplierNumber, SUPPPROD.SupplierProductCode, PLU.PluCode, PLU.Coef ');
        Active:=True;
    end;
    Or j'aimerai rajouter à cette requete le champ Plu.Descriptor (seul champ dont les données seraient des strings) .

    J'ai donc essayé plusieurs solutions et rien ne va et je me retrouve avec un message "erreur non spécifiée".

    Merci d'avance à tous ceux qui prendront le temps de me répondre

  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

    Montre-nous plutôt la requête qui ne fonctionne pas.

    Mais a priori tu as peut-être oublié de mettre la valeur string entre quotes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '... where .. and Plu.Descriptor = ' + QuotedStr(Edt2.Text) + ' ...'
    @+ Claudius

  3. #3
    Membre émérite Avatar de chaplin
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 215
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       SQL.Add('WHERE (((SUPPPROD.SupplierNumber)=' + edt1.text +' ))
    A quoi servent toutes ces paranthèses après le where ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 40
    Par défaut
    Voici 2 essais parmis les nombreux que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    with ADOQuery1 do begin
        SQL.Clear;
        SQL.Add('SELECT SUPPPROD.SupplierNumber, SUPPPROD.SupplierProductCode, PLU.PluCode, PLU.Coef, PLU.Descriptor ');
        SQL.Add('FROM PLU INNER JOIN SUPPPROD ON PLU.ProductNumber = SUPPPROD.ProductNumber ');
        SQL.Add('WHERE (((SUPPPROD.SupplierNumber)=' + edt1.text +' )) GROUP BY SUPPPROD.SupplierNumber, SUPPPROD.SupplierProductCode, PLU.PluCode, PLU.Coef ');
        Active:=True;
      end;
    Et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      with ADOQuery1 do begin
        SQL.Clear;
        SQL.Add('SELECT SUPPPROD.SupplierNumber, SUPPPROD.SupplierProductCode, PLU.PluCode, PLU.Coef, PLU.Descriptor ');
        SQL.Add('FROM PLU INNER JOIN SUPPPROD ON PLU.ProductNumber = SUPPPROD.ProductNumber ');
        SQL.Add('WHERE (((SUPPPROD.SupplierNumber)=' + edt1.text +' )) GROUP BY SUPPPROD.SupplierNumber, SUPPPROD.SupplierProductCode, PLU.PluCode, PLU.Coef, PLU.Descriptor ');
        Active:=True;
      end;
    Plu.Descriptor est un champ de ma table que je veux simplement afficher. J'aime bien chercher mais sur ce coup je desespere surtout que je sens que ça va etre tout bete

    @chaplin : Moui y'a surement aussi un peu de ménage à faire

  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
    Pourquoi utiliser un group by sans fonction d'agrégat ?

    Un order by suffit si le but est de trier le résulat.

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 938
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 938
    Par défaut
    SUPPPROD est la table jointe. N'aurais-tu pas un problème avec la clause WHERE

    Essaye en faisant la jointure inverse. (Et comme dit Claudius, le GROUP BY ne sert à rien !)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    with ADOQuery1 do begin
        SQL.Clear;
        SQL.Add('SELECT SUPPPROD.SupplierNumber, SUPPPROD.SupplierProductCode, PLU.PluCode, PLU.Coef, PLU.Descriptor');
        SQL.Add('FROM SUPPPROD INNER JOIN PLU ON PLU.ProductNumber = SUPPPROD.ProductNumber');
        SQL.Add('WHERE SUPPPROD.SupplierNumber=' + edt1.text);
        Active:=True;
      end;

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 40
    Par défaut
    Merci pour le GROUP BY, en effet un ORDER BY suffit.

    Comme dit sans ce champ la requete fonctionne bien mais dès qu'il rentre en jeu c'est le bordel.

    Meme avec la jointure inverse ça bloque, d'ailleurs ça bloque aussi si j'enlève le WHERE.

    J'ai testé la requete avec Access et la aucun soucis.

    Bon j'ai une solution pour contourner le problème mais j'aimerai bien savoir d'où ça vient

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 40
    Par défaut
    Gniii je l'ai eu

    Apparement Descriptor est un mot réservé et il suffit de rajouter une contre cote (`) pour que ça passe.

    Voici le code qui tourne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    with ADOQuery1 do begin
        SQL.Clear;
        SQL.Add('SELECT SUPPPROD.SupplierNumber, SUPPPROD.SupplierProductCode, PLU.PluCode, PLU.Coef, PLU.`Descriptor` ');
        SQL.Add('FROM SUPPPROD INNER JOIN PLU ON PLU.ProductNumber = SUPPPROD.ProductNumber');
        SQL.Add('WHERE SUPPPROD.SupplierNumber=' + edt1.text);
        Active:=True;
      end;
    Merci pour la rapidité de vos réponses et pour l'épuration de mes quelques lignes de code

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

Discussions similaires

  1. Problème ADO et requete SQL
    Par Alixe80 dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 31/03/2008, 20h58
  2. Utilisation ADO et Requete SQL
    Par rdoudou dans le forum Bases de données
    Réponses: 3
    Dernier message: 20/09/2007, 23h19
  3. Type de retour pour ma requete SQL avec ADO !
    Par Nixeus dans le forum MFC
    Réponses: 7
    Dernier message: 23/04/2007, 10h07
  4. [ADO] Requête SQL dans Oracle à partir d'access
    Par kika.93 dans le forum Access
    Réponses: 4
    Dernier message: 22/08/2006, 09h55
  5. Plantage requete SQL simple sous Delphi7/ADO avec Access
    Par tomy29 dans le forum Bases de données
    Réponses: 2
    Dernier message: 25/08/2005, 11h09

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