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 :

Effectuer une requête


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 465
    Par défaut Effectuer une requête
    Bonjour,

    J'utilise Delphi 7 avec une petite base de données Firebird.
    L'accès à la base de données fonctionne.
    Par contre je souhaiterais effectuer une requête sur ma base de données :
    ->
    Ma base de données Firebird est composé de trois champs :
    - un champs de texte : ' Nom '
    - un champs de texte : ' Nature '
    - un champs mémo : ' Description '


    Sous Delphi 7, j'ai une form qui comprend :
    - un TEdit : ' Recherche'
    - un DBlistBox : qui indique éventuellement si le nom de la plante saisis dans le TEdit est trouvé.
    - un DBMemo : qui indique lorsque l'on clique dans le DBLisBox le descriptif de la plante.

    Comment faire pour utiliser une requête me permettant d'effectuer une recherche de texte dans le DBMemo et m'afficher le résultat trouvé dans le DBlistbox..?

    Pour faire plus simple : j'essaie de reproduire la même chose que la rubrique de recherche d'aide sous delphi.

    Sinon, si quelqu'un pourrait me décrire la manière de procéder en utilisant un IBQuery et transmettre le résultat dans un DBListBox...?

    Merci d'avance..
    a+

  2. #2
    Membre éprouvé
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Par défaut
    exemple de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dm1.Cust001.SelectSQL.Clear;
        dm1.Cust001.SelectSQL.Add('select * from cust001');
        dm1.Cust001.SelectSQL.Add('where upper('cust001.CU001CNOM') LIKE upper(' + chr(39) + Edit1.Text + '%' + chr(39)+ ')');
        dm1.Cust001.SelectSQL.Add('Order by cust001.CU001CNOM');
        dm1.cust001.Active := false;
        dm1.cust001.Active := True;
    dm1 : datamodule ou sont les compos
    Cust001 : un Dataset (j'aurais pu utiliser un Query)
    Edit1 : le Edit ou on tape le texte de recherche.

    Ce morceau de code est dans le OnChange de Edit1.

    J'espère que ça pourras t'aider.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 465
    Par défaut
    Merci pour ta réponse, mais je n'arrive pas à adapter ton code...
    En fait j'utilise un IBQUERY..
    La syntaxe de ma requête est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     FPrincipale.IBQuery1.SQL.Add('SELECT * FROM FLORE');
     FPrincipale.IBQuery1.SQL.Add('WHERE Upper(BaseAnalys) LIKE "'+UpperCase(ENature.text)+'%"');
    BaseAnalys est un champ de type memo, où l'utilisateur peut saisir n'importe quel descriptif quand à la nature de la plante.
    Par exemple : arbuste jaune avec petites feuilles...
    Il suffit que l'utilisateur effectue une recherche par "jaune" dans la zone de saisie, pour que mon Query affiche dans un listbox les enregistrements repérés.

    Si trouve bien entendu (je ne l'ai pas rajouté pour des raisons de lisibilités..):
    FPrincipale.IBQuery1.Close;
    FPrincipale.IBQuery1.Open;

    Et lorsque je procède à l'exécution, j'ai le message d'erreur suivant :

    " Le projet Project1.exe a provoqué une classe d'exeption EIBinterBaseError avec le message 'Dynamic SQL Error'
    SQL error code = -206
    Column unknown
    L%
    at line 2, column 25.
    Processus stoppé "

    Cette erreur se produit dès que j'essaie de saisir la lettre d'un début de mot, par exemple : L

    ?

  4. #4
    Membre éprouvé
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Par défaut
    Tu peux afficher le contenu du query stp ? (un showmessage ou tu l'affiche dans un memo et copie-colle).

    D'après ton code j'ai l'impression que tu as mis le UpperCase() entre "" : faut pas ca fait parti de l'SQL.

    C'est le ENature.text qui doit être entre côtes simples ou

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 465
    Par défaut
    Tu veuts dire le contenu de l' IBQUERY, dans la propriété SQL et en cliquant à droite : TString[...] SQL ?
    Si c'est le cas , je n'ai rien mis dans la chaine de propriété du SQL de IBQUERY.

    J'ai laissé à vide et la propriété active est à false.
    J'ai purement codé.

  6. #6
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 932
    Par défaut
    Essaies ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FPrincipale.IBQuery1.SQL.Add('SELECT * FROM FLORE');
     FPrincipale.IBQuery1.SQL.Add('WHERE Upper(BaseAnalys) LIKE '+QuotedStr(UpperCase(ENature.text)+'%');

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 11/04/2007, 16h54
  2. Comment effectuer une requête http post ?
    Par Turtle_fr dans le forum 4D
    Réponses: 10
    Dernier message: 07/09/2006, 01h25
  3. Réponses: 4
    Dernier message: 06/09/2006, 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