WSS开发,搜索(SPQuery)时出现Invalid column name c2错误 (转载)

(转载自 http://www.sharepointblogs.com/ssa/archive/2007/10/03/invalid-column-name-c2.aspx)

Invalid column name c2

SharePoint gives you this error when you try to search documents using the SPQuery object and you search by passing the document's

Name. SPQuery object uses the internal field names so it's important to pass correct internal name for the correct field to be

searched. By default, the "Name" field that is visible in the library has the internal name "LinkFilename" so when someone wants

to search a document in the library using the "Name" field, obviously he uses the "LinkFilename" to search the document but

strangely enough, it returns the following error:

"Invalid column name C2"

This error occurs in the sQL Server. SharePoint tries to search this field in the DB and returns an error when the field is not

found. I haven't checked whether this field actually exists in the DB or not but we get an error. There are two more "Name" fields

in the library. The internal names of the three "Name" fields are as following:

Name="LinkFilename" DisplayName="Name FieldType="Computed" -> default

Name="FileLeafRef" DisplayName="Name" FieldType="File"

Name="LinkFilenameNoMenu" DisplayName="Name" FieldType="Computed"

If you look at the definitions, you will notice that the FieldType of the two fields is "Computed" and for one field, it is

"File". By default, it is the first field that is shown in the library. It has the FieldType "Computed". To search the document in

the library using the "Name" field, you must use the second field that has the internal name "FileLeafRef". Although, this field

is not visible in the library by default but it will return the document in the search. It's FieldType is "File" and therefore,

you will have to pass the complete filename alongwith the extension in order for search to work and return the document. The third

"Name" field also errors out. It is not necessary to make this field visible in the library to make the search work.

Sample query:

SPQuery query = new SPQuery();
query.Query = "<Where><Eq><FieldRef Name='FileLeafRef'></FieldRef><Value Type='Text'>" + itemName + "</Value></Eq></Where>";
                           
SPListItemCollection listitems = list.GetItems(query);

"itemName" is the parameter that contains the file's name (passed from the interface or the calling function). It will be the

complete name (alongwith extension), for example, document1.doc.

 

转载于:https://www.cnblogs.com/llbofchina/archive/2008/06/03/1212838.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值