Sql 在Visual basic中使用dataset查询2个表

Sql 在Visual basic中使用dataset查询2个表,sql,vb.net,dataset,Sql,Vb.net,Dataset,我需要有关visual basic项目的帮助。我有一个Store.accdb数据库 其中有2张桌子、客户和订单。我希望能够在文本框中输入客户的姓名(或姓名的一部分),然后在单击搜索按钮时在DataGridView中显示姓名。然后在一个单独的DataGridView上,当用户单击display按钮时,我想从我的第一个DataGridView中显示所选客户的订单 编辑:这是两个表的外观 客户表=custNum、custName、custAddress、custPhone 订单表=订单编号、订单项、客

我需要有关visual basic项目的帮助。我有一个Store.accdb数据库 其中有2张桌子、客户和订单。我希望能够在文本框中输入客户的姓名(或姓名的一部分),然后在单击搜索按钮时在DataGridView中显示姓名。然后在一个单独的DataGridView上,当用户单击display按钮时,我想从我的第一个DataGridView中显示所选客户的订单

编辑:这是两个表的外观

客户表=custNum、custName、custAddress、custPhone

订单表=订单编号、订单项、客户编号、价格、数量

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中显示所选客户(来自第一个datagridview)的订单?我希望我说的有道理,英语不是我的第一语言,所以请耐心听我说


谢谢

你必须参加很多比赛。 从
datagridview
中选择客户时,必须使用
datagridview的selectedIndexChange
事件(假设您有按钮在
datagridview
中进行选择)
您必须在
datagridview的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-更改有效的查询。不要只选择客户名称,而是选择客户id或该表的主键

第2步-显示数据时,添加带有查询字符串的锚定标记,该查询字符串链接到显示订单的新页面。html应该如下所示:

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

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


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

实际上,您只需要在两个表之间定义一个“外键”,您可以通过本文了解如何:

阅读“添加数据表关系”部分


如果您使用Access创建了db,则必须使用相同的东西。如果您使用的是SQL,情况也是一样。

我的订单表中没有custName。这是两个表的外观:Customers表=custNum、custName、custAddress、custPhone订单表=orderNum、orderItem、custNum、price、qty