3
votes

Comment passer null ou vide aux filtres FetchXML?

Scénario: j'ai un champ de texte dans Dynamics CRM sur le type de commande. Ce champ est intégré à d'autres systèmes et n'acceptera que la liste de valeurs déjà indiquée; comme, ABC, IJK, XYZ etc. Maintenant, je peux interroger ce champ en utilisant la recherche avancée s'il contient des données ou non.

Maintenant, dans le rapport, j'ai un paramètre qui a toutes ces valeurs possibles et un supplémentaire comme "Ne contient pas de données" et sa valeur est une chaîne vide. J'ai également activé ce paramètre de rapport pour la sélection multiple. Mais je ne peux pas obtenir les commandes si l'une des valeurs est sélectionnée dans les paramètres du rapport.

Voici ma requête FetchXML, veuillez me faire savoir ce qui me manque ci-dessous.

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
  <entity name="invoicedetail">
   <attribute name="productid" />
    <attribute name="invoicedetailid" />
    <attribute name="tv_ordertype" />
    <order attribute="productid" descending="false" />
    <filter type="and">
        <condition attribute="tv_ordertype" operator="in" value="@Order_Types" />
    </filter>
  </entity>
</fetch>


0 commentaires

3 Réponses :


-1
votes

Essayez quelque chose comme ci-dessous

  <fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
    <entity name="invoicedetail">
        <attribute name="productid" />
        <attribute name="invoicedetailid" />
        <attribute name="tv_ordertype" />
        <order attribute="productid" descending="false" />      
        <filter type='and'>         
<condition attribute="tv_ordertype" operator="in" value="@Order_Types" />
        </filter>
    </entity>
</fetch>


2 commentaires

cela ne fonctionne pas pour moi et s'est retrouvé sur une erreur: Le paramètre FetchXML "@Order_Types" ne peut pas obtenir plusieurs valeurs. Remplacez le paramètre "@Order_Types" par un paramètre à valeur unique et réessayez


J'ai mis à jour ma réponse. Votre paramètre obtient-il tous les Order_Types? Pouvez-vous publier une capture d'écran de votre paramètre et de votre requête. Lien de référence nishantrana.me/2016/03/04/…



-1
votes

Votre fichier XML de récupération doit ressembler à ceci:

<?xml version="1.0" encoding="UTF-8"?>
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
   <entity name="invoicedetail">
      <attribute name="productid" />
      <attribute name="invoicedetailid" />
      <attribute name="tv_ordertype" />
      <order attribute="productid" descending="false" />
      <filter type="and">
         <condition attribute="tv_ordertype" operator="in"/>
            <value>@Order_Types[0]</value>
            <value>@Order_Types[1]</value>
            <!-- etc -->
         </condition>
      </filter>
   </entity>
</fetch>


0 commentaires

1
votes

Malheureusement, vous ne pouvez pas combiner les valeurs ("ABC", "IJK", "XYZ") avec une option de chaîne vide. Pensez à la façon dont SSRS analysera la chaîne vide dans FetchXml:

<filter type="or">
    <condition attribute="tv_ordertype" operator="null" />
    <condition attribute="tv_ordertype" operator="in" value="@Order_Types" />
</filter>

Étant donné que l'opérateur in a une chaîne vide, il n'y aura pas de résultats correspondants.

Une approche qui pourrait fonctionner est de modifier votre FetchXml pour utiliser un filtre ou , comme celui-ci

<condition attribute="tv_ordertype" operator="in" value="" />

Cela va maintenant renvoyer toutes les valeurs de CRM qui correspondent à vos critères OU ont un tv_ordertype

Vous pouvez ensuite appliquer un filtrage supplémentaire au niveau du tableau / rapport


0 commentaires