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 :

requête pour afficher


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 37
    Points : 12
    Points
    12
    Par défaut requête pour afficher
    Bonjour,

    J'ai utilisé ce bout de code pour afficher les clients avec le nom que l'utilisateur entre dans un edit mais il ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm5.sBitBtn5Click(Sender: TObject);
    begin
    query1.sql.clear;
    query1.SQL.Add('select* from ventes where NomC=');
    query1.SQL.add(sedit3.text);
    query1.execsql;
    end;
    quelqu'un pour m'aider ? Merci

  2. #2
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    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 401
    Points : 2 304
    Points
    2 304
    Par défaut
    sauf erreur de ma part car pas tester voilà le code corrigé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm5.sBitBtn5Click(Sender: TObject);
    begin
    query1.sql.clear;
    query1.SQL.Add('select* from ventes where NomC =:var1 ');
    query1.SQL.Params[0] := Edit.Text;
    query1.Open;
    end;
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 37
    Points : 12
    Points
    12
    Par défaut
    merci pour ta réponse mais ça marche pas ya une erreur au niveau de params

  4. #4
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 216
    Points : 2 303
    Points
    2 303
    Par défaut
    Bonjour,

    quelle est l'erreur ?
    Sinon dans ton code, ça doit pouvoir fonctionner si tu mets sedit3.text entre quotes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    query1.SQL.add( QuotedStr( sedit3.text));
    @++
    Dany

  5. #5
    Membre averti Avatar de archonte
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 392
    Points
    392
    Par défaut
    Je trouve toujours plus simple l'utilisation des paramètres. Mais as-tu fais attention à la position des ":" dans la clause SQL : "NomC = :Var1". Par ailleurs les paramètres sont affectés à la Query et non à sa propriété SQL.
    Citation Envoyé par Just-Soft - Modifié
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm5.sBitBtn5Click(Sender: TObject);
    begin
    query1.sql.clear;
    query1.SQL.Add('SELECT * FROM ventes WHERE NomC = :Var1 ');
    query1.Parameters.ParamByName('Var1').Value := Edit1.Text; // parametre renseigné par l'utilisateur 
    query1.Open;
    end;
    "Je n'ai jamais rencontré d'homme si ignorant qu'il n'eut quelque chose à m'apprendre."
    Galilée

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    Hello,

    On peut utiliser 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
    procedure TForm1.EditFiltreChange(Sender: TObject);
    var
      Filtre : string;
    begin
      Filtre := 'Nom =''' + EditFiltre.Text + '*'''; //Filtre construit avec le texte saisi dans le TEdit
      if EditFiltre.Text ='' then // Test, il n'y a rien dans le TEdit
      begin
        Query1.Filtered:=false; // Arrête le filtrage de la table
        exit; //
      end;
      Query1.FilterOptions:= Query1.FilterOptions + [foCaseInSensitive]; // ignore majuscules/minuscules
      Query1.Filter := Filtre; // Mise en place du filtre
      Query1.Filtered := true; // Activation du filtre
    end;
    Avantage le tri s'effectue en temps réel après chaque saisie d'une lettre dans le tedit

  7. #7
    Membre confirmé
    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
    Points : 632
    Points
    632
    Billets dans le blog
    4
    Par défaut oups, le filter c'est bien uniquement quand il y a peu d'enregistrements
    ou pour économiser des requêtes sur un réseau.

    Mais des que la table avec les noms devient conséquente on ne peux se passer du query. (ramener de la table juste les enregistrements qui nous intéresse)

    Ce qui m'intrigue c'est

    quel composant est utilisé pour la requête ? Comment est utilisée ( affichée ) la réponse ?

    André

  8. #8
    Membre averti Avatar de archonte
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 392
    Points
    392
    Par défaut
    Citation Envoyé par alheuredudejeuner Voir le message
    Ce qui m'intrigue c'est quel composant est utilisé pour la requête ? Comment est utilisée ( affichée ) la réponse ?
    André
    ça doit être paradox d'après cet autre post !!
    "Je n'ai jamais rencontré d'homme si ignorant qu'il n'eut quelque chose à m'apprendre."
    Galilée

  9. #9
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    salut esaye la meme requéte sans paramétre et regarde qu'st ce qu'elle retourne comme résultat si le résulatat est + ; alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm5.sBitBtn5Click(Sender: TObject);
    begin
    query1.sql.clear;
    query1.SQL.Add('select* from ventes where NomC=');// je crois que l'erreur est la c'est à vérifier manque les :.
    query1.SQL.add(sedit3.text);
    query1.execsql;// on met .open ou .active au lieu de exesql .
    end;
    sino regarde dans le paramétrage du composant requête comme il a été cité

    lien trés important : http://sql.developpez.com/

  10. #10
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 37
    Points : 12
    Points
    12
    Par défaut
    merci les gars pour vos réponse

  11. #11
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 37
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par redoran Voir le message
    salut esaye la meme requéte sans paramétre et regarde qu'st ce qu'elle retourne comme résultat si le résulatat est + ; alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm5.sBitBtn5Click(Sender: TObject);
    begin
    query1.sql.clear;
    query1.SQL.Add('select* from ventes where NomC=');// je crois que l'erreur est la c'est à vérifier manque les :.
    query1.SQL.add(sedit3.text);
    query1.execsql;// on met .open ou .active au lieu de exesql .
    end;
    sino regarde dans le paramétrage du composant requête comme il a été cité

    lien trés important : http://sql.developpez.com/
    l'erreur utilisation incorrect du mot clé Element: "le nom client"

  12. #12
    Membre à l'essai
    Inscrit en
    Juin 2010
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 37
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par archonte Voir le message
    Je trouve toujours plus simple l'utilisation des paramètres. Mais as-tu fais attention à la position des ":" dans la clause SQL : "NomC = :Var1". Par ailleurs les paramètres sont affectés à la Query et non à sa propriété SQL.
    merci archonte c bon ça marcher,mais il fallait enlever parameters

  13. #13
    Membre averti Avatar de archonte
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 392
    Points
    392
    Par défaut
    Citation Envoyé par malone12 Voir le message
    l'erreur utilisation incorrect du mot clé Element: "le nom client"
    En utilisant les paramètres, on évite les problèmes de formatage ! Sinon il faut utiliser QuotedStr mais ça a déjà été écrit (merci Skywaukers ) quelques messages auparavant !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm5.sBitBtn5Click(Sender: TObject);
    begin
    query1.close; // ou query1.active := false;
    query1.SQL.text := 'SELECT * FROM ventes WHERE NomC = :Var1 ';
    query1.Parameters.ParamByName('Var1').Value := Edit1.Text; // parametre renseigné par l'utilisateur 
    query1.Open; // ou query1.active := true;
    // ne pas utiliser ExecSql dans une procedure ou fonction qui retourne un ensemble de données (cf Aide Delphi)
    end;
    "Je n'ai jamais rencontré d'homme si ignorant qu'il n'eut quelque chose à m'apprendre."
    Galilée

Discussions similaires

  1. Requête pour afficher une période
    Par NedaRyme dans le forum Requêtes
    Réponses: 3
    Dernier message: 03/03/2008, 11h26
  2. [MySQL] rejoindre deux requêtes pour afficher des données
    Par schats dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 26/12/2007, 14h19
  3. [SQL] Requête pour afficher des valeurs uniques
    Par gcvoiron dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/11/2007, 17h38
  4. Lenteur de requête pour afficher une image
    Par bobobobo01 dans le forum WinDev
    Réponses: 2
    Dernier message: 20/07/2007, 15h22
  5. Réponses: 2
    Dernier message: 14/05/2007, 00h22

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