Почему параметр 'expression' в DoCmd.SetParameter ожидает имя элемента управления, а не значение? - PullRequest
0 голосов
/ 15 декабря 2018

Документация для DoCmd.SetParameter гласит:

expression. SetParameter( _Name_, _Expression_ )
expression A variable that represents a DoCmd object.

Parameters
Name        Required/Optional   Data type   Description
Name        Required            Variant     The name of the parameter. The name must
                                            match the name of the parameter 
                                            expected by the BrowseTo, OpenForm, 
                                            OpenQuery, OpenReport, or RunDataMacro method.
Expression  Required            Variant     An expression that evaluates to a value to 
                                            assign to the parameter.

Но когда я пытаюсь это сделать:

DoCmd.SetParameter "sAction", "UPDATE"

Я получаю сообщение об ошибке

Run-time error '2482':

Vendor Compliance System cannot find the name 'UPDATE' you entered in the expression.

ТакЯ создал форму с именем «frmTEMP» с текстовым полем «sAction», а затем попробовал это, что сработало:

DoCmd.SetParameter "sAction", "forms!frmTEMP!sAction"

Поэтому мой вопрос: почему параметр DoCmd.SetParameter 'expression' ожидает имяконтроль, а не значение?Поскольку у меня нет удобной открытой формы, как мне вместо этого предоставить SetParameter значение?

1 Ответ

0 голосов
/ 17 декабря 2018

Июнь7 предоставил ответ, который решил мою проблему.Спасибо!

Итак, вот мой код:

Public Sub sendEvent_ValueChange(RecordID As Long, TableID As String,
ValueID As String, newVal As Variant, oldVal As Variant)
     DoCmd.SetParameter "sTable", TableID
     DoCmd.SetParameter "sField", ValueID
     DoCmd.SetParameter "sAction", "UPDATE"
     DoCmd.SetParameter "recordID", RecordID
     DoCmd.SetParameter "value_Old", oldVal
     DoCmd.SetParameter "value_New", newVal
     DoCmd.RunDataMacro "ChangeLog.AddLog" 
End Sub

Идея этого подпрограммы состоит в том, что когда пользователь изменяет несвязанный элемент управления, событие afterUpdate будет вызывать его для отправки таблицы / источникаимя, имя поля, старые и новые значения в таблице «ChangeLog».«AddLog» - это именованный макрос данных в этой таблице, который проверяет типы данных (логические, длинные, строковые и т. Д.) И помещает данные в поле правильного типа.

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

DoCmd.SetParameter "sTable", "'" & TableID & "'"
DoCmd.SetParameter "sAction", "'UPDATE'"

и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...