Как получить доступ к другим полям в текущей строке в запросе из пользовательской функции VBA? - PullRequest
0 голосов
/ 27 января 2010

Я хотел бы написать несколько пользовательских функций VBA для выполнения вычислений для определенных полей в наборе запросов. Вот что у меня сейчас есть:

Public Function TVM(LEN_SEC As Double, ADT_CUR As Integer, TRK_PCT As Integer)
    TVM = LEN_SEC * ADT_CUR * TRK_PCT / 100#
End Function

Это прекрасно работает, но когда я создаю запрос, мне нужно сделать что-то вроде этого:

SELECT TVM([LEN_SEC], [ADT_CUR], [TRK_PCT]) AS TRK_VMT
FROM System;

Я бы предпочел сделать это вместо:

SELECT TVM()
FROM System;

Есть ли способ получить доступ к текущей строке, выводимой запросом из функции VBA? Примерно так:

Public Function TVM(LEN_SEC As Double, ADT_CUR As Integer, TRK_PCT As Integer)
    TVM = CurrentRow.Fields("LEN_SEC") * CurrentRow.Fields("ADT_CUR") * CurrentRow.Fields("TRK_PCT") / 100#
End Function

Эти вычисления часто используются в чувствительных ко времени пользовательских отчетах несколькими пользователями с разным уровнем квалификации и разной степенью внимания - чем проще я могу сделать для них интерфейс, тем лучше для нашей команды QA.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 27 января 2010

Нет способа сделать то, что демонстрирует ваш пример.

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

Например:

SELECT [LEN_SEC] * [ADT_CUR] * [TRK_PCT] / 100 as TVM
FROM System
0 голосов
/ 30 января 2010

Пользователи с ограниченными навыками будут лучше создавать свои отчеты из запросов, чем из таблиц. Поместите вашу функцию со всеми параметрами в запросе.

Выберите TVM из qrySystem;

Или научите их, как использовать Expression Builder в конструкторе запросов, и убедитесь, что они заменяют <> действительными именами полей.

...