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

 Delphi Discussion :

Récupération résultat d'une commande count sql


Sujet :

Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 78
    Points : 54
    Points
    54
    Par défaut Récupération résultat d'une commande count sql
    Bonjour à vous tous,

    Je travaille avec Delphi 10.3 Community Edition et les composants Firedac.

    J'aimerais récupérer dans une variable la valeur qui résulte de la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    F_Google.FDQuery_Groupes.SQL.Add('COUNT(*) FROM Group WHERE name = ' + QuotedStr(xclasse)+ '');
    j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xnbrGroupes := F_Google.FDQuery_Groupes.ExecSql(true);
    sans succés

    Pourriez-vous m'aider ?
    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Pourquoi ne pas lire la documentation ?
    FireDAC.Comp.Client.TFDCustomQuery.ExecSQL
    Utilisez ExecSQL pour exécuter des requêtes qui ne renvoyent pas un curseur aux données (comme INSERT, UPDATE, DELETE, CREATE TABLE).
    renvoie le nombre de lignes mises à jour




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    F_Google.FDQuery_Groupes.SQL.Add('COUNT(*) As AliasCountGroupe FROM Group WHERE name = ' + QuotedStr(xclasse)+ '');
    F_Google.FDQuery_Groupes.Open();
    xxnbrGroupes := F_Google.FDQuery_Groupes.FieldByNAme('AliasCountGroupe').AsInteger;
    F_Google.FDQuery_Groupes.Close();
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xnbrGroupes := F_Google.FDQuery_Groupes.Fields[0].AsInteger
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 685
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 685
    Points : 13 102
    Points
    13 102
    Par défaut
    Pour ce genre de chose tu peux aussi directement passer par le TFDConnection et la méthode ExecSQLScalar :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xnbrGroupes := FDConnection1.ExecSQLScalar('SELECT COUNT(*) FROM Group WHERE name = :name', [xclasse]);

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 78
    Points : 54
    Points
    54
    Par défaut
    Rebonjour à vous

    Merci pour vos réponses

    ShaiLeTroll, j'ai lu la documentation que vous m'avez conseillé mais je n'ai pas su trouvé ma réponse.
    J'ai essayé votre code, il me renvoie l'erreur suivante :
    Nom : Capture.PNG
Affichages : 79
Taille : 5,8 Ko

    Andnotor, votre morceau de code fonctionne parfaitement, je vous renouvelle mes remerciements.

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Effecitvement c'est SELECT COUNT(*) As AliasCountGroupe FROM Group WHERE name = :PGroupeName a utiliser avec ParamByName('PGroupeName').AsString := '1A';
    le SQL.Add devrait être précéder d'un SQL.Clear si vous réutiliser une Query, sinon directement affecté SQL.Text.

    dans l'erreur, vous voyez bien que le SQL est incorrect ! Non ?

    Mais la solution du ExecSQLScalar semble très courte et efficace, en ADO, c'est bien plus compliqué mais en FireDac j'en profiterais même si apprendre à utiliser le TFDQuery est un bon exercice.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 685
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 685
    Points : 13 102
    Points
    13 102
    Par défaut
    Citation Envoyé par julesclaude Voir le message
    J'ai essayé votre code, il me renvoie l'erreur suivante :
    Mise à part l'oubli de SELECT, Le problème est SQL.Add puisque le composant contenait déjà la commande SELECT * FROM Groups

    Dans ce cas, ce serait SQL.Clear; SQL.Add() ou plus simplement SQL.Text :=.


    Edit: Shai a complété sa réponse

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 78
    Points : 54
    Points
    54
    Par défaut
    Tous fonctionne parfaitement.
    Merci pour la réactivité de vos réponses.
    Je ferme la discussion.

  8. #8
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    Juste pour rappel : "group" fait partie des mots réservés du SQL, étant utilisé dans SELECT pour regrouper des enregistrements. Il est fortement recommandé d'éviter les tables et champs ayant ce nom ou il faut les encadrer d'apostrophes lorsqu'on les utilise dans les requêtes.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/06/2019, 12h50
  2. [Tcl\Tk] Récupération du résultat d'une commande
    Par kitigwen dans le forum Tcl/Tk
    Réponses: 3
    Dernier message: 05/08/2013, 13h30
  3. Récupération du résultat d'une commande shell
    Par klu dans le forum Langage
    Réponses: 8
    Dernier message: 16/02/2006, 23h34
  4. Réponses: 2
    Dernier message: 02/01/2006, 10h39
  5. Ecrire le résultat d'une commande dans un fichier de l' OS
    Par Labienus dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 26/02/2004, 11h04

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