|
|
|
| Все привет. С вопросом затупил. Есть свободная форма, в которой свободные поля. Как бы сделать так, что бы в одном свободном поле была формула. Типа в Поле3 должно быть =[Поле1]+[Поле2]. Понятно, что в конструкторе можно задать в свойствах данные через построитель выражений, но это не катит. Хочу в таблицу вписывать формулу для поля и при открытии типа как Rowsuorce присваивать только рекордсетом.
Вопросов бы не было, если бы Rowsuoce работал. Но раз есть свойство данные, стало быть есть и программный способ задавать формулу. Вопрос как?
Получается если при открытии назначить кодом [Поле3]=[Поле1]+[Поле2], но при этом если данные в поле 1 и 2 изменить, то не считает, в отличае, если это же самое задать в построителе выражений. Вот ведь задача. | |
|
| |
|
|
|
| сделайте запрос источником данных формы где ЗНАЧЕНИЕ=[Поле1]+[Поле2], ЗНАЧЕНИЕ - источник для Поля3 | |
|
| |
|
|
|
| Пишем функцию
public function summPole( a1 as double, a2 as double) as double
summPole=a1+a2
end function
при програмном заполнении (через рекордсет)
'dim rs as recordset
me!поле3=summPole(nz(rs.fields(0),0),nz(rs.fields(1),0))
и на событие после обновления поля1 и поля2 вешаем
if summPole(nz(me!поле1,0),nz(me!поле2,0))=0 then me!поле3=null else me!поле3=summPole(nz(me!поле1,0),nz(me!поле2,0)) | |
|
| |
|
|
|
| Спасибо. С функцией заманчиво выглядит, только идея в том, что бы одну и ту же форму открывать при разных условиях, и в одном и том же поле соответственно появлялась разная формула, в зависимости от той, что стоит в справочнике. Количество полей соответственно тоже меняется и в расчетах участвуют не только те ячейки, что в строке, но и из разных строк. Тут механизм требуется разработать. А+Б - это для простоты эксперимента. Буду как-то модернизировать идею с функцией. | |
|
| |
|
|
|
| Вопрос мог бы звучать примерно так: Как задать свойство "Данные" свободному полю в свободной форме? Rowsource не действует почему-то. | |
|
| |
|
|
|
| кажется, ControlSource
Ну и,типо, Поле.КонтролСос="=Поле1+Поле2" | |
|
| |
|