OpenRecordset не возвращает пригодный набор записей / .edit не работает? - PullRequest
0 голосов
/ 16 марта 2019

Работа с базой данных в Access, попытка выполнить запрос, чтобы найти запись с самой последней датой и условием «где». Возвращена ошибка «Ошибка таймера выполнения» 3027 «Невозможно обновить. База данных или объект только для чтения»

следующие условия: Кнопка нажимается на форме, которая содержит текстовое поле для «fCheckInFor». Поля базы данных 'ToolTests' «CheckOut» - это даты в формате «15.03.2009 17:35:31» «CheckIn» - это даты в формате «15.03.2009 17:35:31» CheckInFor - текстовое поле «ToolNumber» представляет собой текстовое поле

Public CheckInTool as String

Private Sub CheckIn_Click()

CheckInTool = "000"
If Me.fCheckInFor = "" Then
MsgBox "Enter Returning User."

Else
    Dim dbsUE As DAO.Database
    Dim rstUE As DAO.Recordset
    Set dbsUE = CurrentDb
    Set rstUE = dbsUE.OpenRecordset("SELECT Max([CheckOut]) FROM [ToolTests] WHERE [ToolNumber]= '" & CheckInTool & "'")

    With rstUE
    .Edit 'error occurs here
    !CheckIn = Now()
    !CheckInFor = Me.fCheckInFor
    .Update
    End With
MsgBox "Checked In"
DoCmd.Close acForm, "CheckIn"
End If

End Sub

Так что ошибка выдает в строке .Edit, я не уверен, куда идти дальше. было бы также хорошо, если бы все бросили и пошли на это с другой стороны.

1 Ответ

0 голосов
/ 16 марта 2019

Если я вас правильно понял, вы хотите обновить запись, которая имеет конкретный ToolNumber.Итак, если вы хотите использовать подзапрос, вам нужно будет либо использовать этот критерий как в основном запросе, так и в подзапросе, или связать подзапрос с основным запросом, используя это поле:

Set rstUE = dbsUE.OpenRecordset( _ &
  "SELECT CheckIn, CheckinFor FROM ToolTests WHERE" & _
  " CheckOut IN (SELECT Max(CheckOut) FROM ToolTests AS tmp WHERE ToolNumber = ToolTests.ToolNumber)" & _
  " And ToolNumber = '" & CheckInTool & "'")

В качестве альтернативы,Вы можете просто отсортировать записи в правильном порядке и обновить первый:

Set rstUE = dbsUE.OpenRecordset( _ &
  "SELECT CheckIn, CheckinFor FROM ToolTests WHERE" & _
  " ToolNumber = '" & CheckInTool & "'" & _
  " ORDER BY CheckOut DESC")
...