Замена строк кода в процедуре...

ratboy
Дата: 26.02.2008 21:31:33
У меня есть таблица. Поля: Поле1, Поле2, Поле3, Поле4.
Есть процедурка, которая проходит по записям таблицы и производит математические операции с данными в полях. Типа того:
With rst
.Edit
!Поле3 = !Поле1+!Поле2
!Поле4 = !Поле3/!Поле2
.Update
End With
Теперь у меня возникла проблемка (Проблемище!!!). Мне нужно менять формулы по которым нужно проходить по таблице. Причем формулы эти должны выбирать сами пользователи. Формулы (порядок арифметических операций) может менятся как захочет пользователь. То есть может быть и такой вариант:
!Поле2 = !Поле1*!Поле3
!Поле4 = !Поле3/!Поле1
vba][/src]Как это сделать неизвращенно? У меня мысль только менять строки в процедуре.
Если кто может помочь, помогите!!! Как реализовать мою мысль? И есть ли другие способы???[SRC
Karfaqen
Дата: 26.02.2008 21:45:22
Мне нужно менять формулы
В зависимости от чего? В какой момент? Сколько есть разных формул?
Их количество и содержание постоянно (и заранее известно)?
Или форулы будут меняться по произволу пользователя?

Вобщем, если формул несколько и заранее известны, см. например Select Case
Если юзер будет рисовать формулы САМ, то копать в сторону функции EVAL.
Student007
Дата: 26.02.2008 21:53:59
ratboy
нужно менять формулы по которым нужно проходить по таблице


Идея такая. Заведите поле, куда пользователи будут вводить свою формулу. Считывайте строку формулы и заменяйте спец обозначения полей на фактические значения. Результат вычислять функцией Eval:

Me.formula = "{pole2}+2*2"
Me.pole1 = Eval(Replace(Me.formula,"{pole2}",Me.pole2))
ratboy
Дата: 27.02.2008 00:08:10
При этом все рассчеты мне нужно делать в модуле (не в форме). Результаты рассчетов в форме выводится не должны
mds_world
Дата: 27.02.2008 00:25:30
ratboy
При этом все рассчеты мне нужно делать в модуле (не в форме). Результаты рассчетов в форме выводится не должны
Ну и что? В левой части (перед знаком равенства) вместо полей формы ставьте переменную или элемент массива. И все будет тайно.

Но медленно. Правда, если расчетов не так много, то и не заметит пользователь.
Ёжик`
Дата: 27.02.2008 01:08:58
Если пользователям нужно анализировать данные при помощи разных формул - лучше данные выгонять в специально-заточенный инструмент - эксель.

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

Если пользователям все таки нужно в аксе ковыряться - пусть запросы пишут.
Тесты этих запросов лучше хранить в табличке ИМХО. При необходимости вывод результатолв запроса на экран переписывать какой нибудь имеющийся запрос в базе, либо новый создавать.