c#,sharepoint,2007,moss,spsitedataquery,跨列表查询,跨网站查询,join,联合查询
最近在研究WSS V3开发的基本知识,在联合查询,也就是跨列表查询碰到了问题,我照着列子做了,可是出不来结果,没有报错,但是结果为零。
下面是代码,大家可以帮我看一下,有什么问题,还有啊,我的MSN:jorden008@hotmail.com,欢迎大家和我交流,共同进步,共同 MOSS MVP,哈哈。
我建立了一个网站,三个列表,
签到信息:姓名,签到时间,签退时间
班次设置:班次名称,开始时间,结束时间
排班设置:姓名,班次名称
现在想联合班次列表和排版列表,根据姓名查询班次的开始、结束时间,这要是用sql,就好弄多了,
select 姓名,班次名称,开始时间,结束时间 from 班次设置 inner join 排班设置 on 班次设置.班次名称=排班设置.班次名称 where 姓名=“virus”
可是在sharepoint中,就是没有结果,下面是我的代码,谢谢大家了,如果有了结果,我也会及时更新的
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Microsoft.SharePoint;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
SPSite site = new SPSite("http://virus/sites/intranet/");
SPWeb web = site.OpenWeb("sdev");
SPSiteDataQuery siteQuery = new SPSiteDataQuery();
siteQuery.Webs = "<Webs Scope=\"SiteCollection\" />";
//siteQuery.Lists = string.Format("<Lists><List ID='{0}' /><List ID='{1}' /></Lists>",
// web.Lists["班次设置"].ID, web.Lists["排班设置"].ID);
//siteQuery.ViewFields = string.Format("<FieldRef Name='{0}' /><FieldRef Name='{1}' /><FieldRef Name='{2}' />",
// web.Lists["排班设置"].Fields["姓名"].InternalName, web.Lists["班次设置"].Fields["开始时间"].InternalName,
// web.Lists["班次设置"].Fields["结束时间"].InternalName);
//siteQuery.RowLimit = 10;
siteQuery.Query = string.Format("<Where><Eq><FieldRef Name='{0}' /><Value Type='Text'>{1}</Value></Eq></Where>",
web.Lists["排班设置"].Fields["姓名"].InternalName, "史文彬");
DataTable dt = web.GetSiteData(siteQuery);
foreach (DataRow row in dt.Rows)
{
foreach (DataColumn col in dt.Columns)
{
Console.WriteLine(col.ColumnName+":"+row[col].ToString());
}
}
Console.ReadLine();
}
}
}