none
Problem mit 'Not In' in einem FetchXml Statement RRS feed

  • Frage

  • hallo zusammen,

    das problem das ich im moment habe ist folgendes:

    ich habe ein fetchxml statement und das würde ich gerne im 'onload' vom crm

    ausführen, damit ich auf datenwerte zugreifen kann die ich benötige.

    wenn ich nun das statement laufen lasse erhalte ich die meldung:

    "soap:ServerServer was unable to process reques. 0x80040203 The value passed for ConditionOperator.In is empty Platform"

    weiss nicht warum dies mit 'not-in' nicht geht.

     

    hier noch das fetchxml - statement

    die sListId enhält folgende daten: AD6F91AF-381E-E011-BAAE-000C29091E11

       var xml = "" +
        "<?xml version='1.0' encoding='utf-8'?>" +
        "<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'" +
        " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'" +
        " xmlns:xsd='http://www.w3.org/2001/XMLSchema'>" +
        GenerateAuthenticationHeader() +
        "<soap:Body>" +
        "<Fetch xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+
        "<fetchXml>"+
        " &lt;fetch mapping='logical' distinct='true' count='50'&gt;" +
        " &lt;entity name='new_marketingplugin'&gt;" +
        " &lt;attribute name='new_name' /&gt;" +
        " &lt;filter&gt;" +
        " &lt;condition attribute='new_marketinglistid' operator='not-in' value='"+ sListId +"' /&gt;" +
        " &lt;/filter&gt;" +
        " &lt;link-entity name='list' from='listid' to='new_marketinglistid' alias='m' link-type='inner'&gt;" +
        " &lt;attribute name='lockstatus' /&gt;" +
        " &lt;link-entity name='listmember' from='listid' to='listid' alias='lm' link-type='inner'&gt;" +
        " &lt;link-entity name='contact' from='contactid' to='entityid' alias='c' link-type='inner'&gt;" +
        " &lt;filter&gt;" +
        " &lt;condition attribute='contactid' operator='ne' value='"+ crmForm.ObjectId +"' /&gt;" +
        " &lt;/filter&gt;" +
        " &lt;/link-entity&gt;" +
        " &lt;/link-entity&gt;" +
        " &lt;/link-entity&gt;" +
        " &lt;/entity&gt;" +
        " &lt;/fetch&gt;" +
        "</fetchXml>"+
        "</Fetch>"+
        "</soap:Body>" +
        "</soap:Envelope>";

       var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
       xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
       xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Fetch");
       xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
       xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
       xmlHttpRequest.send(xml);
      
       var resultXml = xmlHttpRequest.responseXML;

       var resultSet = resultXml.text;
       resultSet.replace('&lt;','<');
       resultSet.replace('&gt;','>');

       var oXmlDoc = new ActiveXObject("Microsoft.XMLDOM");
       oXmlDoc.async = false;
       oXmlDoc.loadXML(resultSet);

       var result = oXmlDoc.getElementsByTagName('new_name');

     

    vielen dank für eure hilfe

    gruss pascal

    Dienstag, 25. Januar 2011 10:48

Antworten

  • Hallo Pascal,

    kann es sein, das einer der Werte ein NULL enthält? Das würde ich aus der Fehlermeldung schließen.


    Viele Grüße

    Michael Sulz
    MVP für Microsoft Dynamics CRM
    Blog
    Website
    • Als Antwort markiert Michael Sulz Freitag, 28. März 2014 10:01
    Dienstag, 25. Januar 2011 16:05

Alle Antworten

  • Hallo Pascal,

    kann es sein, das einer der Werte ein NULL enthält? Das würde ich aus der Fehlermeldung schließen.


    Viele Grüße

    Michael Sulz
    MVP für Microsoft Dynamics CRM
    Blog
    Website
    • Als Antwort markiert Michael Sulz Freitag, 28. März 2014 10:01
    Dienstag, 25. Januar 2011 16:05
  • hallo michael,

    danke für eine antwort, das problem ist gelöst.

    die werte waren nicht NULL, aber ich weiss ehrlich gesagt nicht wo das problem lag.

    habe meinen FetchXml Code durch das tool "JavaScript Web Service Calls 4.0" (Stunnware tools) laufen lassen

    und anschliessend den javascript code in mein 'OnLoad' event kopiert.

    dies hat bestens funktioniert und ich konnte die selektierten spalten auslesen.

     

    auslesen der spalten:

    var result = oXmlDoc.getElementsByTagName('new_name');

    result[0].firstChild.data;

    oder

    result.item(0).firstChild.nodeValue

    oder

    oXmlDoc.getElementsByTagName('new_name')[0].firstChild.data

    oder

    oXmlDoc.getElementsByTagName('new_name').item(0).firstChild.nodeValue

     

    achtung:

    wenn eine spalte selektiert wird die einen korrelationsnamen enthält, muss

    dieser auch angegeben werden.

    var result2 = oXmlDoc.getElementsByTagName('m.lockstatus');

     

    gruss pascal

    • Als Antwort vorgeschlagen ckeller Samstag, 29. Januar 2011 16:35
    Mittwoch, 26. Januar 2011 07:37