Lösung: SPQuery sucht nicht Ordner

Letzte Woche war ich Umsetzung einer "entwickelt" Lösung für einen Client, der BDC und SPQuery verwendet und lief in einige Schwierigkeiten bei der Verwendung von SPQuery gegen eine Dokumentbibliothek mit Ordnern. Fazit: "rekursive zuweisen" die Ansicht-Attribut der Abfrage.

Mein Szenario:

  • Am Montag, Ich ein Dokument uploaden und geben Sie einige Metadaten.
  • In der folgenden Woche, Ich hochladen ein neues Dokument. Ein Großteil dieses neue Dokument-Metadaten basiert auf das Dokument, das ich am Montag hochgeladen (Wir nennen das "master-Dokument").
  • Wir haben eine Web-Service-Fassade erstellt, die eine BDC-freundliche Schnittstelle zu der Liste bereitstellt, so dass Benutzer problemlos das Montag-Dokument über eine Titelsuche finden können.
  • Eine Datenspalte BDC bietet eine benutzerfreundliche Oberfläche. (Dies ist Teil von meinem Versuch mit BDC für ein freundlicher Nachschlagefeld).

Der letzte BDC Fassade Service verwendet eine Abfrage wie folgt für die Suche:

 // U2U Tool zur Unterstützung bei der Erstellung dieser CAML-Abfrage verwendet.
      oQuery.Query =
        "<Wo>";

      If (titleFilter.Length > 0)
        oQuery.Query  =
          "  <Und>";

      oQuery.Query  =
        "    <Und>" +
        "      <GEQ>" +
        "        <FieldRef Name =  "DocumentId" />" +
        "        <Werttyp =  "Text">" + minId + "</Wert>" +
        "      </GEQ>" +
        "      <Leq>" +
        "        <FieldRef Name =  "DocumentId" />" +
        "        <Werttyp =  "Text">" + maxId + "</Wert>" +
        "      </Leq>" +
        "    </Und>";

      If (titleFilter.Length > 0)
        oQuery.Query  =
          "    <Enthält>" +
          "      <FieldRef Name =  "Title" />" +
          "      <Werttyp =  "Text">" + titleFilter + "</Wert>" +
          "    </Enthält>" +
          "  </Und>";
      oQuery.Query  =
        "</Wo>";

Während der Anfangsphase der Entwicklung, Dieses wirkten groß. Jedoch, wir eingeführt Ordner in das Verzeichnis, einige Probleme zu lösen und plötzlich, Mein BDC-Farbauswahl würde nicht keine Ergebnisse zurück.. Ich verfolgt dies daran, dass der SPQuery nie zu keinem Ergebnis würde. Wir verwendeten Ordner in erster Linie um mehrere Dateien mit demselben Namen hochgeladen werden, aber mit verschiedenen Meta-Daten zu ermöglichen. Beim Hochladen der Datei, Wir erstellen Sie einen Ordner auf das Listenelement-ID basiert, und verschieben Sie dann die Datei dort (Ich schrieb über die Hier; Wir hatten gemischte Ergebnisse mit diesem Ansatz, aber im großen und ganzen, Es funktioniert gut). Der Benutzer zum Erstellen von Ordnern und in der Tat interessieren nicht, verstehen Sie nicht wirklich, dass es keine Ordner. Wir haben alle Ansichten auf der Bibliothek zum Anzeigen der Elemente ohne Rücksicht auf Ordner konfiguriert..

Ich traf dieses doppelt so die technische Umsetzung entwickelt und löste es anders bei jedem problem. Zum ersten Mal, Ich war nicht den CONTAINS-Operator in der Abfrage verwenden.. Ohne ein CONTAINS-operator, Ich konnte das Problem lösen, indem Sie die Ansicht auf das SPQuery-Konstruktor angeben. Statt mit dem Standardkonstruktor:

SPList oList = Web.Listen["Dokumente"];

SPQuery oQuery = Neu SPQuery();

Ich habe stattdessen einen Konstruktor, der eine Ansicht angegeben:

SPList oList = Web.Listen["Dokumente"];

SPQuery oQuery = Neu SPQuery(oList.Views["Alle Dokumente"]);

Dass das Problem gelöst und ich fing an, meine Ergebnisse zu erhalten.

Ich habe dann den CONTAINS-Operator in die Mischung und es brach wieder. Es stellt sich heraus, dass den CONTAINS-operator, soweit ich das beurteilen kann, funktioniert nicht mit dem Blick auf die gleiche Weise wie die eine einfachere GEQ / LEQ-Operatoren. Ich habe einige Suche und erfuhr, dass die Abfrage ViewAttributes zum "Rekursiv" gesetzt werden muss, wie in:

oQuery.ViewAttributes = "Umfang = "Recursive"";

Das löste das Problem für CONTAINS. Tatsächlich, Dies auch meine ursprünglichen Suche Problem gelöst und ich hatte die rekursive angegeben Attribut das erste Mal, Ich möchte nicht in die Frage erneut ausgeführt haben.

Die Tatsache, die dass eine Ansicht basierenden SPQuery für einige Operatoren funktioniert (GEQ/LEQ) und andere nicht (ENTHÄLT), gepaart mit der Tatsache, die KPIs scheinen nicht zu wirken überhaupt mit Ordner-haltigen Dokument Bibliotheken führt mich zu glauben, dass SPQuery einige Probleme Orthogonalität hat.

