如何在数据视图中获取链接的 table 详细信息?

How to get linked table details in dataview?

我有两个这样的链接 table

此处 myDataset.cat_table 已在表单加载时填写,用于其他目的,我通过以下脚本dataview 从 myDataset.prod_table 获取数据。

       Dim myDataView As New DataView
       myDataView.Table = Me.myDataSet.prod_table
             For Each myRow As DataRow In myDataView.ToTable.Rows
                        Dim myId as integer
                        Dim myCatid as integer
                        Dim myCatName as object
                        Dim myprodDetails as object
                        myId = myRow("id")
                        myCatid = myRow("catid")
                        myCatName = ?
                        myprodDetails = myRow("details")
                   Next

在Dataview 方法中,是否可以从链接的table 中获取"myCatName"?我不是在寻找单独的查询(通过左连接),因为我必须再次加载查询。我猜 "Merge table" 只适用于相同的 table,所以寻找其他可能的逻辑

您忠实的

穆鲁利马达夫

希望这两个表不仅仅是数据集,如果它们可能是来自 sql 的真实数据库表,我的建议是您可以通过 SQL 轻松操作链接表的数据询问。 P.S - 导入以下引用。

Imports System.Data.SqlClient

Private strConn As String
Private sqlConn As New SqlConnection
Private sqlcmd As New SqlCommand

    Private Sub getdatatable()
        strConn = "Data Source= Server_Name;Initial Catalog= DB_Name;User ID= User_name;Password= Password"
        sqlConn = New SqlConnection(strConn)
        sqlConn.Open()
        Dim sqlcmd As New SqlCommand("SELECT p.id, c.catname, p.products, p.details FROM cat_table c, prod_table p WHERE c.catid = p.catid", sqlConn)
        Dim myreader As SqlDataReader
        myreader = sqlcmd.ExecuteReader
        myreader.Read()
        Do While myreader.HasRows
            'datagridview.Rows.Add(myreader.Item("id").ToString, myreader.Item("catname").ToString, . . . and so on as your desire table columns that you want to show on datagridview)
            Do While myreader.Read
                'datagridview.Rows.Add(myreader.Item("id").ToString, myreader.Item("catname").ToString, . . . same coding as above Do while looping)
            Loop
            myreader.NextResult()
        Loop
    End Sub

在 Form_load 或按钮点击或任何您喜欢的情况下触发此方法。在 datagridview 中进行此类显示之前,您必须首先在 datagridview 中预定义 相应的列。希望能对大家有所帮助。

    Dim myDataView As New DataView
    myDataView.Table = Me.myDataSet.prod_table
    For Each myRow As DataRow In myDataView.ToTable.Rows
        Dim myId As Integer
        Dim myCatid As Integer
        Dim myCatName As Object
        Dim myprodDetails As Object
        myId = myRow("id")
        myCatid = myRow("catid")
        Dim myCatPosi As Integer = cat_tableBindingSource.Find("id", myCatid)
        If myCatPosi >= 0 Then
            cat_tableBindingSourceBindingSource.Position = myCatPosi
            myCatName = cat_tableBindingSourceBindingSource.Current("title").ToString
        End If
        myprodDetails = myRow("details")
    Next