#sql #excel #vba
#sql #excel #vba
Вопрос:
Я пытался написать фрагмент кода, который позволил бы мне запрашивать базу данных SQL и использовать возвращаемые значения для заполнения выпадающего списка.
Запрос выполняется нормально, когда я прошу его вернуть значения на рабочий лист, однако я не хочу, чтобы они были там, я просто хочу сохранить их в массиве, который будет использоваться полем со списком.
Вот что у меня есть на данный момент…
Sub testQuery()
Dim varConn As String
Dim SQL As String
Dim test As String
Range("A1").CurrentRegion.ClearContents
varConn = "ODBC; DSN=Traceability DB;UID=XXX;PWD=XXX"
SQL = "Select Distinct ""Date"" from testtable"
With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Range("A1"), SQL:=SQL)
.Refresh
End With
UserForm1.Show
End Sub
Я не уверен, как заменить диапазон («A1») на массив.
Примечание: это используется в последней версии Excel для MAC.
Спасибо за помощь
Комментарии:
1. На самом деле вы мало программируете в Excel, но разве диапазон («A1») не относится к одной ячейке? Должно ли это быть что-то вроде Range («A1: E15»)?
Ответ №1:
Сохраните его в наборе записей. Что-то вроде этого:
Set rs = db.OpenRecordset("Select Distinct ""Date"" from testtable")
Для доступа к записям в наборе записей используйте GetRows
Что-то вроде этого:
data = rs.GetRows(j)
а затем перебирать данные.
Комментарии:
1. Я посмотрел онлайн и нашел несколько примеров, которые определяют db как as: Dim db как Database Моя проблема в том, что этот тип данных мне по какой-то причине недоступен, кто-нибудь знает, почему это может быть?
2. Я не эксперт по VBA, но, похоже, у вас нет соответствующей ссылки. В чем именно ошибка?
3. Ошибка: пользовательский тип не определен. Я просмотрел доступную ссылку, и у меня выбрано следующее: Excel, Forms и библиотека объектов Office. Доступные из них: OLE Automation, Solver, VBA Project, библиотека типов диаграммы 14, Microsoft Graph, библиотека объектов Powerpoint и Word, а также расширяемый Visual Basic для приложений
4. Взгляните на это: dbforums.com/microsoft-access /… и это: bytes.com/topic/access/answers / … может быть, что-нибудь решит вашу проблему