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

Designer Discussion :

[BO 5.1]Création d'objet: problème si aucun résultat n'est renvoyé


Sujet :

Designer

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut [BO 5.1]Création d'objet: problème si aucun résultat n'est renvoyé
    Bonjour,


    dans le cadre de mon travail, je dois créer un Univers et des rapports pour des utilisateurs.


    Cependant, quand ces personnes créent des rapports, elles groupent donc leurs objets sur le rapport (Mois, Année, Client, Adresse, etc)


    Jusque la, pas de problèmes.


    Sauf que parfois, un des objets ne ramène pas de valeur car les conditions ne sont pas bonnes.


    Dans une table, une des valeurs utilisées lors du test n'est pas renseignée lors du remplissage de la table.

    Par exemple, Si moi dans ma table, je met le numéro, mon nom, plein d'autres trucs et que par exemple j'oublie de mettre le département, j'aurais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    NOM    | TYPE   | PAIMENET | TRANSACTION  | DEPARTEMENT | LIVRAISON
    KENZIE | CLIENT | VIREMENT | ACHAT/VENTE  |             | Camion
    Si je crée un objet qui équivaut en SQL à:


    Select TELEPHONE From TABLE1 WHERE TYPE = 'Client' and DEPARTEMENT = 69 and NOM = KENZIE'

    Ca va renvoyer peanuts, car:
    - TYPE = Client, ok...
    - Département = 69, c'est faux.

    -> je renvoie rien

    Du coup, si j'utilise cet objet dans un rapport mixant plein d'autres objets, je vais me retrouver avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    
      Mois   | année  | Client   | téléphone 
      Avril  |  2008  | Client_1 | téléphone_1
      Avril  |  2008  | Client_2 | téléphone_2
      Avril  |  2008  | Client_3 | téléphone_3
     (Avril  |  2008  | MCKENZIE |           ) <- ligne pas affichée car y avait rien qui matchait les conditions pour cet Objet
      Avril  |  2008  | Client_5 | téléphone_5

    Or, on m'a dit un truc du genre:
    Si y a rien, c'est "normal", c'est pas super cool pour nous, le mec a oublié de renseigner son numéro de téléphone mais bon mais dans ce cas là, il faut quand même que la ligne s'affiche avec le reste des infos... Tu n'auras qu'à mettre "Non Renseigné", ou "N/C", ou même " "

    Histoire d'avoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    
      Mois   | année  | Client   | téléphone 
      Avril  |  2008  | Client_1 | téléphone_1
      Avril  |  2008  | Client_2 | téléphone_2
      Avril  |  2008  | Client_3 | téléphone_3
      Avril  |  2008  | MCKENZIE |   N/C             
      Avril  |  2008  | Client_5 | téléphone_5

    Question: comment puis je créer mon objet de la sorte que s'il trouve la valeur qui va bien, il me la renvoie, sinon, il renvoie " " ou ce que je veux ... ?

    Merci d'avance.

    EDIT: C'est évidemment pas des TELEPHONE dont je cause dans mes rapports,mais c'est pour simplifier et donner un exemple...
    Sinon, faudrait que je vous cause du JDE qui va autours, et pour ça, on est pas sorti des ronces !

  2. #2
    Membre expérimenté
    Avatar de bastoonet
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Septembre 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 011
    Points : 1 342
    Points
    1 342
    Par défaut
    Dans ta requete quand tu poses une condition sur un objet il faut également que tu donnes la possibilité que l'objet ne soit pas renseigné !


    ex :

    département égal à ('95')
    OU
    département non renseigné




    Cela correpond en SQL à

    Select departement
    from ta_table
    where departement='95' or departement is null
    ~ Bastoonet ~

    Consultant BI

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Ok merci...

    Variante:

    Et si y a pas de téléphone du tout et rien n'est renseigné.

    Ce coup ci, imaginez que le client vient juste d'être enregistré de façon basique et que dans ma table principale et que dans ma table imaginaire ou je dois aller chercher le téléphone, y a personne qui correspond au nom 'McKenzie', au département 69 etc...

    Ca va rien renvoyer du tout aussi...

    (En SQL ca donnerait un résultat du genre No Row Selected)

    Donc si je trouve pas de résultat, comment je peux passer outre et renvoyer "RIEN" , histoire qu'il m'affiche la ligne dans mon rapport, avec au pire une case vide ou à "RIEN", "N/C"

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 84
    Points : 97
    Points
    97
    Par défaut
    pour ne pas avoir ce problème , lors de l'alimentation du décisionnel, je met 'NR' pour non renseigné dans les zones où il n'y a pas d'info. (physiquement dans la base) et j'ai un département dans la table département qui a comme clé 'NR' et en libellé 'Non renseigne"

    ainsi dans un utilisateur veux les clients du département 69 , il les as et s'il veux les clients du département 69 et ceux qui ne sont pas renseigné il met departement dans liste (69;NR)

  5. #5
    Membre expérimenté
    Avatar de bastoonet
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Septembre 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 011
    Points : 1 342
    Points
    1 342
    Par défaut
    Pour ne pas avoir à modifier l'alimentation de ta BDD, tu peux également mettre une jointure externe entre ta table de référence "client", et la table qui contient les infos sur ce client.

    De cette manière cela te renverra le client qu'il est ou pas des informations dans la table d'infos.
    ~ Bastoonet ~

    Consultant BI

  6. #6
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par bastoonet Voir le message
    Pour ne pas avoir à modifier l'alimentation de ta BDD, tu peux également mettre une jointure externe entre ta table de référence "client", et la table qui contient les infos sur ce client.

    De cette manière cela te renverra le client qu'il est ou pas des informations dans la table d'infos.
    Alors en fouinant sur le net, j'ai trouvé des trucs liés à ça...

    J'ai rajouté un (+) à ma jointure

    et dans l'objet, au select, j'ai rajouté nvl((INFO.Telephone),'Pas Disponible')

    Mais ca me renvoie toujours pas les lignes concernées par le manque de données dans INFO

  7. #7
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 84
    Points : 97
    Points
    97
    Par défaut
    le coté du (+) a de l'importance l'as tu mis du bon coté ?

  8. #8
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par jj bzh Voir le message
    le coté du (+) a de l'importance l'as tu mis du bon coté ?
    Nan c'est bon, mais en fait fallait aussi en mettre du côté des conditions.

  9. #9
    Membre habitué
    Inscrit en
    Juillet 2008
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juillet 2008
    Messages : 181
    Points : 189
    Points
    189
    Par défaut
    Citation Envoyé par jj bzh Voir le message
    le coté du (+) a de l'importance l'as tu mis du bon coté ?
    Oui le (+) a de l'importance.

    Par exemple si on a les tables CLIENTS et COMMANDES et si tu mets la jointure

    - CLIENTS.codecli = (+) COMMANDES.codecli

    cela signifiera que "chaque client peut avoir de 0 à N commandes"

    - CLIENTS.codecli (+) = COMMANDES.codecli

    cela signifiera que "chaque commande peut avoir de 0 à N clients" ... moins judicieux je pense!


    Je ne sais pas si c'est très clair mais sinon il suffit de prendre deux tables et d'essayer les deux jointures. Ca sera certainement plus parlant.

Discussions similaires

  1. problème création d'objet
    Par mimousse dans le forum VB.NET
    Réponses: 37
    Dernier message: 30/01/2009, 10h13
  2. Problème de création d'objet
    Par Maldus dans le forum Débuter
    Réponses: 2
    Dernier message: 08/12/2008, 15h37
  3. Vbs et html problème de création d'objet
    Par Picco dans le forum VBScript
    Réponses: 0
    Dernier message: 06/10/2008, 14h48
  4. Problème de création d'objet
    Par Gouyon dans le forum Delphi
    Réponses: 2
    Dernier message: 15/05/2007, 13h20
  5. Problème de création d'objets
    Par gids01 dans le forum Langage
    Réponses: 3
    Dernier message: 24/10/2006, 10h42

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