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

Reports Oracle Discussion :

[Report 6i] Edition Etiquettes


Sujet :

Reports Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2004
    Messages : 118
    Points : 90
    Points
    90
    Par défaut [Report 6i] Edition Etiquettes
    Bonjour

    J'ai une table qui contient une commande dans un article et une quantité commandée.

    Exemple : 2 thuya ou 2 rosiers.

    Voici mon problème, je dois éditer en report autant d'etquettes qu'il y a de plantes commandées. Dons l'exemple je dois sortir 2 etiquettes de Thuya et 2 de rosiers. Mais pour report il n'y a que 2 lignes d'articles donc il va sortir seulement une seule etiquette de chaque.
    que la quantitée commandée. Ou bien dans une vue d'éclater les lignes pour avoir 4 lignes de 1 article ??

    Attention, toutes les plantes doivent sortir a la suite pas sur des feuilles différentes.

    J'espère avoir été assez clair. Ce n'est pas facile à expliquer.

    Merci d'avance.

  2. #2
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Points : 1 197
    Points
    1 197
    Par défaut
    Salut,

    Partie plqsql
    Essaie cette solution avec pipe row, je l'ai testé avec la 10g
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    --  package refcur_pkg  me permet de dupliquer le record selon la quantité
     
    CREATE OR REPLACE PACKAGE refcur_pkg IS
    TYPE refcur_t IS REF CURSOR RETURN commande%ROWTYPE;
    TYPE outrec_typ IS RECORD (
    article varchar2(50),
    quantite number);
    TYPE outrecset IS TABLE OF outrec_typ;
    FUNCTION duplicate_row_table(p_article in varchar2 ,p_quantite IN NUMBER)
    RETURN outrecset PIPELINED;
    END refcur_pkg;
     
     
    CREATE OR REPLACE PACKAGE BODY refcur_pkg IS
    FUNCTION duplicate_row_table(p_article in varchar2 ,p_quantite IN NUMBER)
    RETURN outrecset PIPELINED IS
    --out_rec outrec_typ;
    BEGIN
    for out_rec  in ( select * from commande where article=p_article )
    loop
    FOR i IN 1 .. p_quantite-1 LOOP
            PIPE ROW(out_rec);
       END LOOP;
    end LOOP;
    RETURN;
    END;
    END refcur_pkg;
    /

    Partie reports:
    Dans le rapport il faut créer deux requetes:

    La première:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT article art1, quantite qte_p
      FROM commande
    La deuxième ( sert à récupérer les records manquants)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT *  FROM TABLE(refcur_pkg.duplicate_row_table(:art1,:qte_p))
    Après tu relies les deux requetes par le numero d'article.

    Voici une capture d'ecran de mon modèle de données
    Nom : duplicate.png
Affichages : 82
Taille : 9,4 Ko

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2004
    Messages : 118
    Points : 90
    Points
    90
    Par défaut
    Bonjour,

    Merci pour cette réponse, il faut que j'ouvre grand mon esprit pour comprendre. Je vais tester tout ca.

    Précision je travaille sur une base 8.1.7 et bientot sur 9.2.0.4.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2004
    Messages : 118
    Points : 90
    Points
    90
    Par défaut
    Lorsque je compile ton script package, il me donne l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    LINE/COL ERROR
    -------- -----------------------------------------------------------------
    8/18     PLS-00103: Encountered the symbol "PIPELINED" when expecting one
             of the following:
             . @ % ; is authid deterministic parallel_enable as character
             The symbol "." was substituted for "PIPELINED" to continue.
    Je rappelle je travaille sur une base 8.1.7

  5. #5
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Points : 1 197
    Points
    1 197
    Par défaut
    salut,

    Ma solution fonctionne à partir de la version 9i.

    Tu vois que c'est important de spécifier la version de tes outils.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2004
    Messages : 118
    Points : 90
    Points
    90
    Par défaut
    Bonjour,

    Désolé de t'avoir fait chercher, mais pas pour rien car la migration de V8 et V9 est prevu en Septembre.
    Donc je garde ta solution sous le coude

    En oracle V8, il n'existe pas de solution à mon problème !!!

  7. #7
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Sinon, faut avoir une table de paramètre qui contient le nb de ligne voulu.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  8. #8
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Ou passer par une procédure stockée qui insère dans une table temporaire le nb de lignes voulues.
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2004
    Messages : 118
    Points : 90
    Points
    90
    Par défaut
    Merci de vos conseils, je vais chercher du côté d'une procédure stockée.

    Je vous tiendrais au courant des avancées.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2004
    Messages : 118
    Points : 90
    Points
    90
    Par défaut
    Bonjour à tous

    Voici les dernières nouvelles de mon problème. J'ai suivi le conseil de PlaineR.

    J'ai créé un table temporaire table_etiquette et une procédure stockée qui lit les lignes de la table commande et insert dans la table table_etiquette, une ligne pour une etiquette.
    J'utilise un curseur pour les lignes de la table commande et une boucle for de 1 à quantité commandée, on créé une ligne pour une etiquette

    Je lance cette procédure stockée dans le trigger AFTER PARAMETER FORM de report (car le user saisi la cde à imprimer) et je détruis les lignes créées avec le trigger AFTER REPORT.

    Cette solution est du bidouillage. Mais ca fonctionne c'est le principal.

    Merci à tous pour votre aide.

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

Discussions similaires

  1. [VS 2005] CRYSTAL REPORT -Compteur d etiquette
    Par grant29 dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 24/03/2011, 22h38
  2. edition : QReport ou Rave Report ??
    Par thierrybatlle dans le forum Delphi
    Réponses: 1
    Dernier message: 22/06/2006, 11h37
  3. [Report 6i] Editer un certain nombre de copies
    Par Invité dans le forum Oracle
    Réponses: 2
    Dernier message: 07/12/2005, 16h51
  4. Editions XMLRAD 7 - Rave Report
    Par clisson dans le forum XMLRAD
    Réponses: 7
    Dernier message: 18/10/2005, 15h06

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