Ссылка на записи в ленточной форме

Яманаки
Дата: 23.02.2008 20:47:58
Имеется форма с подформой в ленточном виде. Как организовать ссылку на конкретные записи (поля) ленточной подчиненной формы для выполнения вычислений.
Яманаки
Дата: 23.02.2008 21:03:57
Функция DLookUP(), почему то не помогает. Пришлите простенкий пример или подскажите направление поиска.
Karfaqen
Дата: 23.02.2008 21:20:59
Через форму можно ссылаться только на данные текущей записи:
Forms![ИмяФормы]![ИмяПоля] - вернет значение указанного поля для текущей записи из формы
Forms![ИмяФормы]![Субформа].Form![ИмяПоля] - вернет значение поля для текущей записи субформы

А при помощи DLookup можно получить данные из таблицы - безотносительно форм вообще. Для этого там указывается имя поля и таблицы, а также критерий отбора записи - определяющий, из какой записи следует получить данные:
DLookup("ИмяПоля1","ИмяТаблицы","ИмяПоля2=123")
Яманаки
Дата: 23.02.2008 21:29:03
Про таблицы понятно, спасибо. Мне необходимо выполнить вычисления с 4 мя полями разных записей. Результаты вычислений должны выводится в свободные поля формы. В этом случае источником записи формы я ставлю эту таблицу, но никак. Смогли бы Вы пояснить. Спасибо.
Яманаки
Дата: 23.02.2008 21:43:28
Karfagen? уважаемый!

Не смогли бы подсказать, как справиться с задачей.
Karfaqen
Дата: 23.02.2008 21:49:49
Мне необходимо выполнить вычисления с 4 мя полями разных записей. Результаты вычислений должны выводится в свободные поля формы.
Задача решаемая. Но странная.

Во-первых, вы должны понимать, что в форме (в общем случае) записей может быть НЕ 4. Например, 1000. Следовательно, если вы хотите, использовать при вычислении именно 4 записи, вы должны иметь критерий отбора этих 4 записей из имеющихся 1000 (т.е. правило выбора нужных записей).

Во-вторых, записей может быть и меньше - например 1. Вы должны знать, что делать и в этом случае.

Если все эти варианты вами предусмотрены, и дело лишь за тем, чтобы узнать способ читать данные из разных записей в форме - то вот он.

Вы можете взять у формы копию ее набора записей - RecordsetClone, искать в нем (по вашему критерию) нужные записи, читать из найденных записей значения нужных полей, выполнять с ними вычисления и заносить результат в свободное поле формы.
Яманаки
Дата: 23.02.2008 21:50:37
Прикрепляю простенький аналог неработающей формы. Как мне выбрать для вычислений произвольные записи. Или хотябы одно поле конкретной записи. См пример.
Яманаки
Дата: 23.02.2008 21:59:29
Вообще то задача из геодезии. Для определения заданного параментра необходимо выполнить вычисления по 4 измерениям на каждой высоте. Этих высот 2 - 3 десятка. Для вычисления каждые четыре измерения я выбираю через параметрический запрос по высоте. Значение высоты для параметрического запроса задан в форме.
Таким образом, в главной форме вводится высота измерений. А в ленточной форме 4 значения угловых измерений для этой высоты. Далее программа должна вычислять параметр по имеющимся 4 значениям ленточной подформы.
Karfaqen
Дата: 23.02.2008 22:09:52
А в ленточной форме 4 значения угловых измерений для этой высоты. Далее программа должна вычислять параметр по имеющимся 4 значениям ленточной подформы
Ага, то есть все же речь не просто о 4-х "каких-то там" записях, а по сути о ВСЕХ записях, которые СЕЙЧАС есть в субформе?

Если так, а суть вычислений - это, например, суммирование значений некоторого поля для всех этих (четырех) записей, то вы можете в примечании ленточной формы сделать контрол, в котором написать в источнике =Sum(имяПоля).

Если речь идет о более нерегулярных вычислениях - например, отобранные 4 записи играют неравноправную роль в расчетах, то можно делать так как я выше предлагал - через RecordsetClone.
Яманаки
Дата: 23.02.2008 22:12:40
Спасибо. Пошел изучать RecordsetClone.