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 :

Requête SQL paramètrée et passage de paramètres


Sujet :

Bases de données Delphi

  1. #1
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut Requête SQL paramètrée et passage de paramètres
    Salut à tous.
    Je dois attaqué une base de donnée sous SQL Server 2000 avec Delphi 7.
    J'utilise les compos ADO : ADOConnection et ADOQuery.
    Voci un exemple de requête que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    INSER INTO TBL_DETAIL (
    DT_DOMAINE,DT_TYPE,DT_DATE,DT_DATEBL,DT_DATEBC)
    VALUES(
    :PDOMAINE,:PTYPE,:PDATE,:PDATE,:PDATE)
    Lorsque j'execute cette requête et que je renseigne les 3 paramètres, seules DT_DATE est renseigné quand je regarde au niveau de la table.
    Du coup, je dois mettre les 2 autres paramètres avec des noms diférent.
    Est ce une comportement normale, car si je me souviens bien avec Firebird, je peux le faire dans mes procedures stockés.
    Si vous me dites, à quoi sert les 3 dates si'ils sont de même valeur, c'est que c'est une appli qui fonctionne déjà et que je dévéloppe un add-on pour automatiser un traitement particulier.

    Merci
    On progresse .....

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 185
    Points : 192
    Points
    192
    Par défaut
    Hello,

    Je pense que tu dois répéter 3 fois l'application de ton paramètre même si c'est la même variable....

    Donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    MaReqette.Parameters.ParamByName('PDOMAINE').Value :=  val1;
    MaReqette.Parameters.ParamByName('PTYPE').Value :=  val2;
    MaReqette.Parameters.ParamByName('PDATE').Value :=  Val3;
    MaReqette.Parameters.ParamByName('PDATE').Value :=  Val3;
    MaReqette.Parameters.ParamByName('PDATE').Value :=  Val3;
    Tu peux le faire, tu veux le faire tu vas le faire Bref, soyons positif

  3. #3
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    j'ai ce même problèmes oui c'est bizarre


    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSER INTO TBL_DETAIL (
    DT_DOMAINE,DT_TYPE,DT_DATE,DT_DATEBL,DT_DATEBC)
    VALUES(
    :PDOMAINE,:PTYPE,:PDATE1,:PDATE2,:PDATE3)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MaReqette.Parameters.ParamByName('PDOMAINE').Value :=  val1;
    MaReqette.Parameters.ParamByName('PTYPE').Value :=  val2;
    MaReqette.Parameters.ParamByName('PDATE1').Value :=  Val3;
    MaReqette.Parameters.ParamByName('PDATE2').Value :=  Val3;
    MaReqette.Parameters.ParamByName('PDATE3').Value :=  Val3;
    et sa va marcher

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    158
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 158
    Points : 158
    Points
    158
    Par défaut
    Je te conseille de le faire à chaque que tu auras le cas.

    (Paramêtres doubles ou +), car même si tu n' as pas d'erreurs sur le open où l'execsql, j'ai déja eu des cas où les données étaient parfois fausses.

    C'est donc un reflexe à prendre à chaque requête de ce type.


    A+
    Pitango
    -------------------------------------------------
    [Delphi7.1 Entreprise][MYSQL 5.0.27][SQL SERVER 7][W2000/NT4]

  5. #5
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Enfin de compte, j'ai modifié ma requête dès que j'ai vu que ça ne passe pas. Seulement, comme je n'ai pas l'habitude avec ADO, il fallait que je demande si c'est un comportement normal.
    A priori donc, c'est normal.

    Merci à tous
    On progresse .....

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

Discussions similaires

  1. [AC-2007] Passage de paramètre VBA dans requête SQL
    Par El Bosc dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 23/11/2013, 16h01
  2. [AC-2010] Requête de suppression et passage de paramètre au format texte
    Par shakapouet dans le forum VBA Access
    Réponses: 1
    Dernier message: 17/07/2012, 15h36
  3. [PHP 4] Appeler des requêtes SQL en leur passant des paramètres
    Par grinder59 dans le forum Langage
    Réponses: 3
    Dernier message: 23/02/2009, 12h06
  4. Réponses: 4
    Dernier message: 21/02/2009, 17h37
  5. Réponses: 7
    Dernier message: 31/07/2007, 15h14

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