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

SAP Crystal Reports Discussion :

[CR9] jointure externe et filtre sur un champs


Sujet :

SAP Crystal Reports

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 16
    Points : 8
    Points
    8
    Par défaut [CR9] jointure externe et filtre sur un champs
    bonjour à tous en ce beau Lundi de Juillet où on est obligé de travailler :'(

    voila mon soucis

    je fais une jointurne externe sur une table, jusque là tout va bien

    pour chaque personne de la table Personne, il peut exister ou non un enregistrement dans la table Facture.

    Dans la table Facture, j'ai un champs Facturedate.

    je veux pouvoir recuperer les lignes correspondant à la table Personne même si il n'y a pas de ligne correspondante au ID de la personne dans la table Facture.

    Or, je souhaiterais aussi faire un filtre sur Facturedate et c'est la que ca se complique.

    Comme la ligne correspondante dans la table Facture n'existe pas, mon filtre sur facturedate est prise en compte et annule la selection de l'enregistrement dans la table Personne.

    Je voudrais donc savoir s'il est possible d'ecrire une formule du style:

    facturedate>=today or facturedate is null

    merci.

  2. #2
    cdu
    cdu est déconnecté
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 196
    Points : 222
    Points
    222
    Par défaut
    bonjour,

    il y a effectivement une fonction Isnull qui te permet de tester si un enregistrement existe ou non.

    cependant, ce genre de formule ne sera pas comprise par ta base de données, en conséquence ta base de données n'appliquera pas la formule de sélection et renverra toutes les données à crystal qui s'occupera de la sélection. Ce n'est pas trés efficace au niveau du volume de données qui transite. Mais chacun voit midi à sa porte.
    Tu peux contourner le probléme en mettant une partie de ta formule de sélection dans la sélection de groupe, ou dans la formule de suppression de section.

    voila..

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    j'ai effectivement testé la fonction isnull mais le résultat était le même, l'enregistrement n'est pas pris en compte.

    j'ai contourner le problème pour le moment en faisant un sous état, mais j'aimerais optimiser un maximum.

    je ne vois pas trop comment faire ca dans la formule de selection de groupe ou de suppression de section....?

    merci

  4. #4
    Membre émérite
    Avatar de L.nico
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 143
    Points : 2 679
    Points
    2 679
    Par défaut
    Bonjour
    mais tu pourrais modifier directement la requête SQL de crystal
    et ajouter ta clause OR dans la relation des tables !!
    Je crois avoir déjà fait une opération de ce genre là dans un de mes etats
    pour la relation justement
    Menu Base de données --> afficher une requête SQL !!
    Modifier la requête puis faire OK !!

    Attention !!
    Seul souci toujours réinitialiser la requête lors de l'ajout de nouvelles tables à ton état,
    sinon elles ne sont pas prises en compte !!
    A lire avant de poster
    Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    le soucis c'est que j'arrive à afficher la requête mais je ne peux pas la modifier

    il y a qu'un bouton "ok" quand je fais afficher la requête sql...

    any clues?

  6. #6
    cdu
    cdu est déconnecté
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 196
    Points : 222
    Points
    222
    Par défaut
    1) quand tu affiche la requete sql tu retrouves les selections que tu mets dans ta ta selection d'enregistrement, plus les tris

    2)pour ne pas passer par les sous-états, tu rejoutes une formule de suppression pour les sections qui affichent/utilisent des champs de la table facture par exemple supprimer si IsNull(Facture.numFact)

  7. #7
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    Donc si j'ai bien compris :

    j'utilise l'expert selection
    j'affiche la formule
    et si je rajoute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ....
    and
    iif(isnull({table_facture.facturedate}),true,{table_facture.facturedate}>={?today})
    and
    ....
    je devrais avoir toutes les personnes avec ou sans facture

    ...

  8. #8
    Membre émérite
    Avatar de L.nico
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 143
    Points : 2 679
    Points
    2 679
    Par défaut
    Citation Envoyé par d@rthwing
    le soucis c'est que j'arrive à afficher la requête mais je ne peux pas la modifier

    il y a qu'un bouton "ok" quand je fais afficher la requête sql...

    any clues?
    Tu pointes sur quel type de base de données ??
    Pour ma part je travaille avec des bases SQL Server et je n'ai aucun problème pour modifier la requête !!
    A lire avant de poster
    Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton

  9. #9
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    je suis sous oracle 8i

  10. #10
    Membre émérite
    Avatar de L.nico
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 143
    Points : 2 679
    Points
    2 679
    Par défaut
    Ca devrait marcher, tu modifies le contenu puis tu fais OK !! non ??
    A lire avant de poster
    Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton

  11. #11
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    Non je ne peux pas, il me permet juste de visualiser la requête, je peux faire aucune action dessus...

  12. #12
    Membre émérite
    Avatar de L.nico
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 143
    Points : 2 679
    Points
    2 679
    Par défaut
    Alors il faut en déduire que ma solution ne fonctionne qu'avec les
    etats qui pointe sur une base de type SQL Server car :
    Access : Impossible d'afficher la requête SQL
    SQL Server : pas de problème
    Oracle : Requête affichée non modifiable !!

    Désolé
    A lire avant de poster
    Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 246
    Points : 304
    Points
    304
    Par défaut
    En effet avec Oracle on ne peut pas modifier la requête sql aussi avec la 9i

Discussions similaires

  1. Filtres sur plusieurs champs/criteres en meme temps
    Par jeo13 dans le forum Macros et VBA Excel
    Réponses: 35
    Dernier message: 26/03/2008, 14h23
  2. Réponses: 1
    Dernier message: 18/09/2007, 19h10
  3. [AdoTable] Filtre sur un champ calculé
    Par tomy29 dans le forum Bases de données
    Réponses: 10
    Dernier message: 21/02/2007, 10h34
  4. [Oracle] jointures avec une somme sur deux champs
    Par guggus dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/10/2006, 17h06
  5. Requete avec filtre sur un champ
    Par podz dans le forum Langage SQL
    Réponses: 7
    Dernier message: 09/02/2005, 14h37

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