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

XMLRAD Discussion :

Compter le nombre d'enreg retournés par un DBExtract


Sujet :

XMLRAD

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    520
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Par défaut Compter le nombre d'enreg retournés par un DBExtract
    Salut,

    Je veux comptabiliser le nombre d'enregistrements provenant d'un DBExtract, afin d'économiser un Select Count(?) qui donnerait le même résultat.
    Je n'ai pas trouvé dans les sources quelque élément qui indique cette information.
    Je me suis bricolé une solution, j'aimerais avoir votre avis dessus, et si il y a plus simple ?

    Ma soluce :

    Je pose un composant Business Service dans le module concerné.
    Je code le gestionnaire d'évènement AfterInstruction (sensé prendre la fin à la fin du DBExtract en question) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Procedure TStatistique.TirUMIPAfterInstruction(
      XMLInstruction: IXMLInstruction; e: TAfterInstructionEventArgs);
    begin
      if XMLInstruction.Name = 'TIREUR' then
       e.Output.SetValue('NBTIREUR', IntToStr(TXMLInstruction(XMLInstruction).InstructionStats.Fetches));
    end;
    Je suis obligé de transtyper XMLInstruction en TXMLInstruction car InstructionStats ne fait pas partie du contrat IXMLInstruction. D'autre part j'ai dû rajouter l'unité XMLGram dans les uses afin d'obtenir une visibilité sur TXMLInstruction.

    * Request for eDelos Team : Si il n'y a pas plus simple, ce serait bien que le context soit alimenté à la fin de chaque DBExtract par une information indiquant le nb d'enreg récupérés (un peu comme font les SGBD qui indiquent le nombre d'enregs affectés lors de select, update, delete etc.)

    Sylvain

  2. #2
    RDM
    RDM est déconnecté
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Par défaut
    bon pour avoir la même info y a quand même plus simple
    Dans la conteneur du DBExtract (OutputDoc) ils y a des infos:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <publishersS EOF="1" StartingRow="0" LastRow="8" RowCount="9" MaxRows="10" RecordName="publishers">
    EOF indique que l'on est arrivé à la fin du SELECT
    StartingRow indique à partir de quel enregistrement on effectue le fetch.
    Last Row indique jusqu'à quel enregistrement on a fetché.
    RowCount indiquele nombre d'enregistrements fetchés.
    MaxRows indique le nombre d'enregistrements maximal fetchés pour ce DBExtract.

    Donc dans ton cas Ton Fetches = RowCount.
    Cependant il est limité au MaxRows car on ne fetch pas forcément tous les enregs pour un ecran. sauf si on met MaxRows à -1 (mais il y a quand meme une sécurité (voir source du DBExtract).

    Le plus fiable et ce qui est recommandé reste quand même de faire un Select count. Sur de l'interbase c'est pas forcément le plus rapide , je l'avoue (car il scanne physiquement les enregs) mais sur d'autres SGBD (SQLServer) ca reste très rapide (tables systèmes).

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    520
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Par défaut
    Merci, j'ai tout ce qu'il me faut dans ta réponse :-)

    Sylvain

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/07/2009, 16h54
  2. [HQL] Nombre de colonnes retourné par une requête
    Par Fr@ncky dans le forum Hibernate
    Réponses: 4
    Dernier message: 13/07/2007, 13h47
  3. compter le nombre de cellules commencant par
    Par euskadi dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/06/2006, 13h36
  4. Réponses: 1
    Dernier message: 07/04/2006, 09h36
  5. [T-SQL] Connaître le nombre de colonnes retourner par une PS
    Par NeoMan dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 28/12/2005, 11h30

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