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 :

Aide pour une requête SQL Server sous delphi


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2009
    Messages : 42
    Points : 19
    Points
    19
    Par défaut Aide pour une requête SQL Server sous delphi
    Bonjour
    j 'ai une requête SQL-SERVEUR qui marche bien comme suite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Declare @T  varchar(80);
    SET @T = 'TRACTEUR ROUTIER';
    SELECT VEHICULE.CODE, VEHICULE.TYPEV, VEHICULE.MARQUE, VEHICULE.GENRE, VEHICULE.NumCHASSIE, VEHICULE.NSERIE, VEHICULE.MATRICULE, VEHICULE.CDS
    FROM VEHICULE
    WHERE (((VEHICULE.TYPEV)=@T));
    je désire interpréter cette requête en delphi 7 , j'ai éssayé de faire ce code mais il ne marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Data.QTYPEV.Close;
    Data.QTYPEV.Parameters.ParamByName('@T').Value:=Edit1.Text;
    Data.QTYPEV.Open;
    pouvez vous me corriger et m'aider merci

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Faudrait lire la documentation : ADOQuery (Delphi)
    ou Utilisation de paramètres dans les requêtes

    le symbole c'est " : " et non " @ "
    Il est présent dans le SQL mais le nom du paramètre ne le contient pas


    J'ajoute aussi l'alias V pour réduire la taille de la requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Data.QTYPEV.Close;
    Data.QTYPEV.SQL.Text := 'SELECT V.CODE, V.TYPEV, V.MARQUE, V.GENRE, V.NumCHASSIE, V.NSERIE, V.MATRICULE, V.CDS FROM VEHICULE V WHERE V.TYPEV = :pTypeVehicule';
    Data.QTYPEV.Parameters.ParamByName('pTypeVehicule').Value := Edit1.Text; // Edit1 doit contenir 'TRACTEUR ROUTIER'
    Data.QTYPEV.Open;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2009
    Messages : 42
    Points : 19
    Points
    19
    Par défaut
    merci de votre réponse
    mais je crois que votre solution marche avec les BDD comme access , paradox ou autre .....
    moi j'ai une base de donnée SQL serveur 2012 le @ c'est une syntaxe de SQL serveur
    dans l'éditeur du SQL j'ai pu faire une requête qui marche mais je sais pas l’interpréter vers Delphi
    j'ai chercher dans le net et le site developpez et le forum j'ai trouver ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QTYPEV.Parameters.Add(new SqlParameter ('@T', SqlDbType.VarChar, 80));
    QTYPEV.Parameters['@T'].Value = Edit1.Text;
    mais il y'a des erreurs :
    [Error]: Too many actual parameters
    [Error] : Undeclared identifier: 'SqlDbType'

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par netsoft Voir le message
    mais je crois que votre solution marche avec les BDD comme access , paradox ou autre .....
    moi j'ai une base de donnée SQL serveur 2012 le @ c'est une syntaxe de SQL serveur
    ShaiLeTroll vous à fourni la bonne syntaxe
    - le : est le marqueur des paramètres SQL des requêtes Delphi
    - le @ c'est le marqueur pour l'outil de requêtage de SQLServeur

    La seule chose que je reprocherai à ShaiLeTroll c'est de présumer qu'il s'agit d'un composant TADOQuery (ce pourrait être un DBExpress DBXQuery ou un TQuery pour ce que l'on en sait !) mais comme vous ne l'avez pas indiqué et que vous avez écrit Data.QTYPEV.Parameters.ParamByName('@T').Value:=Edit1.Text; je pense qu'il a raison
    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

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2009
    Messages : 42
    Points : 19
    Points
    19
    Par défaut
    finalement après réflexion j'ai opter pour cette syntaxe ça marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Data.QTYPEV.Close;
    Data.QTYPEV.SQL.Clear;
    Data.QTYPEV.SQL.Add('Declare @T  varchar(80)');
    Data.QTYPEV.SQL.Add('SET @T = '''+Edit1.text+'''');
    Data.QTYPEV.SQL.Add('SELECT VEHICULE.CODE, VEHICULE.TYPEV, VEHICULE.MARQUE, VEHICULE.GENRE, VEHICULE.NumCHASSIE, VEHICULE.NSERIE, VEHICULE.MATRICULE, VEHICULE.CDS');
    Data.QTYPEV.SQL.Add('FROM VEHICULE');
    Data.QTYPEV.SQL.Add('WHERE (((VEHICULE.TYPEV)=@T))');
    merci pour vos réponses

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Ton code c'est du C# (Framework .net) et non du Delphi, c'est normal que tu ai des erreurs et anormal que tu ne t'en rendes pas compte
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QTYPEV.Parameters.Add(new SqlParameter ('@T', SqlDbType.VarChar, 80));
    QTYPEV.Parameters['@T'].Value = Edit1.Text;

    La technique que j'ai proposé fonctionne avec SYBASE, SQL SERVEUR, ORACLE, et j'en passe tellement j'ai utilisé cette même méthode depuis plus de 15 ans

    j'ai fait des requêtes plus complexe de cette façon et j'ai appris pas mal de chose comme des différences en la couche BDE et ADO, cette dernière ne supportant pas deux fois le même nom de paramètre : ORACLE même SQL lancé via BDE ou ADO = DataSet différent
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    La seule chose que je reprocherai à ShaiLeTroll c'est de présumer qu'il s'agit d'un composant TADOQuery
    L'expérience ! C'est que je me fais vieux maintenant !
    TADOQuery est le seul à avoir une propriété Parameters
    TSQLQuery (DBX), TQuery (BDE), TOraQuery (Devart), TFDQuery (FireDAC) ont tous une propriété Params

    Citation Envoyé par netsoft Voir le message
    mais je crois que votre solution marche avec les BDD comme access , paradox ou autre .....
    Tu n'as même pas lu la page d'aide que j'ai fourni qui évoque TQuery, TIBQuery, TSQLQuery et TADOQuery
    Vu que TIBQuery c'est pour InterBase et FireBird, tu poses des questions mais tu ne persiste dans ton erreur

    Citation Envoyé par netsoft Voir le message
    moi j'ai une base de donnée SQL serveur 2012 le @ c'est une syntaxe de SQL serveur
    dans l'éditeur du SQL j'ai pu faire une requête qui marche mais je sais pas l’interpréter vers Delphi
    Justement la librairie, que ce soit BDE, ADO, DBX, SDAC transforme la syntaxe standard de Delphi vers la syntaxe alternative en fonction du SGBD

    Citation Envoyé par netsoft Voir le message
    finalement après réflexion j'ai opter pour cette syntaxe ça marche
    merci pour vos réponses
    De rien, tu ne suis pas nos conseils et je plains celui devra reprendre ton code
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  8. #8
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2009
    Messages : 42
    Points : 19
    Points
    19
    Par défaut
    bonjour ShaiLeTroll effectivement votre code source marche a merveille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Data.QTYPEV.Close;
    Data.QTYPEV.SQL.Text := 'SELECT VEHICULE.CODE, VEHICULE.TYPEV, VEHICULE.MARQUE, VEHICULE.GENRE, VEHICULE.NumCHASSIE, VEHICULE.NSERIE, VEHICULE.MATRICULE, VEHICULE.CDS FROM VEHICULE WHERE VEHICULE.TYPEV = :pTypeVehicule';
    Data.QTYPEV.Parameters.ParamByName('pTypeVehicule').Value := Edit1.Text; 
    Data.QTYPEV.Open;
    j'avais essayé de faire un code similaire j'avais une erreur c'est pour cela que j'ai opter pour l'autre code , je ne doute pas de votre compétence je sais que vous être un expert !!!
    un grand merci ShaiLeTroll

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

Discussions similaires

  1. Aide requête SQL sous SQL server 2008
    Par foxrol dans le forum Langage SQL
    Réponses: 2
    Dernier message: 30/11/2010, 12h04
  2. demande d'aide sur une requête sql serveur
    Par PHPkoala dans le forum Développement
    Réponses: 8
    Dernier message: 30/09/2009, 15h11
  3. [ORACLE][SQL] procedure sous delphi avec une requete SQL
    Par nivet dans le forum Bases de données
    Réponses: 2
    Dernier message: 17/11/2004, 13h43
  4. SQL serveur et Delphi
    Par cach dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 27/10/2004, 15h25
  5. requette sql compliqué sous delphi
    Par developpeur_mehdi dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/03/2004, 16h33

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