В MS-Access 2019 я бы хотел получить количество номеров с 3 гостями из tblLink
, например:
Dim rs As ADODB.Recordset, sSQL As String
sSQL = "SELECT Count(id) FROM tblLink WHERE bID=1 "
sSQL = sSQL & "GROUP BY rID HAVING Count(id)=3"
Set rs = New ADODB.Recordset
With rs
Set .ActiveConnection = conn ' globally defined
.CursorLocation = adUseClient
.LockType = adLockReadOnly
.Source = sSQL
.Open <---- Runtime Error
End With
... в результате
Ошибка выполнения 3265: элемент не найден в этой коллекции
Когда я вставляю SQL в запрос, я получаю желаемые результаты. Я пытался выделить ошибку, убрав SQL, но безуспешно. Я предполагаю, что это COUNT
вызывает проблемы.
Как я могу сделать эту работу в VBA с ADODB.Recordset
?
Редактировать
tblLink
:
id bID rID
-----------------
1 3 2
2 3 2
3 3 2
4 3 5
5 3 5
6 2 8
bID
: идентификатор бронирования, rID
: идентификатор номера
бронирование 3
имеет 2 комнаты, номер 2
занимают 3 человека, комната 5
2 человека.
Редактировать
tblLink
связано с tblRoom
и tblBooking
...
tblRoom tblBooking
id name type etc. id start end status
long string string long date date integer
---------------------- ---------------------------------
2 A4 3B 3 1/28/2020 1/30/2020 1
5 B1 2B 2 1/24/2020 1/28/2020 1
8 B4 1B
tblRoom.id ---- tblLink.rID
tblLink.bID ---- tblBooking.id
Редактировать
conn
определен в глобальном модуле и работает нормально:
Dim m_conn As ADODB.Connection
Public Function conn() As ADODB.Connection
If m_conn Is Nothing Then Set m_conn = CurrentProject.AccessConnection
Set conn = m_conn
End Function