阅读:2256回复:2
如何通过 ado.net关联sqlserver2000数据表?
我看到好多通过ado关联外部数据表的,我现在用的开发环境是.net2005,用C#开发,用ado.net连接的数据库,不知道再怎么关联数据表了,请高手指点!在这先谢了<img src="images/post/smile/dvbbs/em12.gif" />
|
|
1楼#
发布于:2008-05-13 10:31
<P> Dim iConnectString As String<BR> Dim iPropertySet As New ESRI.ArcGIS.esriSystem.PropertySet<BR> Dim iTable As ESRI.ArcGIS.Geodatabase.ITable<BR> Dim iWorkspace As ESRI.ArcGIS.Geodatabase.IWorkspace<BR> Dim iWorkspaceFact As ESRI.ArcGIS.Geodatabase.IWorkspaceFactory<BR> Dim iFeatureWorkspace As ESRI.ArcGIS.Geodatabase.IFeatureWorkspace<BR> </P>
<P>iConnectString = "Provider=SQLOLEDB.1;Persist Security Info=True;Data Source=" ; TAB_Property.Server ; ";Initial Catalog=" ; TAB_Property.DataBase ; ";User ID=" ; TAB_Property.User ; ";Password=" ; TAB_Property.PassWord<BR> iPropertySet.SetProperty("CONNECTSTRING", iConnectString)<BR> iWorkspaceFact = New ESRI.ArcGIS.DataSourcesOleDB.OLEDBWorkspaceFactory<BR> iWorkspace = iWorkspaceFact.Open(iPropertySet, 0)<BR> iFeatureWorkspace = iWorkspace<BR> iTable = iFeatureWorkspace.OpenTable(TAB_Property.User ; "." ; Me.ComboBox3.SelectedItem.ToString)</P> <P> If JoinTable(FeatureLayer, Me.ComboBox2.SelectedItem.ToString, iTable, Me.ComboBox4.SelectedItem.ToString) = True Then<BR> MessageBox.Show("外部数据表关联成功!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information)<BR> Me.Close()<BR> End If<BR></P> <P> Public Function JoinTable(ByVal iLayer As ESRI.ArcGIS.Carto.IFeatureLayer, ByVal iLayerField As String, ByVal iTable As ESRI.ArcGIS.Geodatabase.ITable, ByVal iTableField As String) As Boolean</P> <P> Dim iDisplayTable As ESRI.ArcGIS.Carto.IDisplayTable<BR> Dim iFeatureClass As ESRI.ArcGIS.Geodatabase.IFeatureClass<BR> Dim iLayer_T As ESRI.ArcGIS.Geodatabase.ITable<BR> Dim iTable_T As ESRI.ArcGIS.Geodatabase.ITable<BR> Dim iMemoryRelationshipClassFactory As New ESRI.ArcGIS.Geodatabase.MemoryRelationshipClassFactory<BR> Dim iRelationshipClass As ESRI.ArcGIS.Geodatabase.IRelationshipClass<BR> Dim iDisplayRelationshipClass As ESRI.ArcGIS.Carto.IDisplayRelationshipClass</P> <P> On Error GoTo CheckErr</P> <P> iDisplayTable = iLayer<BR> iLayer_T = iDisplayTable.DisplayTable<BR> iTable_T = iTable<BR> <BR> iRelationshipClass = iMemoryRelationshipClassFactory.Open("TabletoLayer", iTable_T, iTableField, iLayer_T, iLayerField, "forward", "backward", ESRI.ArcGIS.Geodatabase.esriRelCardinality.esriRelCardinalityOneToOne)<BR> iDisplayRelationshipClass = iLayer<BR> iDisplayRelationshipClass.DisplayRelationshipClass(iRelationshipClass, ESRI.ArcGIS.Geodatabase.esriJoinType.esriLeftOuterJoin)<BR> Return True<BR> Exit Function</P> <P>CheckErr:<BR> MessageBox.Show(Err.Number ; ":" ; Err.Description, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error)<BR> Return False<BR> Exit Function<BR> End Function</P> <P><BR> </P> |
|
2楼#
发布于:2008-05-13 10:33
<P>晕倒,发错愕,原来是MO,我以为是AE</P>
|
|