Выполнить запрос MySQL с параметром из Excel - несколько строк

330
DarrenMcGettigan

Мне удалось адаптировать эту ссылку для моего проекта, но я ищу способ дублировать несколько строк. Вот мой запрос:

SELECT data_0.InvoiceNumber,  data_0.CustomerNumber,  data_0.CustomerName,  data_0.Address,  data_0.City,  data_0.State,  data_0.Zip,  data_0.Zone,  data_0.PartNumber,  data_0.PartDescription FROM bitnami_wordpress.data data_0 WHERE (data_0.InvoiceNumber=?) 

Это invoicenumberпараметр, который заполнен=Sheet2!$A$4

В идеале я хотел бы ввести свои параметры в столбец A, а столбцы B: K заполнены данными из базы данных, есть ли способ сделать это без настройки запроса для каждой отдельной строки, почти как «Fill Down»?

0
Вашей команде должно понравиться это ,,, `" ВЫБЕРИТЕ имя ИЗ ПОЛЬЗОВАТЕЛЯ ** WHERE data.Invno = "& Worksheets (" Sheet2 "). Диапазон (" A4 "). Значение` **. Rajesh S 5 лет назад 1
* есть ли способ сделать это без настройки запроса для каждой отдельной строки * Конечно. Создайте макрос VBA как функцию Publuc, которая возвращает 2-мерный массив. Получите данные из MySQL и скопируйте их из набора записей в выходной массив. Присвойте эту функцию целевому диапазону как функцию массива. PS. Я не рекомендую определять эту функцию как изменчивую ... Akina 5 лет назад 0
@ Акина, так как я нашел твой комментарий чуть ниже моего, поэтому я подумал, что ты обращаешься ко мне, и я разместил комментарии! Если бы не было меня, то я просто удалил его. !! ☺ Rajesh S 5 лет назад 0
@ Акина, можешь немного подробнее рассказать, я очень неопытен в VBA и mySQL, спасибо! DarrenMcGettigan 5 лет назад 0

1 ответ на вопрос

0
Akina

не могли бы вы рассказать подробнее, я очень неопытен с VBA и mySQL, спасибо!

Как создать функцию массива.

Создать новую рабочую книгу. Откройте редактор VBA. Вставка - Модуль. Скопируйте код ниже:

Option Base 0  Public Function ReturnArray(Optional val As Integer = 1) As Variant() ' Application.Volatile Dim tmp() ReDim tmp(1, 1) tmp(0, 0) = val tmp(0, 1) = val + 1 tmp(1, 0) = val + 2 tmp(1, 1) = val + 3 ReturnArray = tmp End Function 

Выберите A1: B2 на рабочем листе. Вставьте приведенную ниже формулу в поле формулы:

=ReturnArray() 

или же

=ReturnArray(1) 

или же

=ReturnArray(C1) 

Завершите ввод формулы с помощью Ctrl-Enter, чтобы показать, что это формула массива. Диапазон назначения будет заполнен рассчитанными значениями.

Если вам необходимо пересчитать значения, поскольку исходное значение (ячейка C1 в последней формуле) было изменено, вы должны сделать это вручную, нажав клавишу F9.

Вы можете принудительно Application.Volatileвыполнить автоматический расчет, раскомментировав его, но вы должны помнить, что любое изменение на рабочем листе приведет к пересчету. Если ваш код подключается к внешнему серверу, это может быть очень дорого.

Связь с сервером MySQL не отличается от связи с любым другим сервером БД. Установите соответствующий коннектор MySQL, создайте соответствующий источник данных, используя его, и используйте ADODB для получения / редактирования нужных вам данных. Этот процесс хорошо документирован в MSDN.