如何在Visual Basic 6.0中使用主键在一个表中使用外键获取记录

Posted

技术标签:

【中文标题】如何在Visual Basic 6.0中使用主键在一个表中使用外键获取记录【英文标题】:How to get records by using foreign key in one table using primery key another table in visual basic 6.0 【发布时间】:2019-10-04 12:26:18 【问题描述】:

我在同一个数据库中有两个表:

table1 包含order_no(primery key)cust_name table2 包含order_no(foreign key)(单次订购的每个食品也有重复条目)、table_noitemsdatecust_name 等等......

所以我的问题是如何使用 table1 的主键 order_no 在列表框和数据网格或文本框中显示记录,以便我可以获取在 table2 中分配了具有相同订单号的外键的所有记录

我正在使用 Visual Basic 6.0

【问题讨论】:

听起来像INNER JOIN,你可以在互联网上找到很多例子。 INNER JOIN 关键字选择在两个表中具有匹配值的记录 (order_no)。 【参考方案1】:

试试这样的

Private Sub mLoadData(lOrder_no As Long)
    ' add a reference to Microsoft ActiveX Data Objects 2.8 Library
    ' add a MSHFLXGD (Microsoft Hierarchical FlexGrid) control named grData to form
    Dim rc As ADODB.Recordset
    Dim db As New ADODB.Connection
    Dim sConnString As String, sSQL As String

    'sConnString = create a connection string according to your database - https://www.connectionstrings.com/
    db.Open sConnString

    sSQL = "SELECT * FROM table2 WHERE order_no =" & lOrder_no
    Set rc = db.Execute(sSQL)
    Set grData.DataSource = rc

End Sub

【讨论】:

这只是从 table2 中检索数据...我想使用primery key访问 table1 中的数据 他已经给了你所有你需要的VB6代码,你可以再进一步修改SELECT语句。 sSQL = "SELECT * FROM " & table_name & " WHERE order_no =" & lOrder_no 如果用户可以在那里输入数字,我建议使用参数化查询(尽管它看起来不是这样 - see this)。

以上是关于如何在Visual Basic 6.0中使用主键在一个表中使用外键获取记录的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Visual Basic 6.0将LPT1更改为LPT2?

我将如何防止用户进入数据库中不存在的记录(使用 Microsoft DAO 2.5/3.51 的 Visual basic 6.0)

在 ActiveX dll 项目中创建列表(对象),在 Visual Basic 6.0 中用于 c# 项目

Visual Basic 6.0/8.0/9.0 编程需要哪些软件工具?

Visual Basic 6.0 ActiveReports打印对话框打印机按钮

Visual Basic 6.0(VB6.0)详细安装过程