【问题标题】:SharePoint: CAML query error when creating SPQuery querySharePoint:创建 SPQuery 查询时出现 CAML 查询错误
【发布时间】:2011-08-15 13:35:48
【问题描述】:

我有这个 CAML 查询

var query = new SPQuery
                                {
                                    Query = string.Format(@"<Where>
                                        <Or>
                                            <Or>
                                                <Or>
                                                    <Or>
                                                        <Contains>
                                                            <FieldRef Name='{7}' />
                                                            <Value Type='Text'>{3}</Value>
                                                        </Contains>
                                                    </Or>
                                                    <Contains>
                                                        <FieldRef Name='{6}' />
                                                        <Value Type='Text'>{2}</Value>
                                                    </Contains>
                                                </Or
                                                <Contains>
                                                    <FieldRef Name='{5}' />
                                                    <Value Type='Text'>{1}</Value>
                                                </Contains>
                                            </Or>
                                            <Contains>
                                                <FieldRef Name='{4}' />
                                                <Value Type='Text'>{0}</Value>
                                            </Contains>
                                        </Or>
                                    </Where>", "title", "adress", "zipcode", "city", "searchTitle", "searchAdress", "searchZipcode", "searchCity")
                                };

每次运行它并且我尝试使用 List.GetItems(query); 时都会引发此错误:

One or more field types are not installed properly. Go to the list settings page to delete these fields.

但是!如果我删除所有&lt;Or&gt; 标签,它可以工作并且不会抛出该错误,但我需要&lt;Or&gt; 标签来确保它获得所有命中。

我已确保所有字段引用 100% 匹配列的内部名称。

【问题讨论】:

标签: c# sharepoint caml


【解决方案1】:

您是否尝试过不使用 Contains 7/3 元素的查询?这个是imo不需要的。

您的 /Or 之一也没有右括号 &lt;Value Type='Text'&gt;{2}&lt;/Value&gt;&lt;/Contains&gt;&lt;/Or&lt;Contains&gt;,这可能会导致错误。

【讨论】:

  • 您是否尝试将 string.Format 的结果复制到剪贴板并在 U2U CAML Builder 之类的工具中运行?
  • 您是否尝试过删除所有 语句,然后一次添加一条以查看其中断的位置?
【解决方案2】:

更正您的 CAML

    var query = new SPQuery
                            {
                                Query = string.Format(@"<Where>
                                        <Or>
                                            <Or>
                                                <Or>
                                                    <Contains>
                                                        <FieldRef Name='{7}' />
                                                        <Value Type='Text'>{3}</Value>
                                                    </Contains>
                                                    <Contains>
                                                        <FieldRef Name='{6}' />
                                                        <Value Type='Text'>{2}</Value>
                                                    </Contains>
                                                </Or>
                                                <Contains>
                                                    <FieldRef Name='{5}' />
                                                    <Value Type='Text'>{1}</Value>
                                                </Contains>
                                            </Or>
                                            <Contains>
                                                <FieldRef Name='{4}' />
                                                <Value Type='Text'>{0}</Value>
                                            </Contains>
                                        </Or>
                                </Where>", "title", "adress", "zipcode", "city", "searchTitle", "searchAdress", "searchZipcode", "searchCity")
                            };

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多