Giải pháp: SPQuery không tìm thấy thư mục

Điều này qua tuần tôi đã thực hiện một "phát triển" Các giải pháp cho một khách hàng sử dụng BDC và SPQuery và chạy vào một số khó khăn bằng cách sử dụng SPQuery chống lại một thư viện tài liệu có chứa thư mục. Điểm mấu chốt: chỉ định "đệ quy" để xem thuộc tính của các truy vấn.

Kịch bản của tôi:

  • Ngày thứ hai, Tôi tải lên một tài liệu và cung cấp một số dữ liệu meta.
  • Tuần sau, Tôi tải lên một tài liệu mới. Phần lớn tài liệu mới này meta dữ liệu dựa trên các tài liệu tôi đã tải lên vào ngày thứ hai (mà chúng tôi gọi là "tài liệu tổng thể").
  • Chúng tôi đã tạo ra một mặt tiền dịch vụ web cung cấp một giao diện thân thiện với BDC vaøo danh saùch để người dùng có thể dễ dàng xác định vị trí tài liệu thứ hai đó thông qua một tìm kiếm tiêu đề.
  • Một cột dữ liệu BDC cung cấp một giao diện người dùng thân thiện. (Đây là một phần của nỗ lực của tôi lúc bằng cách sử dụng BDC cho một cột Lookup thân thiện hơn).

Các dịch vụ mặt tiền BDC cuối cùng sử dụng một truy vấn như thế này để làm việc tra cứu:

 // Sử dụng công cụ U2U để hỗ trợ trong việc tạo truy vấn CAML này.
      oQuery.Query =
        "<Nơi>";

      Nếu (titleFilter.Length > 0)
        oQuery.Query =
          "  <Và>";

      oQuery.Query =
        "    <Và>" +
        "      <Geq>" +
        "        <FieldRef tên =  "DocumentId" />" +
        "        <Giá trị loại =  "Text">" + minId + "</Giá trị>" +
        "      </Geq>" +
        "      <LEQ>" +
        "        <FieldRef tên =  "DocumentId" />" +
        "        <Giá trị loại =  "Text">" + maxId + "</Giá trị>" +
        "      </LEQ>" +
        "    </Và>";

      Nếu (titleFilter.Length > 0)
        oQuery.Query =
          "    <Chứa>" +
          "      <FieldRef tên =  "Title" />" +
          "      <Giá trị loại =  "Text">" + titleFilter + "</Giá trị>" +
          "    </Chứa>" +
          "  </Và>";
      oQuery.Query =
        "</Nơi>";

Trong giai đoạn ban đầu của sự phát triển, Điều này làm việc tuyệt vời. Tuy nhiên, chúng tôi giới thiệu thư mục vào thư mục để giải quyết một số vấn đề và đột nhiên, chọn BDC của tôi sẽ không trả lại bất kỳ kết quả. Tôi theo dõi điều này xuống đến một thực tế rằng SPQuery sẽ không bao giờ trở lại bất kỳ kết quả. Chúng tôi sử dụng thư mục chủ yếu để cho phép nhiều tập tin có cùng tên được tải lên, nhưng với dữ liệu meta khác nhau. Khi các tập tin được tải lên, chúng tôi tạo ra một thư mục dựa trên mục danh sách ID và sau đó di chuyển các tập tin có (Tôi đã viết về điều đó Ở đây; chúng tôi đã có kết quả hỗn hợp với cách tiếp cận này, nhưng trên toàn bộ, nó làm việc tốt). Người dùng không quan tâm về thư mục và trong thực tế, không thực sự hiểu là bất kỳ thư mục. Chúng tôi đã đặt cấu hình tất cả các quan điểm trên các thư viện để hiển thị các mục bất kể thư mục.

Tôi nhấn này vấn đề hai lần như thực hiện kỹ thuật phát triển và giải quyết nó một cách khác nhau mỗi thời gian. Lần đầu tiên, Tôi đã không sử dụng các nhà điều hành chứa trong truy vấn. Mà không có một nhà điều hành chứa, Tôi đã có thể giải quyết vấn đề bằng cách xác định quan điểm trên SPQuery của contructor. Thay vì sử dụng các nhà xây dựng mặc định:

Splist.Update() oList = trang web.Danh sách["Tài liệu"];

SPQuery oQuery = mới SPQuery();

Tôi thay vì sử dụng một nhà xây dựng đã chỉ định một lần xem:

Splist.Update() oList = trang web.Danh sách["Tài liệu"];

SPQuery oQuery = mới SPQuery(oList.Views["Tất cả tài liệu"]);

Mà giải quyết vấn đề và tôi bắt đầu để có được kết quả của tôi.

Tôi sau đó thêm các nhà điều hành chứa vào hỗn hợp và nó đã phá vỡ một lần nữa. Nó chỉ ra rằng các nhà điều hành chứa, cho đến nay như tôi có thể cho biết, không làm việc với chế độ xem theo cùng một cách như là một GEQ đơn giản / Quốc gia sử dụng LEQ. Tôi đã làm một số tìm kiếm và đã học được rằng các truy vấn ViewAttributes nên được thiết lập để "Đệ quy", như trong:

oQuery.ViewAttributes = "Phạm vi = "Recursive"";

Mà giải quyết vấn đề cho chứa. Thực tế, Điều này cũng đã giải quyết vấn đề tìm kiếm ban đầu của tôi và nếu tôi đã có lý thuyết đệ quy thuộc tính đầu tiên, Tôi sẽ không có chạy vào các vấn đề một lần nữa.

Thực tế là một SPQuery xem dựa trên hoạt động cho một số quốc gia sử dụng (GEQ/LEQ) và không phải những người khác (CHỨA), kết hợp với thực tế là tiêu chí không có vẻ làm việc ở tất cả với thư mục có chứa tài liệu thư viện dẫn tôi để tin rằng SPQuery có một số vấn đề orthogonality.

Cảm ơn đặc biệt:

  • The folks tốt tại U2U và công cụ truy vấn của họ.
  • Michael Hoffer tuyệt vời "học vừa làm" bài đăng blog, ý kiến và phản ứng.

</kết thúc>

Đăng ký vào blog của tôi!

3 Những suy nghĩ trên "Giải pháp: SPQuery không tìm thấy thư mục

  1. Không tên

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

Để lại một trả lời Paul Galvin hủy trả lời

Địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu *