1. #1
    Membre confirmé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    mai 2002
    Messages
    1 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 1 130
    Points : 531
    Points
    531

    Par défaut Affichage par X enregistrements

    Bonsoir,

    Je suis confronté à un problème d'affichage par page de x enregistrements en utilisant la selection par rang d'identifiants depuis l'application client :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT FIRST '+IntToStr(NBROW)+' * FROM VW_LIVRAISION_FOURNISSEUR WHERE (LIVRAISON_ID>='+IntToStr(StartRow)+ ' AND LIVRAISON_ID<='+IntToStr(EndRow)+')';
    Ce code (une vue exectuée) se trouve dans deux boutons qui permettent de naviguer par x enregistrements suivants et précédent.

    Si les valeurs de LIVRAISON_ID stockées dans la table ne se suivent pas séquentiellement suite à des suppressions au milieu, alors j'ai des trous
    et donc lorsqu'il se trouve au milieu de ces trous ou dans une partie ou même un seul trou au début il n'affichera rien du tout au lieu d'afficher
    ce qui vient après les trous, ce qui aurait été souhaitable. C'est dommage, dans FB3 je ne trouve pas d'identifiant interne et permanent à l'enregistrement.
    J'ai essayer avec le row_number() pour récuperer le dernier LIVRAISON_ID depuis le client et aller au suivant/précédant mais il est virtuel,
    il ne fait pas l'affaire. Je cherche SVP, si il y a des possibilités que je ne connais pas dans FB qui permettent de réaliser cela.

    En vous remerciant de votre aide.
    Le Savoir c'est le Pouvoir !
    S.Freud

  2. #2
    Membre confirmé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    mai 2002
    Messages
    1 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 1 130
    Points : 531
    Points
    531

    Par défaut

    Bonjour,

    Je crois avoir trouver une solution. Il s'agit de creer un champ ID et de le recalculer à chaque suppression dans la table ce qui peut provoquer une baisse de performances mais c'est un compromis.....
    Le Savoir c'est le Pouvoir !
    S.Freud

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    8 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 8 694
    Points : 20 435
    Points
    20 435
    Billets dans le blog
    4

    Par défaut

    Bonjour,

    Je ne suis pas sûr d'avoir tout compris ! j'ai buté sur
    Ce code (une vue exectuée)
    cela n'a rien à voir avec une VIEW Firebird si j'en crois la suite du message avec les boutons
    Ensuite, c'est plutôt flou, il s'agit d'afficher les trous ou non ?

    Déjà, le SQL me gêne
    a) il s'agit d'un code Delphi
    b) on peut faire la même chose plus simplement
    // sans les trous ceci devrait fonctionner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM VW_LIVRAISION_FOURNISSEUR WHERE LIVRAISON_ID>=:DEBUT ORDER BY LIVRAISON_ID ROWS 1 TO  :NBROW
    il serait possible d'utiliser une variable de contexte une variable de contexte http://www.firebirdfaq.org/faq343/
    au cas ooù ma proposition de fonctionne pas

    pour voir les trous utiliser une C.T.E. récursive
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    WITH RECURSIVE 
      NUMEROS (NUM) AS ( 
        SELECT :DEBUT FROM RDB$DATABASE 
        UNION ALL 
        SELECT NUM + 1 FROM NUMBERS 
         WHERE NUM < :FIN
      ) 
    SELECT N.NUM,L.*  FROM NUMEROS N  LEFT JOIN VW_LIVRAISION_FOURNISSEUR L ON N.NUM=L.LIVRAISON_ID
    EBUT et :FIN correspondant à startrow et endRow
    mieux, plutôt que de saisir EndRow , enrow:=StartRow+nbRow ?
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
    J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
    Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous

  4. #4
    Membre confirmé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    mai 2002
    Messages
    1 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 1 130
    Points : 531
    Points
    531

    Par défaut

    Bonjour SergioMaster,

    Effectivement ma solution n'est pas bonne je ne me doutais pas de l'existence de ROW x TO y.

    Citation Envoyé par SergioMaster
    cela n'a rien à voir avec une VIEW Firebird si j'en crois la suite du message avec les boutons
    Ensuite, c'est plutôt flou, il s'agit d'afficher les trous ou non ?
    Désolé pour mon imprécision.
    Non, il ne s'agit pas d'afficher les trous mais d'afficher un ensemble de données de X enregistrements suivant et précédant. Si par exemple j'affiche au départ 10 enregistrements de 1 à 10, l'affichage suivant sera de 11 à 21 et ensuite le précédant sera de 20 à 10. Avec ma méthode, je récupère dans le client la valeur du dernier LIVRAISON_ID et je le met au début tandis que pour Fin je lui rajoute le NBROW (nombre d'enregistrements demandés). Evidemment elle n'est pas bonne.

    Citation Envoyé par SergioMaster
    Déjà, le SQL me gêne
    Je sais, parce que lorsque je construis une chaine SQL incluant les paramètres ":" en la concaténant avec d'autres chaines suivant plusieurs critères de sélection je perd ces paramètres c'est pour cela que j'ai fait du CAST en delphi dans l'instruction SQL. Par contre, j'ai pas de problème avec les paramètres ":" lorsque c'est en une seule ligne (pas de concaténation de chaine). Ca dépend du contexte ce n'est pas dans tout les cas que j'utilise ça. En tout cas, votre solution me règle le problème et me permet de changer de méthode en donnant un petite coup de balais au codage d'affichage. Merci beaucoup SergioMaster.
    Merci aussi pour la CTE ca pourrait servir plus-tard.
    Le Savoir c'est le Pouvoir !
    S.Freud

  5. #5
    Membre confirmé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    mai 2002
    Messages
    1 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 1 130
    Points : 531
    Points
    531

    Par défaut ERRATA

    Bonjour tout le monde,

    Citation Envoyé par freud
    Je sais, parce que lorsque je construis une chaine SQL incluant les paramètres ":" en la concaténant avec d'autres chaines suivant plusieurs critères de sélection je perd ces paramètres
    Et je me répond à moi même :
    Erreur ! après un coup de balais ces paramètres je ne les perds plus. C'est donc une partie de ma logique qui change
    Le Savoir c'est le Pouvoir !
    S.Freud

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

Discussions similaires

  1. Affichage d'un enregistrement par page
    Par kmarcel dans le forum IHM
    Réponses: 2
    Dernier message: 18/02/2008, 17h29
  2. VBA affichage par défault formulaire unique
    Par hocine dans le forum Access
    Réponses: 3
    Dernier message: 04/01/2006, 12h50
  3. Affichage par ordre alphabétique
    Par masseur dans le forum Syntaxe
    Réponses: 8
    Dernier message: 08/12/2005, 12h41
  4. Affichage du nouvel Enregistrement
    Par estancha dans le forum IHM
    Réponses: 8
    Dernier message: 13/10/2004, 16h23
  5. AFFICHAGE PAR DEFAUT DANS DBLOOKUPCOMBOX
    Par AYITE dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/02/2004, 21h57

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