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 :

TADOQuery : Requête paramétrée avec Delphi 7


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 192
    Par défaut TADOQuery : Requête paramétrée avec Delphi 7
    Bonjour,

    J'ai réussit à faire fonctionner une requette sans parametre,

    Par contre, quand je veux paramétrer (Nom Elv; date debut et Date fin) cette même requete (avec 3 paramètres) , elle affiche un contenu vide dans la grille, sans me signaler une erreur de syntaxe en passant.

    Voici à quoi ressemble cette requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    begin
      qryLesNotes.SQL.Clear;
      qryLesNotes.SQL.Add ('SELECT N.ScoNum, ... , C.CycNom ');
      qryLesNotes.SQL.Add ('FROM  tblNotes N');
      qryLesNotes.SQL.Add ('INNER JOIN ...');
      qryLesNotes.SQL.Add ('INNER JOIN ... ');
      qryLesNotes.SQL.Add ('INNER JOIN ... ');
     
      qryLesNotes.SQL.Add ('WHERE (N.EtuNum = :ParamEtuNum)');
      qryLesNotes.SQL.Add ('AND (N.NotDate Between :ParamDateDebut And :ParamDateFin)');
     
      qryLesNotes.SQL.Add ('GROUP BY N.ScoNum, ... ');
      qryLesNotes.SQL.Add ('HAVING ... ');
      qryLesNotes.SQL.Add ('ORDER BY E.EtuNom, M.MatNom');
     
      qryLesNotes.Parameters.ParamByName('ParamEtuNum').Value := dlcEtuNum.Text;
      qryLesNotes.Parameters.ParamByName ('ParamDateDebut').Value := dtpDateDebut.Date;
      qryLesNotes.Parameters.ParamByName ('ParamDateFin').Value := dtpDateFin.Date;  
     
      qryLesNotes.Open;
    end;

    Comment puis je faire que la requette affiche les données : car la grille est vide. Je tape le nom de l'eleve; la date de debut et de fin; puis clic sur un bouton. rien ne s'affiche...

    Merci de m'aider

    Lionel Eric

  2. #2
    Membre chevronné
    Avatar de alheuredudejeuner
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2005
    Messages : 376
    Billets dans le blog
    4
    Par défaut asstring à la place de value ?
    ou bien AsDate
    qryLesNotes.Parameters.ParamByName ('ParamDateDebut').AsDate

    pour voir

    André

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 192
    Par défaut TADOQuery : Requête paramétrée avec Delphi 7
    bonjour,

    le sgbd que j'utilise est le SQL SERVER 2000
    Quand j'essaie de mettre la syntaxe suivante (qui marche avec le DELPHI BDE PARADOX), elle affiche erreur de syntaxe :
    qryLesNotes.Parameters.ParamByName ('ParamDateDebut').AsDate
    Erreur de syntaxe parce que .asDate n'apparait pas dans l'IDE

    NB les 3 paramètres
    ParamEtuNum = type string
    ParamDateDebut = type date
    ParamDateFin = type date

    voici ma requête complète, en passant elle contient des formules qui calculent la Moyenne (AVG) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    With dmGesco2010 do
     
    begin
     
      qryLesNotes.SQL.Clear;
     
      qryLesNotes.SQL.Add ('SELECT N.ScoNum, N.EtuNum,E.EtuNom, E.EtuPrenoms, S.SexNom,V.VilNom, Na.NatNom, I.ClaNum, M.MatNom, TJ.Coeff, AVG(N.NotDevoir) AS Devoir, AVG(N.NotCompo) AS Compo, C.CycNom ');
     
      qryLesNotes.SQL.Add (' '+', F.FilNom,O.OptNom, (AVG(N.NotDevoir) + AVG(N.NotCompo)) / 2 AS Moy, (AVG(N.NotDevoir) + AVG(N.NotCompo))/ 2 * TJ.Coeff AS MoyGle ');
     
      qryLesNotes.SQL.Add ('FROM  tblNotes N');
     
      qryLesNotes.SQL.Add ('INNER JOIN TJ_Programmer TJ ON N.ScoNum = TJ.ScoNum');
     
      qryLesNotes.SQL.Add ('INNER JOIN tblEtudiant E ON N.EtuNum = E.EtuNum');
     
      qryLesNotes.SQL.Add ('INNER JOIN tblInscription I ON E.EtuNum = I.EtuNum');
     
      qryLesNotes.SQL.Add ('INNER JOIN tblClasse ON TJ.ClaNum = tblClasse.ClaNum AND I.ClaNum = tblClasse.ClaNum');
     
      qryLesNotes.SQL.Add ('INNER JOIN tblMatiere M ON N.MatCode = M.MatCode AND TJ.MatCode = M.MatCode');
     
      qryLesNotes.SQL.Add ('INNER JOIN tblSexe S ON E.SexNum = S.SexNum');
     
      qryLesNotes.SQL.Add ('INNER JOIN tblVille V ON E.VilNum = V.VilNum');
     
      qryLesNotes.SQL.Add ('INNER JOIN tblCycle C ON tblClasse.CycNum = C.CycNum');
     
      qryLesNotes.SQL.Add ('INNER JOIN tblNation Na ON E.NatNum = Na.NatNum');
     
      qryLesNotes.SQL.Add ('INNER JOIN tblFiliere F ON tblClasse.FilNum = F.FilNum');
     
      qryLesNotes.SQL.Add ('INNER JOIN tblOption O ON tblClasse.OptNum = O.OptNum');
     
     
     
      qryLesNotes.SQL.Add ('WHERE (N.EtuNum = : ParamEtuNum)');
     
      qryLesNotes.SQL.Add ('AND (N.NotDate Between : ParamDateDebut And : ParamDateFin)');
     
     
     
      qryLesNotes.SQL.Add ('GROUP BY N.ScoNum, N.EtuNum, E.EtuNom, E.EtuPrenoms, S.SexNom, V.VilNom,Na.NatNom, I.ClaNum, M.MatNom, TJ.Coeff,   C.CycNom, F.FilNom,O.OptNom');
     
      qryLesNotes.SQL.Add ('HAVING ((AVG(N.NotDevoir) + AVG(N.NotCompo)) / 2 IS NOT NULL)');
     
      qryLesNotes.SQL.Add ('ORDER BY E.EtuNom, M.MatNom');
     
     
     
      qryLesNotes.Parameters.ParamByName('ParamEtuNum').Value := dlcEtuNum.Text;
     
      qryLesNotes.Parameters.ParamByName ('ParamDateDebut').Value := dtpDateDebut.Date;
     
      qryLesNotes.Parameters.ParamByName ('ParamDateFin').Value := dtpDateFin.Date;     
     
     
     
      qryLesNotes.Open;
     
    end;
    Merci de pouvoir m'aider à résoudre la difficulté

    Eric

  4. #4
    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
    Par défaut
    Salut,
    1° Est ce que tu es sur que si tu met directement la valeur des paramètres dans la requête elle même, tu as des lignes ?
    2° Est ce une erreur de frappe car tu as mis des espaces au niveau de tes paramètres :
    qryLesNotes.SQL.Add ('WHERE (N.EtuNum = : ParamEtuNum)');
    qryLesNotes.SQL.Add ('AND (N.NotDate Between : ParamDateDebut And : ParamDateFin)');
    change en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    qryLesNotes.SQL.Add ('WHERE (N.EtuNum = :ParamEtuNum)');
    qryLesNotes.SQL.Add ('AND (N.NotDate Between :ParamDateDebut And :ParamDateFin)');
    En faites, j'ai fais une simulation avec SQL Server 2000 et D7 et ça me sort bien les enregistrements. J'ai procedé comme suit (en substituant avec ton code) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    qryLesNotes.Parameters.ParamByName('ParamEtuNum').Value := dlcEtuNum.Text;
    qryLesNotes.Parameters.ParamByName ('ParamDateDebut').Value := FormatDateTime('YYYY-MM-DD',dtpDateDebut.Date);
    qryLesNotes.Parameters.ParamByName ('ParamDateFin').Value := FormatDateTime('YYYY-MM-DD',dtpDateFin.Date);
    A essayer et tenez nous au courant de l'évolution.

    A+

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 192
    Par défaut TADOQuery : Requête paramétrée avec Delphi 7
    bjr

    merci bien

    pour répondre rapidement, je n'ai pas mis des espaces dans mon code entre les deux poits et Param...

    A tout de suite

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2005
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 192
    Par défaut TADOQuery : Requête paramétrée avec Delphi 7
    Bonjour

    j'ai essayé cette syntaxe, mais sans succès, il ne signale pas d'erreur de syntaxe mais à l'exécution le contenu de la grille est vide : ça ne fonctionne toujours pas.
    Je me dis personnellement que la syntaxe ci-dessous ne pas correcte avec les parametres pour un composant TADOQuery

    qryLesNotes.Parameters.ParamByName('ParamEtuNum').Value := dlcEtuNum.Text;
    qryLesNotes.Parameters.ParamByName ('ParamDateDebut').Value := FormatDateTime('YYYY-MM-DD',dtpDateDebut.Date);
    qryLesNotes.Parameters.ParamByName ('ParamDateFin').Value := FormatDateTime('YYYY-MM-DD',dtpDateFin.Date);
    Merci d'avance pour la résolution du pb

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

Discussions similaires

  1. Requête paramétrées sous delphi 2006
    Par jullegeay dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/06/2006, 07h56
  2. Requète paramétrée avec résultat variable
    Par slackjayo dans le forum Access
    Réponses: 2
    Dernier message: 28/04/2006, 20h39
  3. Requête Paramétrée avec DropDownList
    Par kirgan dans le forum Access
    Réponses: 2
    Dernier message: 24/04/2006, 16h22
  4. [WD8] Requêtes paramétrées avec accès odbc direct
    Par devalender dans le forum WinDev
    Réponses: 5
    Dernier message: 20/12/2005, 12h25
  5. Déterminer une requête paramétrée avec LIKE
    Par priest69 dans le forum Access
    Réponses: 4
    Dernier message: 24/10/2005, 19h29

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