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 :

[Firebird]Récupérer qu'une valeur d'une requête SQL


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué Avatar de Patrick25300
    Homme Profil pro
    Retraité en technicien de maintenance et méthodes
    Inscrit en
    Février 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Retraité en technicien de maintenance et méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 153
    Points : 134
    Points
    134
    Par défaut [Firebird]Récupérer qu'une valeur d'une requête SQL
    Bonjour à tous

    Pour la gestion d'une impression, je cherche le moyen de récupérer dans les colonnes la longueur maximal de caractères que cette colonne a.
    En utilisant IBExpert et cette requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT MAX(CHAR_length(Nom.Colonne))
    FROM NomTable
    J'ai bien le résultat qui s'affiche.
    Ma question comment avec Delphi récupérer la valeur de la requête ci-dessus?.
    Avec une procédure stocké, ça marcherai super bien, mais sans procédure stockée?

    • j'utilise les outils d'interbase dans mon programme et Turbo Delphi 2006


    Si vraiment qu'une procédure stockée est utilisable, comment modifier la base de données sans passer par IBExpert, avec un fichier .bat par exemple (ou autre).

    Merci de vos réponses

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Dans Delphi :

    ajoute un alias pour éviter tout soucis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT MAX(CHAR_length(Nom.Colonne)) as MaxColonne
    FROM NomTable
    Ce SQL dans un TQuery (celui de ta lib) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Valeur := Query.FieldByName('MaxColonne').AsInteger;
    Dans un BAT, faudrait voir les outils de ligne de commande de FireBird, on peut penser qu'il fourni un SQL en mode texte utile lors d'un accès à un serveur distant via une console Putty
    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
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par Patrick25300 Voir le message
    Ma question comment avec Delphi récupérer la valeur de la requête ci-dessus?.
    Avec une procédure stocké, ça marcherai super bien, mais sans procédure stockée?
    Ça marcherait aussi bien avec l'une qu'avec l'autre. cf. le tuyau de @ShaiLeTroll
    Citation Envoyé par Patrick25300 Voir le message
    Si vraiment qu'une procédure stockée est utilisable, comment modifier la base de données sans passer par IBExpert, avec un fichier .bat par exemple (ou autre).
    Interbase est doté d'un outil interactif (=en ligne de commande) pour se connecter et passer des instructions au moteur : ISQL.
    Firebird and InterBase® command-line utilities : ISQL
    A Quick Guide to ISQL's Switches and Commands for Firebird/InterBase
    Philippe.

  4. #4
    Membre habitué Avatar de Patrick25300
    Homme Profil pro
    Retraité en technicien de maintenance et méthodes
    Inscrit en
    Février 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Retraité en technicien de maintenance et méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 153
    Points : 134
    Points
    134
    Par défaut
    Bonjour

    Merci ShaiLeTroll et Ph. B.

    Ta requete est beaucoup plus simple et direct que celle que j'avais fais ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    IBQueryLongMaxiChamp.SQL.Add('SELECT * FROM NomLATable A');
    IBQueryLongMaxiChamp.SQL.Add('WHERE CHAR_LENGTH(a.'+NomDuchamp+')= (SELECT MAX(CHAR_length('+NonDuchamp+'))');
    IBQueryLongMaxiChamp.SQL.Add('FROM NomLATable)');
    • De plus il me fallait avoir tous les champs d' IBQuery de la table définits dans l'application.
    • La requete m'envoyait le texte le plus long du "NomChamp" et il fallait compter le nombre de caractère de ce champ.

    Avec ta requete, il ne faut pas avoir definit tous les champs de IBQuery de la table dans l'application, ce qui permet d'avoir qu'un IBQuery général pour connaitre la longueur maxi des caractères des colonnes de différentes tables par exemple.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. [Débutant] Récupérer une valeur d'une combobox via une SortedList
    Par smurfing dans le forum VB.NET
    Réponses: 1
    Dernier message: 18/03/2013, 13h32
  3. [WD16] Récupérer la valeur d'une colonne d'une table d'une ligne précise
    Par elghers_hocine dans le forum WinDev
    Réponses: 16
    Dernier message: 06/05/2011, 18h11
  4. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  5. Mettre une valeur d'une table dans une variable
    Par Raphou96 dans le forum Access
    Réponses: 5
    Dernier message: 06/02/2006, 15h19

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