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 :

Requete paramétrée avec des singles quotes ?


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 147
    Points : 184
    Points
    184
    Par défaut Requete paramétrée avec des singles quotes ?
    Bonjour à tous,

    je suis sur Delphi XE (en période d'essai !) + F 2.5.
    Je passe par un composant dbExpress (SQLConnexion, Query + DSP + ClientDataSet +DS).
    Je fais une requête paramétrée avec comme paramètre TEdit.text
    La requête ne me renvoie rien ! alors que la même requête fonctionne sans problème avec D7 et directement sur Firebird.
    J'a ifait des essais en pensant que le ClientDataSet ne se mettait pas à jour. Mais quand je change la requête sql directement par le Query les résultats s'affiche sans problème.
    La seule possibilité que je vois est la nécessité de mettre la valeur de mon Edit.text entre '' mais je ne vois pas la fonction qui pourrait faire ça ..
    Voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    procedure TF_Recherche.Bt_ChercherClick(Sender: TObject);
     
    begin
     
      DM_F_Base.Q_Personne.Close;
      DM_F_Base.Q_Personne.SQL.Clear;
      DM_F_Base.Q_Personne.SQL.LoadFromFile('L:\SQL\Personne_Nom.sql');
      DM_F_Base.Q_Personne.ParamByName('Nom').AsString := Ed_Nom.Text;
      DM_F_Base.Q_Personne.Open;
     
    end;
    Merci d'avance
    Au royaume des aveugles, les borgnes sont rois.

  2. #2
    Membre chevronné Avatar de chaplin
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 215
    Points : 1 819
    Points
    1 819
    Par défaut
    Dans la propriété Options du DatasetProvider, il faut paramétrer poAllowCommandText à True. Pas besoin de renseigner la propriété commandtext dans le TSQLQuery puisque le datasetprovider est configuré pour recevoir les requêtes du Clientdataset.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 147
    Points : 184
    Points
    184
    Par défaut
    Merci pour ta réponse Chaplin mais cela ne change rien mais ca m'a permit de comprendre un peu mieux le fonctionnement des composants DbExpress (je débute avec ces composants avant j'utilisais les IBX )
    Il faut bien mettre la requête paramétrée dans le Query ou dans le ClientDataSetProvider ?

    Mirmillon
    Au royaume des aveugles, les borgnes sont rois.

  4. #4
    Membre chevronné Avatar de chaplin
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 215
    Points : 1 819
    Points
    1 819
    Par défaut
    , je répète, tu dois modifier les options du composant TDatasetProvider, ou plutôt une option (paAllowCommandText = true) et placer la requête SQL dans la propriété CommandText du composant TClientDataset au lieu du composant TSQLQuery (perso j'utilise un TSQLDataset), rien de plus, et ça marche parce que j'ai fait le test from scratch. Petite précision, le traitement doit être réalisé sur le clientdatadet (Parambyname, Open, etc).

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 147
    Points : 184
    Points
    184
    Par défaut
    Merci beaucoup Charlin !
    Je ne pense pas que j'aurais trouvé la réponse à mon problème rapidement sans ton aide. au cas ou quelqu'un aurait le même problème je met 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
    14
    procedure TF_Recherche.Bt_ChercherClick(Sender: TObject);
    begin
    //Fermeture du query
    DM_F_Base.Q_Personne.Close;
    //fermeture du client dataset
    DM_F_Base.CDS_Personne.Close;
    //Je "relie" les commadds text du clientdataset et du SQLDataSet
    DM_F_Base.CDS_Personne.CommandText := DM_F_Base.SQL_Personne.CommandText;
    //affectation du paramlétre
    DM_F_Base.CDS_Personne.Params.ParamByName('Nom').AsString:= Ed_Nom.Text;
    //Réouverture  
    DM_F_Base.CDS_Personne.Open;
    DM_F_Base.Q_Personne.Open;
    end;
    Peut être pourrais tu me donner un filon pour remplir le SQLDataSet directement à partir d'un fichier SQL ou il faut passer par les commandes de gestion de fichiers ?

    Merci encore

    Mirmillon
    Au royaume des aveugles, les borgnes sont rois.

  6. #6
    Membre chevronné Avatar de chaplin
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 215
    Points : 1 819
    Points
    1 819
    Par défaut
    Dans le code, pas besoin de faire appel au SQLdataset bien qu'il soit nécessaire en tant que maillon de la chaîne, tu passes tout par le clientdataset, bien sûr uniquement si tu fais le paramétrage dans de datasetprovider.

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

Discussions similaires

  1. Voir la requete paramétrée avec les valeurs des paramètres
    Par Jdubernat dans le forum Accès aux données
    Réponses: 4
    Dernier message: 27/10/2008, 18h35
  2. passer une requete ajout avec des enregitrement null
    Par LesLemmings dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 13/06/2006, 15h20
  3. requete paramétrée avec TADOQuery et Oracle
    Par SlimInfo dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/05/2006, 09h44
  4. [Tableaux] souci avec des simples quotes
    Par Jean Fi dans le forum Langage
    Réponses: 6
    Dernier message: 29/03/2006, 20h13
  5. Date nulle dans une requete paramétrée avec TParameter
    Par denrette dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/06/2004, 08h37

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