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 :

[ADO] Query et Parameters


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Janvier 2003
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 12
    Par défaut [ADO] Query et Parameters
    Bonjour,

    Nous modifions une application qui utilisait IBX vers ADO et SQL Server.

    J'ai une requete comme ça par exemple :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from matable where DTFROM < @DT or DTTO > @DT;


    Dans les requêtes IBX, si j'ai plusieurs fois le même paramètre je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       ParamByName('DT').AsDate := Now
    et cela me remplace correctement tous les paramètres DFROM de la requête.

    Avec ADO, si je fais la même chose seul le 1er paramètre est modifié.

    Est-ce que c'est normal ou bien s'agit d'une option des requêtes ?

    Est-ce qu'il faut que je fasse une boucle sur tous les paramètres pour les modifier ?

    Merci pour votre aide

    Pascal

  2. #2
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 400
    Par défaut
    Salut,

    pour la modification tu as besoin d'un UPDATE or le SELECT ne fais que restreindre l'ensemble de données selon tes critères dans la clause WHERE.

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2003
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 12
    Par défaut
    Bonjour,

    Je ne comprends pas a réponse, il s'agit d'un SELECT pour affichage des données à l'écran.

    Pascal

  4. #4
    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 surfer2k Voir le message
    Bonjour,
    Est-ce que c'est normal ou bien s'agit d'une option des requêtes ?
    A ma connaissance, j'ai toujours vu les composants ADO ne remplir que le 1er des paramètres

    Citation Envoyé par surfer2k Voir le message
    Est-ce qu'il faut que je fasse une boucle sur tous les paramètres pour les modifier ?
    Oui, ou alors tu fait 2 paramètres différents (plus simple que de faire une boucle)


    Citation Envoyé par Just-Soft Voir le message
    Salut,

    pour la modification tu as besoin d'un UPDATE or le SELECT ne fais que restreindre l'ensemble de données selon tes critères dans la clause WHERE.
    tu ne t'es pas trompé de sujet car ca n'a rien à voir la ?
    Modérateur Delphi

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

  5. #5
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 400
    Par défaut
    Re,

    @Rayek : non non, pour ne pas faire de boucle il doit pouvoir faire les modifications avec un UPDATE WHERE.

  6. #6
    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 Just-Soft Voir le message
    Re,

    @Rayek : non non, pour ne pas faire de boucle il doit pouvoir faire les modifications avec un UPDATE WHERE.
    Montre un exemple de ce que tu veux dire, car la je ne comprend pas ce que tu veux lui expliquer.

    Son problème viens du @DT dans sa requête qui n'est renseigné qu'une fois quand tu fais un Parameters.ParamByName('DT')
    Modérateur Delphi

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

  7. #7
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 400
    Par défaut
    moi je pensais à quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE maTable
    SET UnChamp = valeur
    WHERE UnAutreChamp := parametre

  8. #8
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Par défaut
    @surfer2k, bonjour

    Effectivement avec ADO si tu utilise 2 fois le même parameters dans une requete il remplace que le premier.

    Soit tu utilise 2 parameters :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Add.SQL := 'SELECT * FROM matable WHERE DTFROM < @DTDeb OR DTTO > @DTFin'
    Parameters.ParamByName('DTDeb').AsDate := Now
    Parameters.ParamByName('DTFin').AsDate := Now
    Soit tu utilise Format :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    xNow := FormatDateTime('dd/mm/yyyy',Now);
    Add.SQL := Format('SELECT * FROM matable WHERE DTFROM < %s OR DTTO > %s', [xNow]));

  9. #9
    Membre habitué
    Inscrit en
    Janvier 2003
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 12
    Par défaut
    Bonjour à tous et merci pour ces précisions.

    J'ai essayé une autre technique qui me permet de conserver la requête préparée et d'avoir la gestion des paramètres.
    Tous les tests que j'ai fait sont concluants mais si vous avez des remarques à faire sur cette suggestion je suis preneur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    DECLARE  @dBeginDate          datetime
    SELECT  @dBeginDate         = :dFrom
     
    SELECT [PLG_ID] ,[PLG_DATE]
      FROM [Planning[PLANNING]
    WHERE ([PLG_DATE] < @dBeginDate) OR ([PLG_DATE] > @dBeginDate)
    Ensuite j'ai plus qu'à faire .Parameters.ParamByName('dFrom').Value := Date;

    Vos avis sachant qu'on est dans une applis delphi bien sûr ?

    Pascal

  10. #10
    Membre Expert Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 553
    Par défaut
    Personnellement ça fait un moment que je n'utilise plus les paramètres du moins que je les gère dans le code un peu dans le style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var sDateNow,sRequete : string;
    
      sDateNow := FormatDateTime('dd/mm/yyyy',Now);
      sRequete := 'SELECT * FROM  matable WHERE DTFROM < _Date OR DTTO > _Date;'
      sRequete := StringReplace(sRequete,  '_Date', sDateNow,
                              [rfReplaceAll]);
    En fait j'ai fait une petite fonction j'en profite pour centraliser les paramètres ce qui permet de gérer notamment les syntaxes différentes suivant les bases de données attaquées.

Discussions similaires

  1. Pb de threads / query et ADO
    Par Toto41 dans le forum Bases de données
    Réponses: 4
    Dernier message: 24/03/2009, 13h01
  2. Réponses: 2
    Dernier message: 06/02/2009, 13h56
  3. [3.5 + ADO.net] Récup Output Parameter
    Par CUCARACHA dans le forum ASP.NET
    Réponses: 2
    Dernier message: 09/02/2008, 11h17
  4. Ou je trouve l'erreuer dans ce code[ADO Query]
    Par aliwassem dans le forum Bases de données
    Réponses: 4
    Dernier message: 04/04/2007, 14h07
  5. ADO et Query
    Par care dans le forum Bases de données
    Réponses: 7
    Dernier message: 06/02/2007, 14h04

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