lvjl
路人甲
路人甲
  • 注册日期2008-02-28
  • 发帖数10
  • QQ
  • 铜币151枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2094回复:2

如何通过 ado.net关联sqlserver2000数据表?

楼主#
更多 发布于:2008-03-11 23:36
我看到好多通过ado关联外部数据表的,我现在用的开发环境是.net2005,用C#开发,用ado.net连接的数据库,不知道再怎么关联数据表了,请高手指点!在这先谢了<img src="images/post/smile/dvbbs/em12.gif" />
喜欢0 评分0
snoopyxp
路人甲
路人甲
  • 注册日期2004-08-11
  • 发帖数31
  • QQ
  • 铜币225枚
  • 威望0点
  • 贡献值0点
  • 银元0个
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>
举报 回复(0) 喜欢(0)     评分
snoopyxp
路人甲
路人甲
  • 注册日期2004-08-11
  • 发帖数31
  • QQ
  • 铜币225枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2008-05-13 10:33
<P>晕倒,发错愕,原来是MO,我以为是AE</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部