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 :

Comment convertir une requête sql en requête en forme de script sous DELPHI seattle


Sujet :

Bases de données Delphi

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    base de donnee systemes information
    Inscrit en
    Août 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Algérie

    Informations professionnelles :
    Activité : base de donnee systemes information
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2019
    Messages : 1
    Points : 0
    Points
    0
    Par défaut Comment convertir une requête sql en requête en forme de script sous DELPHI seattle
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM Chef_de_projet
    INNER JOIN Projet ON Chef_de_projet.ID_ChefDeProjet = projet.ID_chefdeprojet and (Chef_de_projet.login_chef = valeur)

    voila j'ai cette requête SQL (SQL serveur 2017 ) qui fonctionne et qui me donne des resultats, sauf que lorsque je l’intégré sur Delphi j'ai un problème voila comment j'ai fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ADOQuery3.Close;
    ADOQuery3.SQL.Clear;
    rsql_projet:= ('select * from projet where  id_chefdeprojet in (select Id_chefdeprojet from chef_de_projet');
    ADOQuery3.SQL.Add(rsql_projet);
    label1.Caption:=rsql_projet;
    ADOQuery3.Open;
    celle ci elle marche tant que j'ai pas me de condition WHERE mais une fois je mets LA CONDITION WHERE PAR EXEMPLE :
    ('select * from projet where id_chefdeprojet in (select Id_chefdeprojet from chef_de_projet WHERE LOGIN_CHEF = VALEUR FROM VARIABLE');

    COMMENT FAIRE SVP

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 89
    Points : 102
    Points
    102
    Par défaut
    Bonjour,

    Une simple erreur de parenthèses :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    rsql_projet:= 'select * from projet where id_chefdeprojet in (select Id_chefdeprojet from chef_de_projet)';
     
    ADOQuery3.SQL.Clear;
    ADOQuery3.SQL.Add(rsql_projet);
    Cordialement

    Carmichael

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 044
    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 044
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    AMHA il y a plus qu'une simple erreur de parenthèse il y a aussi plusieurs erreurs SQL.

    Tout d'abord le SQL de départ contient une jointure ce qui n'est pas écrit dans le programme Delphi.
    Ensuite utiliser * est ambiguë aussi bien dans la première proposition SQL (qui fourni soit-disant le bon résultat) que dans sa "traduction" Delphi.
    Enfin dans la "traduction" Delphi, je n'aime pas du tout cette utilisation de id_chefdeprojet in (select Id_chefdeprojet from chef_de_projet')
    à mon avis le SQL que vous cherchez est

    // Tous les chefs de projets ayant un projet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ADOQuery3.Close;
    ADOQuery3.SQL.Text:='SELECT * FROM Chef_de_projet c INNER JOIN Projet p ON C.ID_ChefDeProjet = p.ID_chefdeprojet';  // * à remplacer par la liste des colonnes voulues
    // À noter que je n'ai pas besoin d'utiliser ADOQuery3.SQL.Clear car j'utilise ADOQuery3.SQL.Text 
    // Si toutefois une clause Where était nécessaire je rajouterai 
    ADOQuery3.SQL.Add('WHERE c.login_chef =:valeur');   // requête paramètrée
    ADOQuery3.Parameters.ParamByName('valeur').asString:= edit1.text ; // renseignement du paramètre
    ADOQuery3.Open;
    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

Discussions similaires

  1. Comment convertir une date de Java à SQL
    Par khadi8 dans le forum Persistance des données
    Réponses: 2
    Dernier message: 04/01/2012, 10h48
  2. [CR 8] Question pour convertir une requete SQL SERVER en Requête CR
    Par nekro65 dans le forum SAP Crystal Reports
    Réponses: 11
    Dernier message: 24/06/2010, 11h37
  3. Réponses: 1
    Dernier message: 18/09/2008, 23h07
  4. Réponses: 6
    Dernier message: 14/02/2004, 14h01
  5. Réponses: 3
    Dernier message: 28/09/2003, 10h46

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