sharepoint
  • sharepoint-2007
  • caml
  • 2011-01-12 11 views 0 likes 
    0

    Ich habe den folgenden Code:CAML-Abfrage gibt falsche Ergebnisse zurück?

        SPQuery oQuery = new SPQuery(); 
            oQuery.Query = @"<Query> 
                  <Where> 
                   <And> 
                   <Eq> 
                    <FieldRef Name='PublishToSM' /> 
                    <Value Type='Boolean'>1</Value> 
                   </Eq> 
                   <IsNull> 
                    <FieldRef Name='SMUpdateDate' /> 
                   </IsNull> 
                   </And> 
                  </Where> 
                 </Query>"; 
            SPListItemCollection collListItems = list.GetItems(oQuery); 
    
            NevCoSocialMedia.NevCoFacebook fb = new NevCoSocialMedia.NevCoFacebook(); 
    
            foreach (SPListItem oListItem in collListItems) 
            { 
             if (oListItem.Fields.ContainsField("PublishToSM") && Convert.ToBoolean(oListItem["PublishToSM"]) == true) 
             { 
    . 
    . 
    . 
    

    Meine Frage ist, warum muss ich die letzte if Anweisung haben? Wenn ich dies nicht habe, wird ein Fehler ausgegeben, der besagt, dass der Bezeichner nicht existiert, wenn er versucht, oListItem["PublishToSM"] zu tun. Dies scheint unmöglich, da meine CAML-Abfrage prüft, dass diese einen entsprechenden Wert hat ...

    Antwort

    2

    entfernen Sie die „query“ Elementwechsel

    wrapping your cam

    0

    Versuchen Sie, den Werttyp auf eine ganze Zahl

    <Eq> 
        <FieldRef Name='PublishToSM' /> 
        <Value Type='Integer'>1</Value> 
    </Eq> 
    

    http://www.sharepointblues.com/2010/02/22/caml-and-querying-boolean-fields/

    +0

    Ich denke, mit 'Type = 'Boolean'' und' 1' funktioniert. Der Link, auf den Sie verweisen, verwendet 'true'. –

    0

    Immer ViewFields hinzufügen, wenn Sie nicht, nur Grundsätzliches IDs und Titel werden in den zurückgegebenen Listenelementen ausgefüllt.

    0

    Ich habe auch ein seltsames Problem mit der Verwendung des Boolean-Typs in einer Caml-Abfrage zuvor festgestellt. In 6 unserer 7 Umgebungen funktionierte Boolean gut, aber in einem von ihnen hat es nicht funktioniert und es hat einen unserer Workflows komplett vermasselt. Wir konnten nie herausfinden warum.

    Testen Sie Integer oder Bit für das Feld 'PublishToSM' und sehen Sie, ob Sie ein anderes Ergebnis erhalten.

     Verwandte Themen

    • Keine verwandten Themen^_^