如何在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_no
、items
、date
、cust_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 编程需要哪些软件工具?