使用Visual Basic中的数据集查询2个表

时间:2013-02-17 02:27:11

标签: sql vb.net dataset

我的视觉基础项目需要帮助。我有一个Store.accdb数据库 它有2个表,客户和订单。我希望能够在文本框中输入客户的名称(或名称的一部分),然后在单击搜索按钮时在DataGridView中显示名称。然后在单独的DataGridView上,当用户单击“显示”按钮时,我想从第一个DataGridView显示所选客户的订单。

编辑:这是2个表格的样子

Customers table = custNum,custName,custAddress,custPhone

订单表= orderNum,orderItem,custNum,price,qty

con.ConnectionString = dbProvider & dbSource

    Try
        con.Open()
        sql = "SELECT custName FROM tblCustomers WHERE custName LIKE '%" & tbSearch.Text.ToUpper & "%'"
        ds = New DataSet
        da = New OleDb.OleDbDataAdapter(sql, con)
        da.Fill(ds, "CustomerDataset")
        gridCustomers.DataSource = ds
        gridCustomers.DataMember = "CustomerDataSet"

        con.Close()


    Catch ex As Exception
        MessageBox.Show("Could not establish a connection", "Database Error")
    End Try

此代码工作正常,它填充了我的客户datagridview。每当我只输入客户名称的一部分时,我会得到多行。如果我在文本框中输入“sm”,它将显示名称中包含“sm”的所有客户。当我点击显示按钮时,如何在第二个datagridview中显示所选客户(来自1st datagridview)订单?我希望我有意义,英语不是我的第一语言所以请耐心等待。

谢谢!

3 个答案:

答案 0 :(得分:0)

你必须玩许多活动。 从datagridview选择客户时,您必须使用datagridview's selectedIndexChange事件(假设您有按钮可在datagridview中选择)
您必须在datagridview's selectedIndexChange事件

中使用相同的过程
con.ConnectionString = dbProvider & dbSource

Try
    con.Open()
    sql = "SELECT * FROM tblorders WHERE custName ='" & gridSelectedValue & "'"
    //Assuming you have custName column in order table
    ds = New DataSet
    da = New OleDb.OleDbDataAdapter(sql, con)
    da.Fill(ds, "OrderDataset")
    gridCustomers.DataSource = ds
    gridCustomers.DataMember = "OrderDataset"

    con.Close()


Catch ex As Exception
    MessageBox.Show(ex.message)
End Try

修改
如果你没有那么的custName,你应该在DataGridView的查询中有CustNum。

答案 1 :(得分:0)

第1步 - 更改有效的查询。不要只选择客户名称,而是选择客户ID或该表的主键。

步骤2 - 在显示数据时,添加一个锚标记,其中包含一个链接到显示订单的新页面的查询字符串。 html看起来像这样:

<a href="orders.aspx?customer_id=1">Fred</a>

在orders.aspx中,调用一个带回customer_id = 1的所有订单的查询。

哦,是的,顺便说一下,在将所有表单和url变量发送到数据库之前将其转换为参数。

答案 2 :(得分:0)

实际上,你只需要在两个表之间定义一个“外键”,你可以看到这篇文章知道如何:

www.codeproject.com/Articles/28273/Xml-Database-Demo

阅读“添加DataTable关系”部分。

如果您使用Access创建了数据库,则必须执行相同的操作。如果你正在使用SQL,那就是同样的事情。