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 :

[DBExpress] MySql Limit i,n


Sujet :

Bases de données Delphi

  1. #1
    Teo
    Teo est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 110
    Points : 111
    Points
    111
    Par défaut [DBExpress] MySql Limit i,n
    Bonjour

    J'utilise des composants DbExpress de Delphi 7, pour acceder a un serveur MySsql.

    J'ai créé une classe qui gere en dynamique le quatuore TSqlDataSet, TClientDataSet, TDataSetProvider, et TSQLConnection, pour avoir un DataSet BiDirectionnel.

    Mon probleme actuel, c'est que certaines requettes avec Limit 0,20 par example, ne fonctionnent pas : erreur lors du TClientDataSet.open
    message = "index hors limite(-1)"
    Mais la meme requette avec limit 1,20 c'est bon elle s'execute normalement

    J'ai constaté qu'il n'y a qu'une seule requette(actuellement) avec jointure
    de 6 tables qui pause probleme, mais que pour "limit 0,x" avec x>0

    Recapitulons
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * from bd_adrs Limit 0,20 ==> Ca marche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * from bd_adrs Limit 1,20 ==> Ca marche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select a.a,b.b,c.c,d.d from a,b,c,d
    where a.a=b.a and b.b=c.b and c.c=d.c
    Limit 0,20 ==> Ca marche PAS !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select a.a,b.b,c.c,d.d from a,b,c,d
    where a.a=b.a and b.b=c.b and c.c=d.c
    Limit 1,20 ==> Ca marche !
    Si vous avez une piste, je suis preneur
    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 669
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 669
    Points : 5 238
    Points
    5 238
    Par défaut
    Message d'erreur ?
    Code ?

    Pour t'aider il nous faut un minimum d'info. Tu dis que cela ne marche pas c'est que tu as un message d'erreur ou que le résultat obtenu n'est pas celui que tu recherches.

    Donc quel est ce message d'erreur et si tu n'en a pas, quel resultat obtient-tu et quel résultat veux tu obtenir ?

  3. #3
    Teo
    Teo est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 110
    Points : 111
    Points
    111
    Par défaut
    Le message d'erreur est "index hors limite(-1)"

    Si la requette echouait pour chaque utilisation de "Limit x,n"
    a la fin des requettes, j'incriminerait la requette ou le code.

    Mais cette erreur n'apparait que pour certaines(1 seule actuellemnt)
    requette jointe avec "limit 0,N" .
    Pour la meme requette de base, "Limit 1,N" fonctionne parfaitement.
    Il y aurait il une option que j'aurais pâs activée/desactivée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select a.a,b.b,c.c,d.d from a,b,c,d
    where a.a=b.a and b.b=c.b and c.c=d.c
    Limit 0,20 ==> Ca marche PAS ! ==>  "index hors limite(-1)" 
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select a.a,b.b,c.c,d.d from a,b,c,d
    where a.a=b.a and b.b=c.b and c.c=d.c
    Limit 1,20 ==> Ca marche.
    Une idée ?

  4. #4
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut
    Je ne connais pas vraiment bien MySQL, mais as-tu essayé en définissant tes jointures avec des join ?
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Select 
      a.a, b.b, c.c, d.d 
    from 
      a inner join b on a.a = b.a
      inner join c on b.b = c.b
      inner join d on c.c = d.c
    Limit 0, 20

    Au cas où !

    @+ Claudius

  5. #5
    Invité
    Invité(e)
    Par défaut Nb enregistrements suffisants ?
    Bonjour,
    As-tu vérifié s'il y a un nb d'enregistrements suffisant répondant à ta requête LIMIT 0,20 ?
    Cordialement.

Discussions similaires

  1. [MySql] Limite du nombre d'enregistrement d'Adoquery
    Par Bourak dans le forum Bases de données
    Réponses: 4
    Dernier message: 20/06/2006, 17h37
  2. dbExpress & MySQL : Recueillir les données de la bd
    Par Griswold dans le forum Bases de données
    Réponses: 1
    Dernier message: 21/11/2005, 21h23
  3. [D2005][DBEXPRESS][MYSQL] Violation d'accès
    Par Rayek dans le forum Bases de données
    Réponses: 2
    Dernier message: 16/03/2005, 08h09
  4. [DBexpress][Mysql]Pb de connexion
    Par vincentj dans le forum Bases de données
    Réponses: 11
    Dernier message: 16/06/2004, 23h17
  5. Dbexpress mysql : mot de passe incorrect
    Par nicang dans le forum Bases de données
    Réponses: 7
    Dernier message: 22/04/2004, 15h48

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