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 :

Reqûete Pramétrée (ADOquery)


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué
    Profil pro
    Chef d’entreprise
    Inscrit en
    Mars 2002
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef d’entreprise

    Informations forums :
    Inscription : Mars 2002
    Messages : 212
    Points : 149
    Points
    149
    Par défaut Reqûete Pramétrée (ADOquery)
    Bonjour
    J'ai crée le fichier SQL 'qrHoraire.sql' suivant et je l'ai mis dans le même répertoire que mon exécutable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select * from horaire
    where shift= :shift ;
    Ensuite j'ai écrit le code suivant :
    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
     
    procedure TfmConfig.FormShow(Sender: TObject);
    begin
    DataModule3.qrSeica.SQL.Clear;
    DataModule3.qrSeica.SQL.LoadFromFile('.\qrHoraire.sql');
    DataModule3.qrSeica.ParamCheck:=true;
     
    with Datamodule3.qrSeica.Parameters.AddParameter do
    begin
      DataType := ftString;
      Value := 'Matin';
    end;
     
    DataModule3.qrSeica.Active:=true;
    JvTime1.Time:=DataModule3.qrSeica.FieldByName('h_debut').AsDateTime;
    JvTime2.Time:=DataModule3.qrSeica.FieldByName('h_fin').AsDateTime;
    end;
    J'ai deux problèmes :
    1- Quand j'affiche le contenu de ma requête dans un memo juste après l'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataModule3.qrSeica.SQL.LoadFromFile('.\qrHoraire.sql');
    j'obtiens un résultat bizarre du type:
    ?????????ngs/zied/mes documents
    Quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    memo1.lines.LoadFromFile('.\qrHoraire.sql');
    j'obtiens un résultat identique au contenu du fichier SQL :
    select * from horaire
    where shift= :shift ;
    2- Ensuite, j'ai rajouté la suite du code et quand j'ai fait la compilation, j'ai obtenu l'erreur suivante :
    ftString : undeclared identifier
    bienque j'ai mis ADODB dans la clause uses.

    Suis-je entrain d'utiliser la bonne méthode?
    Que dois-je faire pour résoudre ces problèmes.
    merci

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    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 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Je te conseil d'utiliser plutot de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    With DataModule3.qrSeica do
    begin
      Close;
      SQL.Clear;
      SQL.LoadFromFile('.\qrHoraire.sql');
      ParamCheck:=true;
      Parameters.ParambyName('shift').Value := 'Matin';
      Open;
    end;
    Modérateur Delphi

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

  3. #3
    Membre habitué
    Profil pro
    Chef d’entreprise
    Inscrit en
    Mars 2002
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef d’entreprise

    Informations forums :
    Inscription : Mars 2002
    Messages : 212
    Points : 149
    Points
    149
    Par défaut
    Bonjour,
    merci pour cette réponse mais ça ne permet pas de résoudre mes problèmes.
    1- Avec cette instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL.LoadFromFile('.\qrHoraire.sql');
    Le contenu de ma requête est toujours le même :
    ?????????ngs/zied/mes documents
    Je suis obligé de passer par un memo pour contourner ce problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    memo1.clear;
    memo1.lines.loadfromfile('.\qrHoraire.sql');
    With DataModule3.qrSeica do
    begin
      Close;
      SQL.Clear;
      sql.Add(Memo1.Lines.Text);
      Parameters.ParambyName('shift').Value := 'Matin';
      Open;
    end;
    2 -Mais par la suite à l'exécution, j'ai une erreur du type
    paramaètre Shift inconnu

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    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 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Le problème doit venir d'ailleurs.
    Vu que qrSeica.SQL et Memo1.Lines sont tous deux de type TStrings, le LoadfromFile fonctionne de la même manière.

    Test déjà une chose simple, ouvre ton fichier sql avec le bloc-notes.

    Sinon il manque une ligne dans le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    With DataModule3.qrSeica do
    begin
      Close;
      SQL.Clear;
      SQL.LoadFromFile('.\qrHoraire.sql');
      //----------------------
      // Il faut absolument le mettre ca oblige le composant à rechercher les paramètres dans la requete
      ParamCheck:=true; 
      // ----------------------
      Parameters.ParambyName('shift').Value := 'Matin';
      Open;
    end;
    Modérateur Delphi

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

  5. #5
    Membre habitué
    Profil pro
    Chef d’entreprise
    Inscrit en
    Mars 2002
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef d’entreprise

    Informations forums :
    Inscription : Mars 2002
    Messages : 212
    Points : 149
    Points
    149
    Par défaut
    Mon fichier SQl a été crée avec bloc notes.
    Par rapport à la ligne
    Elle exite bien dans mon code delphi. c'est juste une omission dans mon post.
    J'ai l'impression que mon composant ADOquery fonctionne d'une manière très aléatoire!!!

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    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 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Je crois avoir vu le problème. Le nom du champ et du paramètre ont le même nom ...

    Pour eviter ce genre de problème, quand tu mets un paramètre dans une requete utilise un préfixe P_Shift (ou PShift)
    Modérateur Delphi

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

  7. #7
    Membre habitué
    Profil pro
    Chef d’entreprise
    Inscrit en
    Mars 2002
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef d’entreprise

    Informations forums :
    Inscription : Mars 2002
    Messages : 212
    Points : 149
    Points
    149
    Par défaut
    ça aussi j'ai fait.
    j'ai mis un paramètre nommé sift au lieu de shift mais le résultat est le même.

  8. #8
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    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 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Et en dur directement est ce qu'elle fonctionne ?
    Modérateur Delphi

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

  9. #9
    Membre habitué
    Profil pro
    Chef d’entreprise
    Inscrit en
    Mars 2002
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef d’entreprise

    Informations forums :
    Inscription : Mars 2002
    Messages : 212
    Points : 149
    Points
    149
    Par défaut
    OUI ça marche

  10. #10
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    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 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Rajoute une ligne pour faire une sauvegarde de la requete comme-ci dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    With DataModule3.qrSeica do
    begin
      Close;
      SQL.Clear;
      SQL.LoadFromFile('.\qrHoraire.sql');
      ParamCheck:=true; 
      Parameters.ParambyName('shift').Value := 'Matin';
      SQL.SaveToFile(ExtractFilePath(Application.ExeName) + 'test.txt');
      Open;
    end;
    et tu regardes ce que tu as dans le fichier test.txt
    Modérateur Delphi

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

Discussions similaires

  1. [ADOQuery]Comment ajouter un prametre a un ADOQuery
    Par bitou dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/04/2004, 15h08
  2. [ADOQuery] Propriété Fields
    Par bitou dans le forum Bases de données
    Réponses: 7
    Dernier message: 21/04/2004, 11h24
  3. Probleme S/ UPDATE : ADOQUERY base = .DBF , D7
    Par bzh56 dans le forum Bases de données
    Réponses: 5
    Dernier message: 18/02/2004, 01h56
  4. Problème de reqûete sur la date, année et mois en cours
    Par Jean-Marc dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/02/2004, 16h36
  5. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24

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