1

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

编辑:这就是两张桌子的样子

客户表 = custNum、custName、custAddress、custPhone

订单表 = orderNum、orderItem、custNum、价格、数量

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)的订单?我希望我说得通,英语不是我的第一语言,所以请多多包涵。

谢谢!

4

3 回答 3

0

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

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

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

如果您使用 Access 制作了您的数据库,那么您必须做同样的事情。如果你使用 SQL,同样的事情。

于 2013-02-17T20:56:28.143 回答
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。

于 2013-02-17T02:41:21.490 回答
0

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

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

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

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

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

于 2013-02-17T04:48:01.877 回答