Размещение переменного числа переменных в полях таблицы - PullRequest
2 голосов
/ 09 марта 2010

Я пытаюсь создать универсальную функцию notInList, которая вызывается, когда пользователь вводит значение в выпадающий список, который не является частью списка. В середине этой функции я хочу вставить новые значения в таблицу.

Для некоторых комбинированных полей в таблице должно быть заполнено более одного поля. (Пользователю задают дополнительный вопрос о значении, отсутствующем в списке, и ответ на этот вопрос также должен быть помещен в таблицу). Значения, которые должны быть вставлены в таблицу, хранятся в переменных в коде.

То, как я до сих пор имел дело с этим, - это таблица, в которой есть одна запись для каждого идентификатора поля со списком, имени поля и имени переменной (имя переменной, содержащей значение, которое будет вставлено в поле). сочетание. Код перебирает все записи, относящиеся к этому комбинированному списку, и создает один список имен полей и один список имен переменных, которые будут использоваться в операторе SQL (Insert ... values ​​...).

Однако я не могу понять, как использовать имя переменной (полученной из таблицы), чтобы получить значение, хранящееся в переменной. AddVar - это столбец в наборе записей, который содержит имя переменной, значение которой я пытаюсь получить. Я пробовал eval (rs! AddVar), но это не работает.

Я могу получить имя переменной из таблицы, но я застрял. Как я могу получить значение (строку), хранящуюся в этой переменной?

Ответы [ 2 ]

1 голос
/ 09 марта 2010

Вас может заинтересовать функция Dlookup (). По сути, вы просто передаете ему имя поля, имя таблицы и некоторые необязательные критерии, и это даст вам первый найденный результат.

Рассмотрим пример:

=DLookUp("[LastName]", "Employees", "[EmployeeID] = 7")

Это войдет в таблицу «Сотрудники», найдет первую запись, где «[EmployeeID] = 7» и вернет вам [LastName]. Надеюсь, это поможет.

http://support.microsoft.com/kb/208786

1 голос
/ 09 марта 2010

"AddVar - это столбец в наборе записей, содержащий имя переменной, для которой я пытаюсь получить значение. Я пробовал eval (rs! AddVar), но это не работает."

Попытка:

rs.Fields(AddVar).Value

Редактировать : Извините, я не читал достаточно внимательно - я думал, что ваша проблема была ограничена получением имени переменной. Но вы хотите получить значение переменной, имя которой указывается во время выполнения. Я не знаю, как это возможно с VBA. См. Access World Forums --- "VBA не поддерживает оценку переменных во время выполнения по имени".

Рассмотрим структуру данных словаря для хранения пар ключ / значение.

Public Sub MyDict()
    Dim d As Object
    Set d = CreateObject("Scripting.Dictionary")
    d.Add "var1", 1
    d.Add "var2", 2
    Debug.Print "Value of 'var1' is " & d("var1")
    Set d = Nothing
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...