vb.net数据集关系中的多个表

时间:2013-03-28 19:16:08

标签: vb.net

不知道这是否可行,但...... 我有3张桌子: CustomerTable的 OrderHeaderTable OrderDetailTable

关系是CustomerTable.CustomerNumber到OrderHeaderTable.CustomerNumber, OrderHeaderTable.OrderNumber到OrderDetail.OrderNumber。

我正在使用DevExpress XtraGrid来显示信息,使用SQL存储过程来捕获数据。

我希望/需要能够在OrderHeader和OrderDetail之间形成关系以在网格中显示,但我不确定如何在我迄今使用的代码中使其工作。

这是VB代码:

    Dim bsOrders As New BindingSource
    Dim dsDataSetOrders As New DataSet
    Dim daDataAdapter As New SqlDataAdapter

    Using cmd As New SqlClient.SqlCommand("spViewOrders", GetOpenConnection) With {.CommandType = CommandType.StoredProcedure}
        With cmd.Parameters
            .Add(New SqlParameter("@Action", SqlDbType.Int)).Value = 44
            .Add(New SqlParameter("@Exists", SqlDbType.Int)).Direction = ParameterDirection.InputOutput
        End With

        daDataAdapter.SelectCommand = cmd
        daDataAdapter.Fill(dsDataSetOrders, "Orders")
        dsDataSetOrders.Relations.Add(New DataRelation("OrderHeader", dsDataSetOrders.Tables(0).Columns("Customer #"), _
                                                       dsDataSetOrders.Tables(1).Columns("Customer #")))

        bsOrders.DataSource = dsDataSetOrders
        bsOrders.DataMember = "Orders"
    End Using


    GridControl1.DataSource = bsOrders
    GridView1.BestFitColumns()

1 个答案:

答案 0 :(得分:0)

spViewOrders是否从OrderHeader和OrderDetail中提取您想要的数据?如果是这样,您只需要添加另一个关系。如果没有,请将您想要的数据拉入DataTable,将其添加到dsDataSetOrders.Tables,然后添加到Relations。