如何解决在另一个单元格中输入 SQL 表 ID 后,如何使用 Excel 与 MySQL 交互并在单元格中显示 SQL 查询的结果?
我想弄清楚如何使用 Excel 作为 MySQL 的交互式前端。这将是我第一次使用数据库的 VBA 体验。
我的场景是我想在一个单元格中输入一个订单号,输入完成后,我想运行一个SQL查询,比如SELECT field1,field2 FROM table WHERE order_number = ?
,然后显示{{1}的返回结果} 在一个单元格中。我可以在其他单元格中使用 field1
。
我看到 some code here 可能很有用,但我不知道在哪里输入该代码,以及在我将订单号输入到单元格中后如何使该代码起作用。我已经建立了一个 ODBC 驱动程序连接到我能够使用 Excel 数据库函数连接到数据库的位置。我还不知道如何使用 VBA 来建立数据库连接或运行交互式查询。
您能否帮助我在一个单元格中输入订单号,然后看到 field2
显示在另一个单元格中,其中 field1
将是来自 SQL 查询的值,像上面一样吗?
解决方法
将代码放在工作表上您输入订单号的位置。这使用了使用 ODBC 数据源管理器创建的 DSN。
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ar As Variant
If Target.Address = "$B$2" Then
ar = GetOrder(Target.Value)
Range("B4") = ar(0)
Range("B5") = ar(1)
End If
End Sub
Function GetOrder(OrderNo As Long) As Variant
Const CONN = "DSN=***;UID=***;PWD=***;"
Const SQL = " SELECT Field1,Field2" & _
" FROM table1 " & _
" WHERE OrderNo = ?"
Dim dbConn As ADODB.Connection,dbCmd As ADODB.Command
Dim rs As ADODB.Recordset
Dim param As ADODB.Parameter,n As Long
Set dbConn = New ADODB.Connection
dbConn.Open CONN
Set dbCmd = New ADODB.Command
With dbCmd
.ActiveConnection = dbConn
.CommandType = adCmdText
.CommandText = SQL
Set param = .CreateParameter("P1",adInteger,adParamInput,0)
.Parameters.Append param
End With
Set rs = dbCmd.Execute(n,OrderNo)
If Not rs.EOF Then
GetOrder = Array(rs(0).Value,rs(1).Value)
Else
GetOrder = Array("#N/A","#N/A")
MsgBox "Could not find " & OrderNo,vbExclamation,"Error"
End If
dbConn.Close
End Function
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。