Как в Eval передать параметры функции?

AlexLexus
Дата: 25.04.2002 13:17:49
Здравствуйте господа!
Помогите в решении следующего вопроса.

Не работает конструкция:

Function f(x As Long, y As long)
f=x*y
End Function

Sub primer()
Dim a As Long
Dim b As Long
Dim s As String

a=1
b=2
s="f(a,b)"

Eval(s)

End Sub

На строке Eval(s) выдает ошибку.
Может ли кто нибудь объяснить, что тут не так?
BAlex
Дата: 29.04.2002 06:29:42
А текст ошибки как звучит?
AlexLexus
Дата: 30.04.2002 05:35:53
№ ошибки: 2482
Приложению "Microsoft Access" не удается найти имя 'а' из этого выражения.
BAlex
Дата: 30.04.2002 09:14:12
С Eval() я никогда не работал. А ваша функция f значение какое возвращает?
AlexLexus
Дата: 30.04.2002 12:11:09
Ну, допустим, long. Но это не столь важно, т.к. в начальном вопросе я привел упрощенный пример.

На самом деле все довольно запутанней.

У меня есть набор функций, допустим f1(), f2(), ....., f85()
У каждой из этих функций свой набор параметров. Max кол-во параметров=7.
Тип данных значений, возвращаемый функциями разный. Допустим f(1) As Long, f(2) As Double,
f(3) As String и т.д.

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

Чтобы не рисовать Select Case из 85 Сase`ов я поступил так:

создал таблицу из 2-х полей:
1-е поле - № функции,
2-е поле - строка с самой функцией.
Например:
1 f1(x,y)
2 f2(x,y,z)
3 f3(x)
4 f4(x,y,z,a,b)
и т.д.

Затем перед вызовом функции извлекаю из этой таблицы строку, содержащую функцию, в какую нибудь переменную (например ss), и с помощью Eval(ss) делаю вызов этой функции.

Но эта зараза не хочет работать.
Вот так!
Ольга
Дата: 30.04.2002 13:12:41
Запись для строки в вашем примере должна выглядеть так
s = "f(" & Format(a) & "," & Format(b) & ")"
Проверьте, у меня работает