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 :

UFL : Fonction avec paramètre de type Object


Sujet :

SAP Crystal Reports

  1. #1
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut UFL : Fonction avec paramètre de type Object
    Bonjour,

    j'essaie de développer une UFL avec une fonction dont le type de paramètre en entrée n'est pas connu, je souhaiterai pouvoir appeler ma fonction avec n'importe quel champs de ma Base de données sans me pré-occuper de son type (un peu comme la fonction ISNULL de CR).

    Actuellement je n'arrive à voir ma fonction dans les Fonctions supplémentaires de CR que si je déclare mon paramètre en entrée avec un type String ou Integer.

    Quelqu'un aurait-il une solution ?

    Je vous explique pourquoi j'en suis arrivée à devoir développer une telle fonction.
    J'utilise un Progiciel qui met à jour dynamiquement mes Query dans Crystal report à partir des filtres posés à l'écran, le soucis c'est que le filtre sur un champ NON VIDE est mal géré,
    au lieu de générer un agrégat NOT ISNULL() il génére un agrégat ISNOTNULL() qui est inconnu dans Crystal report.
    Pour pallier à ce problème j'ai tout de suite penser aux fonctions supplémentaires en créant une fonction ISNOTNULL dans un UFL, le soucis c'est que ma fonction ne fonctionne pas pour tous les types de données.

    Si vous avez une autre idée que la fonction dans un UFL je suis preneuse également.

    Merci Beaucoup
    Nathalie

  2. #2
    Modérateur
    Avatar de luc_chivas
    Profil pro
    Consultant BO/Crystal Reports
    Inscrit en
    Avril 2004
    Messages
    1 941
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant BO/Crystal Reports

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 941
    Points : 2 719
    Points
    2 719
    Par défaut
    bonjour

    As tu essayé de mettre dans les options du rapport "Attribuer la valeur par défaut aux valeurs nulles " ??? qui peut se faire aussi au niveau d'une formule... ??
    Luc

    Disponible - Intervention sur demande tout pays, toutes régions
    Formateur Crystal Reports (toutes versions)
    Contrat de support possible
    N'hésitez pas.... http://paypal.me/lucrascar

  3. #3
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Bonjour Luc et merci pour ta réponse,
    mon problème ne vient des valeurs NULL, je souhaiterai créer une fonction qui accepterai en variable d'entrée tous types de données.
    Dans le progiciel il est possible de filtrer n'importe quel champ avec le filtre "n'est pas vide", le soucis c'est que le progiciel modifie la query de mon rapport en y ajoutant la ligne IsNotNull(champX), IsNotNull n'est pas connu dans crystal report c'est l'agrégat "Not IsNull" qui aurait du etre inséré dans ma query.
    J'ai donc tenté de créer une fonction UFL IsNotNull, cela fonctionne bien cependant le paramètre (champX) doit être typé et dans mon cas il peut être de n'import quel type étant donné que l'on peut filtrer sur n'importe quel champ de la base.
    Si dans mon UFL je crée 2 fonctions IsNotNull avec un type de paramètre différent, sous Crystal Report je retrouve 2 fonctions IsNotNull et IsNotNull2 ce qui fait que ma query fonctionne fonctionne bien pour le 1er type de données mais pas pour le second.
    J'aurai souhaité pouvoir créer une fonction IsNotNull (X Object) qui accepterai en entrée tout type d'objet comme la fonction IsNull.

    As-tu une idée ?

    Merci beaucoup.
    Nathalie

  4. #4
    Modérateur
    Avatar de luc_chivas
    Profil pro
    Consultant BO/Crystal Reports
    Inscrit en
    Avril 2004
    Messages
    1 941
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant BO/Crystal Reports

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 941
    Points : 2 719
    Points
    2 719
    Par défaut
    Bonjour Nathalie,
    As tu possibilité de faire pointer ton rapport sur une procédure stockée ou une vue, au lieu d'utiliser la requête de Crystal ?
    Luc

    Disponible - Intervention sur demande tout pays, toutes régions
    Formateur Crystal Reports (toutes versions)
    Contrat de support possible
    N'hésitez pas.... http://paypal.me/lucrascar

  5. #5
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Luc,

    oui j'ai la possibilité d'utiliser une vue ou une procédure stockée, cependant tous mes rapports sont concernés (environ 50) et tous les modifier serait très compliqué c'est pour cette raison que je suis partie sur une UFL qui ne nécessitait aucune modification des rapports.
    J'ai essayé également la création d'une fonction stockée IsNotNull déclarée avec différents types de paramètres mais il semblerait que la Query de Crystal Reports ne voit pas les procédures stockées (d'ailleurs sous Crystal Report on ne peut pas l'utiliser telle quelle il faut créer une Expression).

    Quelle était ton idée sur l'utilisation d'une vue ou d'une procédure stockée ?

    merci de te pencher sur mon problème qui me pose des soucis depuis plus d'un mois.

    Nathalie

  6. #6
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 202
    Points : 258
    Points
    258
    Par défaut
    pour que ta fonction marche pour tout type il faut que tu transforme ton champs préalablement avec une fonction qui dans crystal accepte tous les types ( totext ) , donc à ta fonction tu lui passe ton champs de base de données modifié par la fonction totexte quitte ensuite à la tester avec les fonctions habituelles ( isnumeric etc ... ) dans la fonction même .

  7. #7
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Bonjour Gaelle,
    merci pour ta réponse cependant je n'utilise pas cette fonction dans la Query de mes rapports, elle est ajoutée en LIVE par le progiciel je n'ai donc pas moyen de l'intercepter pour ajouter un totext.
    Il faudrait que je puisse déclarer cette fonction afin qu'elle soit connue dans Crystal Report au cas ou le progiciel ajouterai ce filtres aux filtres existants dans ma Query de Crystal report.

    Bonne journée.
    Nathalie

  8. #8
    Modérateur
    Avatar de luc_chivas
    Profil pro
    Consultant BO/Crystal Reports
    Inscrit en
    Avril 2004
    Messages
    1 941
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant BO/Crystal Reports

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 941
    Points : 2 719
    Points
    2 719
    Par défaut
    Bonjour,
    C'est quoi ton progiciel,
    Tu pointe tes rapports directement sur une query générée par de progiciel ?
    Luc

    Disponible - Intervention sur demande tout pays, toutes régions
    Formateur Crystal Reports (toutes versions)
    Contrat de support possible
    N'hésitez pas.... http://paypal.me/lucrascar

  9. #9
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Bonjour Luc,
    c'est un progiciel de gestion de stock qui autorise l'utilisateur à apposer des filtres sur tous les champs des écrans notamment le filtre "n'est pas vide".
    lorsque l'utilisateur appelle les rapports Crystal, les filtres apposés à l'écran sont ajoutés à la clause where que j'ai mise dans crystal report (à la fin de ma clause where).
    Exemple clause where:
    dans crystal report : where champ1 = 'X' and ISNULL(champ2)
    Filtre sur écran : champ3 "n'est pas vide"
    Clause where du rapport à l'execution : where (champ1 = 'X' and ISNULL(champ2)) and IsNotNull(champ3)

    pas moyen d'intercepter la requête avant son execution, la seule solution est de faire connaître la fonction IsNotNull à Crystal Reports.

    J'espère que c'est un peu plus clair.

    Nathalie

  10. #10
    Modérateur
    Avatar de luc_chivas
    Profil pro
    Consultant BO/Crystal Reports
    Inscrit en
    Avril 2004
    Messages
    1 941
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant BO/Crystal Reports

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 941
    Points : 2 719
    Points
    2 719
    Par défaut
    Nathalie,
    Si effectivement, le progiciel modifié ta requête, c'est que crystal est intégré dans ce progiciel. Dans ce cas, je dirais qu'il y a un bug dans le progiciel,
    Si tes rapports s'appuient sur une requête sql générée par le progiciel, mais que cette requête est comprise par sql, c'est peut-être que tu n' utilise pas le bon type de connexion à la base de données sous crystal.
    J'dis ça, J'dis rien........
    Luc

    Disponible - Intervention sur demande tout pays, toutes régions
    Formateur Crystal Reports (toutes versions)
    Contrat de support possible
    N'hésitez pas.... http://paypal.me/lucrascar

  11. #11
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Luc,
    en effet le progiciel a un bug mais étant donné qu'aucune évolution n'est prévue j'essaie de trouver une solution pour contourner le problème.
    La requête générée par le progiciel ne fonctionne pas sous SQL et fait planter le rapport avec une erreur oracle.

    Nathalie

  12. #12
    Modérateur
    Avatar de luc_chivas
    Profil pro
    Consultant BO/Crystal Reports
    Inscrit en
    Avril 2004
    Messages
    1 941
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant BO/Crystal Reports

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 941
    Points : 2 719
    Points
    2 719
    Par défaut
    Nathalie,

    Peux tu créer une fonction ISNOTNULL qui te ferais le Not Is Nulll ou sur ta requête ?
    Luc

    Disponible - Intervention sur demande tout pays, toutes régions
    Formateur Crystal Reports (toutes versions)
    Contrat de support possible
    N'hésitez pas.... http://paypal.me/lucrascar

  13. #13
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Luc,

    j'ai essayé de créer une fonction stockée ISNOTNULL mais on ne peut appeler des fonctions Oracle dans le "Select Expert" de Crystal report
    on ne peut les utiliser que dans des Expressions Crystal Report.
    Connais-tu une manière d'utiliser une fonction stockée directement dans la clause where du rapport sans passer par une Formule ou une expression ?

    Merci beaucoup.
    Nathalie

  14. #14
    Modérateur
    Avatar de luc_chivas
    Profil pro
    Consultant BO/Crystal Reports
    Inscrit en
    Avril 2004
    Messages
    1 941
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant BO/Crystal Reports

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 941
    Points : 2 719
    Points
    2 719
    Par défaut
    C'est vrai que j'ai un peu de mal sur ce coup, mais si c'est ton progiciel qui ajoute cette instruction /fonction à ta requête, tu ne devrais pas avoir à t'en préoccuper dans crystal. Le seul truc c'est qu'il faut que le schéma crystal puisse y accéder....
    Luc

    Disponible - Intervention sur demande tout pays, toutes régions
    Formateur Crystal Reports (toutes versions)
    Contrat de support possible
    N'hésitez pas.... http://paypal.me/lucrascar

  15. #15
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Luc,

    c'est tout à fait celà, il faut que Crystal reconnaisse cette fonction dans son analyseur syntaxique sinon il plante à l'execution mais si la fonction est stockée dans la base de données.
    Je pensais avoir trouver la solution en écrivant ma fonction UFL, je l'avais écrite avec un paramètre de type varchar et cela fonctionnait très bien sans modifier les rapports mais quand j'ai voulu l'élargir à tous les types de données je me suis retrouvée bloquée car Crystal voulait absolument un type de donnée basique en paramètre de la fonction.

    A l'aide...

    Merci
    Nathalie

  16. #16
    Modérateur
    Avatar de luc_chivas
    Profil pro
    Consultant BO/Crystal Reports
    Inscrit en
    Avril 2004
    Messages
    1 941
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant BO/Crystal Reports

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 941
    Points : 2 719
    Points
    2 719
    Par défaut
    Nathalie
    Peux tu en MP me donner le nom du progiciel, la version, la plate-forme, et les caractéristiques de ton sgbd ?
    Luc

    Disponible - Intervention sur demande tout pays, toutes régions
    Formateur Crystal Reports (toutes versions)
    Contrat de support possible
    N'hésitez pas.... http://paypal.me/lucrascar

  17. #17
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Bonjour Luc,

    mon SGBDR est Oracle 10g et je travaille avec Crystal Reports XI
    concernant le progiciel il est développé en JAVA et HTML et fonctionne via IE, crystal reports est intégré au progiciel comme générateur de rapports.

    Merci.
    Nathalie

  18. #18
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 14
    Points : 3
    Points
    3
    Par défaut
    Luc,

    est-il possible de créer une fonction identique à la fonction ISNULL déjà présente dans Crystal report, c'est exactement ce qu'il me faudrait sauf que je l'appellerai ISNOTNULL.

    Merci.
    nathalie

  19. #19
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 202
    Points : 258
    Points
    258
    Par défaut
    Je suis surprise que ton progiciel puisse modifier directement la requête Crystal sans passer par un fichier *.qry que tu peux intercepter .

    Le fait qu'il ajoute des fonctions inconnues pour crystal me fait penser qu'il retravaille par concaténation de texte .

  20. #20
    Modérateur
    Avatar de luc_chivas
    Profil pro
    Consultant BO/Crystal Reports
    Inscrit en
    Avril 2004
    Messages
    1 941
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant BO/Crystal Reports

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 941
    Points : 2 719
    Points
    2 719
    Par défaut
    Bonjour Nathalie..
    J'ai fait pas mal de test, interrogé pas mal de base de données.. j'ai bien peur que ce problème soit insoluble, hormis modifier le code de l'ERP........
    Eventuellement, tourner le problème autrement, et proposer les paramètres directement dans Crystal, si tu peux contrôler tes utilisateurs...
    Luc

    Disponible - Intervention sur demande tout pays, toutes régions
    Formateur Crystal Reports (toutes versions)
    Contrat de support possible
    N'hésitez pas.... http://paypal.me/lucrascar

Discussions similaires

  1. Fonction scalaire avec paramètre de type DateTime2
    Par FRinguette dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 10/10/2014, 00h16
  2. Fonctions avec paramètres à types dynamiques
    Par benlaug dans le forum Langage
    Réponses: 6
    Dernier message: 19/06/2012, 20h54
  3. Méthode avec un paramètre de type "object" : comment lui passer une List ?
    Par Picsonald dans le forum Windows Communication Foundation
    Réponses: 22
    Dernier message: 19/03/2012, 10h16
  4. Réponses: 9
    Dernier message: 30/03/2006, 16h44
  5. Réponses: 4
    Dernier message: 11/09/2005, 01h21

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