串連表:
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();
}