连接表:
Udb数据文件中同一数据源下有两个数据集。要把这两个数据集的表连接起来:
在这里用joinIte-m-
Reason:
建立连接的两个表必须在同一个数据源下,而用于建立关联关系的两个数据集表可以不在同一个数据源下。
//
按下面的代码,可以实现 市表 和省表连接起来。先是市表字段在接上省表的字段。当字段中有重复名的时候,自动改写成 表名.原字段名 加以区别。 当然如果指定显示内容可以用queryParameter的ResultField属性
/
Code:
private void Initialize()
{
WorkspaceConnectionInfo conInfo = new WorkspaceConnectionInfo(@"swmu地址");
m_workspace.Open(conInfo);
JoinItemSample(m_workspace.Datasources["名"]);
}
public void JoinItemSample(Datasource datasource)
{
DatasetVector datasetVector = datasource.Datasets["市表"] as DatasetVector;
DatasetVector datasetVector1 = datasource.Datasets["省表"] as DatasetVector;
// 构造连接信息类对象,获得用于连接的表名
JoinItem joinitem = new JoinItem();
// 设置连接信息类的属性
joinitem.ForeignTable = datasetVector1.TableName;
joinitem.JoinFilter = "省表.id=市表.id";
joinitem.JoinType = JoinType.LeftJoin;
QueryParameter para = new QueryParameter();
para.JoinItems.Add(joinitem);
Recordset recordset = datasetVector.Query(para);
string strField = "";
for (int j = 0; j < recordset.FieldCount; j++)
{
strField = strField + "," + recordset.GetFieldInfos()[j].Name;
}
MessageBox.Show(strField);
recordset.MoveFirst();
if (!recordset.IsEOF)
{
string str = "";
for (int i = 0; i < recordset.FieldCount; i++)
{
object oo = recordset.GetFieldValue(i);
if (oo != null)
{
str = str + "," + oo.ToString();
}
}
MessageBox.Show(str);
// recordset.MoveNext();
}
recordset.Dispose();
}