#sql #ms-access #vba
#sql #ms-access #vba
Вопрос:
Я застрял — я использую SQL и хочу, чтобы результаты были заполнены в списке. Я попробовал следующее:
AdvisorOverall = "SELECT TOP 5 tbl_CallLogs.Advisor, Count(tbl_CallLogs.[Date Escalated]) AS [CountOfDate Escalated]" amp; _
"FROM tbl_CallLogs" amp; _
"GROUP BY tbl_CallLogs.Advisor" amp; _
"HAVING (((tbl_CallLogs.Advisor) <> ""))" amp; _
"ORDER BY Count(tbl_CallLogs.[Date Escalated]) DESC;"
Также пробовал:
me.list3.rowsource = "SELECT TOP 5 tbl_CallLogs.Advisor, Count(tbl_CallLogs.[Date Escalated]) AS [CountOfDate Escalated]" amp; _
"FROM tbl_CallLogs" amp; _
"GROUP BY tbl_CallLogs.Advisor" amp; _
"HAVING (((tbl_CallLogs.Advisor) <> ""))" amp; _
"ORDER BY Count(tbl_CallLogs.[Date Escalated]) DESC;"
Также пробовал:
me.list3.rowsource = AdvisorOverall
Каждое из вышеперечисленных не выдает ошибок, поэтому не уверен, где я ошибаюсь
Любая помощь приветствуется.
Комментарии:
1. Создайте запрос с помощью графического интерфейса пользователя (забудьте
TOP 5
пока, все остальное выполнимо с помощью графического интерфейса пользователя). Посмотрите, какие результаты вы получите. После того, как он заработает в графическом интерфейсе, скопируйте и вставьте туда форму кода SQL и добавьтеTOP 5
2. Кроме того, есть ли причина, по которой вы пытаетесь сделать это в VBA вместо назначения
RouSource
в режиме разработки? В VBA вам нужно будет перейти кRequery
списку после настройкиRowSource
, прежде чем вы увидите какие-либо изменения.
Ответ №1:
У Мартина Грина есть несколько замечательных примеров подобных вещей.
Private Sub UserForm_Initialize()
On Error GoTo UserForm_Initialize_Err
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" amp; _
"Data Source=C:DatabasesStaffDatabase.mdb"
rst.Open "SELECT DISTINCT [Department] FROM tblStaff ORDER BY [Department];", _
cnn, adOpenStatic
rst.MoveFirst
With Me.ComboBox1
.Clear
Do
.AddItem rst![Department]
rst.MoveNext
Loop Until rst.EOF
End With
UserForm_Initialize_Exit:
On Error Resume Next
rst.Close
cnn.Close
Set rst = Nothing
Set cnn = Nothing
Exit Sub
UserForm_Initialize_Err:
MsgBox Err.Number amp; vbCrLf amp; Err.Description, vbCritical, "Error!"
Resume UserForm_Initialize_Exit
End Sub
Посмотрите его сайт здесь.