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

0

Я пытаюсь добавить значение переменной, основанное на значении ячейки 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

Но не смог объединить это с запросом, который я посмотрел.

Последняя попытка состояла в том, чтобы я создал новую книгу Workbook и Get Data from Workbook, где я извлек данные из Workbook с исходным запросом SQL (тот же запрос, что и выше, без предложения WHERE), и попытался добавить условие, но я не смог Не могу найти код для редактирования с таким способом извлечения данных.

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

  • 0
    Здравствуй. Во-первых, я не являюсь пользователем Excel (на данный момент), но немного знаком с MySQL. Если вы «жестко запрограммировали» значение листа Excel в предложении MySQL WHERE, вы получите какие-либо результаты? Может быть, если вы это сделаете, есть проблема с подключением между MySQL и Excel где-нибудь? Просто выбрасываю идеи. Извините, я не могу помочь.
  • 0
    @J2112O J2112O Извините за поздний ответ, прочитайте этот комментарий. Он отлично соединяется, когда я выполняю другие запросы, но не со значением переменной из Excel в предложении WHERE
Теги:
excel

1 ответ

0

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

Нужно просто заполнить информацию о вашем соединении под комментарием "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
  • 0
    Спасибо, у меня был только шанс попробовать это сегодня. Это дает мне следующую ошибку: Ошибка времени выполнения '-2147467259 (80004005)': [Microsoft] [ODBC Drive Manager] Не найдено имя источника данных и не указан драйвер по умолчанию

Ещё вопросы

Сообщество Overcoder
Наверх
Меню