Excel - используйте значение переменной ячейки (Sheet1! A2) в запросе к базе данных MySQL - PullRequest
0 голосов
/ 31 декабря 2018

Я пытаюсь добавить значение переменной на основе значения ячейки A2 в Sheet1 моей книги Excel в следующий запрос 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), и попытался добавить условие, но я не смог найти код для редактирования с таким способом извлечения данных.

Кто-нибудь знает, как добиться этого с помощью Get Data -> From MySQL Database Query Editor в Excel?

1 Ответ

0 голосов
/ 31 декабря 2018

Не уверен насчет редактора запросов, но этот макрос должен работать для вашей ситуации.

Нужно просто заполнить информацию о вашем соединении под комментарием "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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...