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 :

Affichage résultat type Google (multipage multibase)


Sujet :

XMLRAD

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 94
    Points : 58
    Points
    58
    Par défaut Affichage résultat type Google (multipage multibase)
    Bonjour,

    Je développe une appli qui se doit d'être multibase (donc exit les LIMIT MySQL et TOP SQLServer). J'ai une requête qui me retourne 851146 résultats ce qui prend 30 sec pour générer le flux ! Je pensais que le but du champ "MaxRows" de XMLRAD était justement de limiter les résultats à la valeur passée. Or, je m'apercois que ce champ exécute en réalité la totalité de la requête et n'affiche que les n Maxrows champs voulus, autrement dis ce champ est quasi inutile puisqu'il n'émule pas le LIMIT MySQL ou le TOP SQLServer, et donc aucun gain de temps à l'affichage. Avez vous déjà recontré ce type de problème et si oui comment le résoudre ?

    Merci encore :-)

    NB

  2. #2
    Membre habitué
    Inscrit en
    Janvier 2003
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 214
    Points : 132
    Points
    132
    Par défaut
    Le fait de ne renvoyer qu'une partie des enregs est géré par la BD, et donc, je ne pense pas qu'il y ait une autre solution que d'utiliser les TOP, LIMIt, ROWNUM des différentes BD que tu utilises

    Nous, nous ajoutons par code ces mots clé en fonction de la bd utilisée
    par exemple, tu peux tester XMLApplication.DataSources.Values['DataSource/Driver'] qui va te donner le driver de BD, et donc te permettre de modifier ta requete en conséquence.
    Renaud
    W2003 / XP /VISTA
    SQL SERVER / ORACLE
    ADO

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 94
    Points : 58
    Points
    58
    Par défaut
    Ok .. c'est vrai que contourner le pb pour arriver au même résultat est tout aussi pratique. Je ne connaissais pas ce type de test et je t'en remercie.

    Bénit soit le forum XMLRAD :-)

    NB

  4. #4
    RDM
    RDM est déconnecté
    Membre émérite

    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
    Points : 2 927
    Points
    2 927
    Par défaut
    Comme tu l'as vu, MaxRows ne limite que le nombre d'enregistrement extrait dans le XML et pas dans la requete. comme tu le comprend aussi, la syntaxe etant différente pour chaque serveur SQL (certains le le permettant tout seimpelment pas) XMLRAD ne peut pas le prendre en compte.
    Le SQL n'est pas retravaillé par XMLRAD, il est envoyé tel quel.
    RDM
    Tout Est Relatif
    Rubrique XMLRAD: http://xmlrad.developpez.com
    FAQ XMLRAD: http://xmlrad.developpez.com/faq/

  5. #5
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 154
    Points : 114
    Points
    114
    Par défaut
    D'accord avec toi RDM mais peut être que comme XMLRAD connait le moteur targetté on pouvait imaginer que cette fonctionnalité aurait put être inclus.

    Bon allez on va pas demander à faire le café non plus

    Michel

  6. #6
    Membre expérimenté

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Points : 1 446
    Points
    1 446
    Par défaut
    Citation Envoyé par rgarnier
    tu peux tester XMLApplication.DataSources.Values['DataSource/Driver'] qui va te donner le driver de BD, et donc te permettre de modifier ta requete en conséquence.
    Pour compléter la réponse de renaud, il est tout à fait possible de définir dans ton XMLGram / DBExtract une requête du genre, en simplifiant un peu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select champ1, champ2 {$LIMIT_MYSQL}
    From table1
    Where mesconditions
    {$LIMIT_ORACLE}
    Ensuite dans le BeforeXMLInstruction, selon le moteur SQL ciblé, tu renseignes dans le context les templates properties : {$xxx}.

    ex. :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if Driver="MySQL" then
      Context.SetValue("LIMIT_MYSQL", "LIMIT 10");
     
    if Driver="ORACLE" then
      Context.SetValue("LIMIT_ORACLE", "AND ROWNUM < 10");
    
    (Driver est à récupérer of course)
    Sylvain
    .NET / ASP.NET MVC / Delphi / XMLRAD / XSL / Technos Web

    Mon Blog : http://blog.developpez.com/index.php?blog=89
    Mes Articles : http://sjames.developpez.com/
    Rubrique XMLRAD: http://xmlrad.developpez.com

  7. #7
    Membre habitué
    Inscrit en
    Janvier 2003
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 214
    Points : 132
    Points
    132
    Par défaut
    Ok, c'est en effet plus propre.
    Renaud
    W2003 / XP /VISTA
    SQL SERVER / ORACLE
    ADO

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 284
    Points : 349
    Points
    349
    Par défaut
    Pour finir de completer, on utilise la technique proposée par Sylvain, en utilisant des InitParams pour le contenu des LIMIT_MYSQL ou LIMIT_ORACLE.
    Un bout de code place dans le Context la bonne valeur.
    Nicolas

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

Discussions similaires

  1. [MySQL] Affichage résultat requête SQL dans page HTML comme un tableau
    Par joxbl dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 14/03/2011, 14h26
  2. affichage de résultat par google
    Par sws2008 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 19/11/2008, 20h15
  3. Réponses: 1
    Dernier message: 11/05/2006, 16h37
  4. Affichage résultat de requête dans un champ
    Par dj-julio dans le forum WinDev
    Réponses: 1
    Dernier message: 18/01/2006, 10h51
  5. [struts][logic]: résultat affiché en multipage
    Par shakur dans le forum Struts 1
    Réponses: 2
    Dernier message: 14/06/2005, 15h57

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