Besonderer Dank:

  • Die guten Leute auf U2U und ihre Abfragetool.
  • Michael Hoffer groß "Learning by doing" Blog-post, Kommentare und Antworten.

</Ende>

Onnieren Sie meinen Blog ab!

3 Gedanken zu „Lösung: SPQuery sucht nicht Ordner

  1. Kein name

    http://www.batteryfast.co.uk/asus/w3v.htm ASUS w3v Akku,
    http://www.batteryfast.co.uk/asus/w3000a.htm ASUS w3000a Akku,
    http://www.batteryfast.co.uk/asus/w3000.htm ASUS w3000 Akku,
    http://www.batteryfast.co.uk/asus/w3000v.htm ASUS w3000v Akku,
    http://www.batteryfast.co.uk/asus/a31-s5.htm ASUS a31-s5 Akku,
    http://www.batteryfast.co.uk/asus/a32-s5.htm ASUS a32-s5 Akku,
    http://www.batteryfast.co.uk/asus/s52n.htm ASUS s52n Akku,
    http://www.batteryfast.co.uk/asus/s5000.htm ASUS s5000 Akku,
    http://www.batteryfast.co.uk/asus/s5200n.htm ASUS s5200n Akku,
    http://www.batteryfast.co.uk/asus/s5n.htm ASUS s5n Akku,
    http://www.batteryfast.co.uk/asus/90-naa1b1000.htm ASUS 90-naa1b1000 Akku,
    http://www.batteryfast.co.uk/asus/s2691061.htm ASUS s2691061 Akku,
    http://www.batteryfast.co.uk/asus/a42-v6.htm ASUS a42-v6 Batterie,
    http://www.batteryfast.co.uk/asus/a32-u5.htm ASUS a32-u5 Akku,
    http://www.batteryfast.co.uk/asus/u5f.htm ASUS u5f Akku,
    http://www.batteryfast.co.uk/asus/u5a.htm ASUS u5a Akku,
    http://www.batteryfast.co.uk/asus/u5f.htm ASUS u5f Akku,
    http://www.batteryfast.co.uk/asus/u5.htm ASUS u5 Akku,
    http://www.batteryfast.co.uk/compaq/nw8000.htm Compaq nw8000 Akku,
    http://www.batteryfast.co.uk/compaq/nc8000.htm Compaq nc8000 Akku,
    http://www.batteryfast.co.uk/compaq/v1000.htm Compaq v1000 Akku,
    http://www.batteryfast.co.uk/compaq/nc6000.htm Compaq nc6000 Akku,
    http://www.batteryfast.co.uk/compaq/nx5000.htm Compaq nx5000 Akku,
    http://www.batteryfast.co.uk/compaq/n600.htm Compaq n600 Akku,
    http://www.batteryfast.co.uk/compaq/n600c.htm Compaq n600c Akku,
    http://www.batteryfast.co.uk/compaq/n610c.htm Compaq n610c Akku,
    http://www.batteryfast.co.uk/compaq/n610v.htm Compaq n610v Akku,
    http://www.batteryfast.co.uk/compaq/n620c.htm Compaq n620c Akku,
    http://www.batteryfast.co.uk/compaq/e500.htm Compaq e500 Akku,
    http://www.batteryfast.co.uk/compaq/e500s.htm Compaq e500s Akku,
    http://www.batteryfast.co.uk/compaq/v300.htm Compaq v300 Akku,
    http://www.batteryfast.co.uk/compaq/v500.htm Compaq v500 Akku,
    http://www.batteryfast.co.uk/compaq/pp2060.htm Compaq pp2060 Akku,
    http://www.batteryfast.co.uk/compaq/nx9000.htm Compaq nx9000 Akku,
    http://www.batteryfast.co.uk/compaq/nx9005.htm Compaq nx9005 Akku,
    http://www.batteryfast.co.uk/compaq/nx9010.htm Compaq nx9010 Akku,
    http://www.batteryfast.co.uk/compaq/nx9020.htm Compaq nx9020 Akku,
    http://www.batteryfast.co.uk/compaq/n110.htm Compaq n110 Akku,
    http://www.batteryfast.co.uk/compaq/n110s.htm Compaq n110s Akku,
    http://www.batteryfast.co.uk/compaq/pp2101x.htm Compaq pp2101x Akku,
    http://www.batteryfast.co.uk/compaq/presario-2100.htm Compaq presario 2100 Akku,
    http://www.batteryfast.co.uk/compaq/ze4000.htm Compaq ze4000 Akku,
    http://www.batteryfast.co.uk/compaq/f4809a.htm Compaq f4809a Akku,
    http://www.batteryfast.co.uk/compaq/f4812a.htm Compaq f4812a Akku,
    http://www.batteryfast.co.uk/dell/inspiron-700m.htm Dell Inspiron 700m Akku,
    http://www.batteryfast.co.uk/dell/inspiron-710m.htm Dell Inspiron 710m Akku,
    http://www.batteryfast.co.uk/dell/latitude-x200.htm Dell Latitude X 200 Akku,
    http://www.batteryfast.co.uk/dell/8u443.htm Dell 8u443 Akku,
    http://www.batteryfast.co.uk/dell/312-0058.htm Dell 312-0058 Akku,

    Antwort

Lassen Sie eine Antwort auf Paul Galvin Antwort verwerfen

Deine Email-Adresse wird nicht veröffentlicht. erforderliche Felder sind markiert *