Показывает, сколько записей было обновлено запросом на обновление - PullRequest
3 голосов
/ 02 декабря 2008

Можно ли получить отчет о записях, которые обновляются с помощью запроса на обновление, без использования набора записей?

Ex:

sqltext = update table employees set bonus = 0 where salary > 50000<br> DoCmd.RunSQL sqltext

После выполнения этого запроса можно ли получить имена сотрудников, для которых был выполнен этот запрос на обновление?

Ответы [ 3 ]

4 голосов
/ 05 декабря 2008

Никогда не рекомендуется использовать DoCmd.RunSQL, поскольку он генерирует приглашение (которое необходимо отключить, если оно вам не нужно), и оно завершает обновления, даже если возникают ошибки, и не сообщает о ошибки. Гораздо лучше заменить его на функцию, которая выполняет тот же SQL:

Public Function SQLRun(strSQL As String) As Boolean
On Error GoTo errHandler

  CurrentDB.Execute strSQL, dbFailOnError
  SQLRun= True

exitRoutine:
  Exit Function

errHandler:
  MsgBox err.Number & ": " & err.Description, vbExclamation, "Error in SQLRun()"
  Resume exitRoutine
End Function

Как только вы разместите это в общедоступном модуле, вы можете легко выполнить глобальный поиск и заменить на DoCmd.RunSQL, чтобы заменить его на SQLRun.

РЕДАКТИРОВАТЬ: Другая версия этой функции, которая возвращает количество затронутых записей: здесь .

2 голосов
/ 31 мая 2015

Я знаю, что это старый вопрос, но не было ответа, который бы прямо ответил на вопрос OP (я попал сюда через результаты Google Top 3, пытаясь запомнить синтаксис) Если вы используете метод Execute, вы можете получить количество затронутых записей напрямую:

sqltext = "update table employees set bonus = 0 where salary > 50000"
CurrentDb.Execute sqltext
AffectedRows = CurrentDb.RecordsAffected
'Optional Notification
   MsgBox CStr(AffectedRows) & " records were affected by this SQL statement."
1 голос
/ 02 декабря 2008

В настоящее время я не вижу способа получить информацию после выполнения запроса на обновление, если у вас нет другого отличительного поля (возможно, поля обновленной даты). Почему бы не выполнить запрос на выборку для него и не создать отчет по этим данным, ТО затем выполнить запрос на обновление, чтобы изменить значения для «бонуса».

Дайте мне знать, если это поможет! JFV

...