使用可变单元格值(表1!a2)从mysql数据库查询

nlejzf6q  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(381)

我正试图根据excel工作簿sheet1中单元格a2的值,向查询编辑器中的以下mysql查询添加一个变量值:

SELECT o.Name, o.OrganizationId

FROM Organization AS o

WHERE o.OrganizationId = Sheet1!A2

ORDER BY o.Name ASC

我尝试过使用自定义参数,但它似乎不适用于mysql查询。
我还尝试过通过vba脚本运行查询:

Sub VoucherQuery()
queryString = "SELECT Name, OrganizationId FROM [Vouchers!$A1:B1000000] 
WHERE OrganizationId=" & Worksheets("Sheet1").Range("A2").Value
End Sub

但我没能把这个和我查到的查询结合起来。
最后一次尝试让我创建一个新的工作簿并从工作簿中获取数据,我使用原始sql查询(与上面的查询相同,没有where子句)从工作簿中提取数据,并尝试添加一个条件,但我找不到任何代码可以用这种提取数据的方式进行编辑。
有人知道如何用excel中的getdata->frommysql数据库查询编辑器来实现这一点吗?

ubby3x7f

ubby3x7f1#

不确定查询编辑器,但这个宏应该适合您的情况。
只需要在评论下面填写你的连接信息 "fill these out below" 更换 schema 使用查询字符串中的实际模式

Sub SendQuery()
    Dim conn As Object
    Dim rs1 As Object
    Dim sqlstr As String
    Dim val, server_name, database_name, user_id, password As String

    Set conn = CreateObject("ADODB.Connection")
    Set rs1 = CreateObject("ADODB.Recordset")

    val = Trim(CStr(ThisWorkbook.Worksheets("Sheet1").Range("A2").Value))

    ' fill these out below
    server_name = ""
    database_name = ""
    user_id = ""
    password = ""

    ' connect to database
    conn.Open "DRIVER={MySQL ODBC 5.3 Unicode Driver}" _
        & ";SERVER=" & server_name _
        & ";DATABASE=" & database_name _
        & ";UID=" & user_id _
        & ";PWD=" & password _
        & ";OPTION=3"

    ' setup select string
    sqlstr = "SELECT o.Name, o.OrganizationId FROM schema.Organization As o WHERE o.OrganizationId = '" & val & "' ORDER BY o.Name ASC"

    ' send query
    rs1.Open sqlstr, conn, adOpenStatic

    ' copy data to sheet
    With ThisWorkbook.Worksheets("Sheet1").Cells(1, 1)
        .ClearContents
        .CopyFromRecordset rs1
    End With

    ' cleanup
    rs1.Close
    Set rs1 = Nothing
End Sub

相关问题