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

Formules Discussion :

[CR9 & RAS] Fonctions dans une formule de sélection


Sujet :

Formules

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 15
    Points : 11
    Points
    11
    Par défaut [CR9 & RAS] Fonctions dans une formule de sélection
    Bonjour,

    Voilà mon problème :
    Je publie mes états grâce à un pg asp.
    Ds ce programme je rajoute un filtre (se filtre doit être dynamique car il correspond au numéro de la personne connectée).
    En parallèle mes états crystal contiennent leur propre formule de sélection.
    Tout se passe bien tant que cette formule est de la forme

    Champ=Valeur AND Champ=Paramètre AND ....

    Dès que cette formule est un peu plus complexe : utilisation des fonctions IsNull, CurentDate ... J'obtiens l'erreur suivante :

    Erreur dans la formule <Record_Selection>. ' AND {BPCUSTOMER.BPCINV_0} = "A028" ' Le texte restant ne semble pas faire partie de la formule.


    Par contre, si je laisse une formule complexe dans les états crystal et que je supprime le filtre dynamique dans l'asp, tout se passe bien.

    Je pensais écrire la totalité de la formule de sélection dans le pg asp pour voir ce que ca donne, mais comment traduire une sélection du genre isnull(champ) avec le SDK?? Est-ce possible? Le problème ne viendrait-il pas de là?

    Merci de votre aide!

  2. #2
    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,
    pourrais-tu nous donner un exemple complet de RecordSelection qui ne fonctionne pas.
    Car ca devrait fonctionner avec IsNull...

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Merci, voilà quelques précisions :

    Si je met dans l'état la formule de sélection toute simple : isnull({BPARTNER.BPRNAM_0})

    J'obtiens l'erreur suivante :
    Erreur dans la formule <Record_Selection>. ' AND {BPCUSTOMER.BPCINV_0} = "A028" ' Le texte restant ne semble pas faire partie de la formule.
    /INTRANET/projects/ASP/rPortfolio/HTMLViewers/interactiveViewerEx.asp, line 139


    La ligne 139 c'est
    viewer.ProcessHttpRequest Request, Response, Session

    Pourtant il n'y a aucun problème quand je fais un aperçu de l'état dans CR. Et plus de problème non plus si je supprime le filtre. C'est à dire les lignes de code suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim Operator, FieldF, NewFilterItem, NewConstantValue
    Set NewFilterItem=ObjectFactory.CreateObject("CrystalReports.FieldRangeFilterItem")
    Set Operator=ObjectFactory.CreateObject("CrystalReports.OperatorFilterItem")
    Set NewConstantValue=ObjectFactory.CreateObject("CrystalReports.ConstantValue")
    Set FieldF = FindFieldByName("BPCUSTOMER.Bpcinv_0", ClientDoc)
    NewConstantValue.Value = login
    NewFilterItem.Values.Add NewConstantValue
    NewFilterItem.RangeField = FieldF
    NewFilterItem.Operation = 1
     
    Operator.Operator = "AND"
    ClientDoc.DataDefController.RecordFilterController.Additem 1,operator
    ClientDoc.DataDefController.RecordFilterController.Additem 2,NewFilterItem

  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
    On dirait que tu ecrases ton filtre et qu'il ne te reste plus que le " AND {BPCUSTOMER.Bpcinv_0} = "A0128"
    d'où l'erreur. Ton IsNull() a disparu. Essaie peut-être de composer le recordSelection complet dans ton code
    en faisant 3 AddItem (Filer IsNull + Operator + Filter sur BPCustomer).
    OU
    Tu peux essayer de décaler ton AddItem en 2 et 3 pour qu'il conserve le 1 (Enfin c'est juste une idée .)

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Encore merci

    Effectivement, on dirai que la condition de sélection isnull() est écrasée. Bizard, quand la formule de sélection est "simple" je n'ai pas ce problème : la formule de sélection + le filtre dans asp sont bien pris en compte tous les deux.

    La 1er position de additem, c'est le 0, j'ai déjà essayer de décaler, mais rien à faire...

    Sinon, comme tu me le conseilles je voulais essayer de tout passer dans mon code, mais je n'ai pas trouvé de solution pour écrire la condition IsNull.
    L'objet FieldRangefilterItem est toujours formé des propriétés suivantes :
    • Un nom de champ de la base de donnée
      Un opérateur (1 pour le '=')
      Une valeur

    alors, je sais pas comment transcrire "IsNull", j'ai bien essayé 2-3 bidouilles, mais sans succès !

    Il y a peut être la propriété FreeEditingText de l'objet filter qui pourait m'aider mais j'ai pas encore bien saisi sont fonctionnement...
    Je vais essayer de cherche de ce coté

    Enfin si t'as encore une idée, je t'écoute!

  6. #6
    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
    mais de rien ...
    Mais je ne peux en faire plus. Je ne connais pas l'ASP et j'ai juste essayé de te filer un petit coup de pouce en ayant un regard différent sur ton code.... Mais de toutes façons tu es sur la bonne voie pour résoudre le problème car c'est ton filtre qui est faux ou incomplet...
    Bonne continuation.

    Tiens nous au courant de l'évolution de ton problème.

  7. #7
    Membre à l'essai
    Inscrit en
    Juillet 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    j'ai trouvé une solution avec "freeeditingtext" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim Filter, strSelect, OldFilter
    Set Filter = clientDoc.DataDefController.DataDefinition.RecordFilter
    Oldfilter = clientdoc.datadefinition.RecordFilter.computeText
    strSelect= OldFilter & "AND {BPCUSTOMER.Bpcinv_0}=""A028"""
    Filter.FreeEditingText=strSelect
    ClientDoc.DataDefController.RecordFilterController.modify Filter
    La totalité de la sélection est bien prise en compte, et il n'y a pas de problème avec IsNull, ni currentdate

    Bon je saute pas encore de joie parceque je vais de pb en pb, déjà avec qq tests je m'aperçois que l'opérateur "OR" n'est pas efficace du tout. Je veux bien que le temps d'exécution soit un peu plus long mais là c'est vraiment abusé...
    Enfin, je vais persister un peu et on verra, ca fera peut-etre l'objet d'un prochain post...

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/01/2014, 15h03
  2. [WD-2010] Fonction MOD imbriquée dans une formule IF
    Par Marco le Pouillot dans le forum Word
    Réponses: 4
    Dernier message: 23/04/2013, 02h45
  3. [XL-2003] Problème avec utilisation d'une fonction dans les formules
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/05/2009, 10h43
  4. Utiliser une fonction dans les formules
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/05/2009, 09h13
  5. Réponses: 1
    Dernier message: 28/09/2007, 15h59

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