Форумы HiProg.com - MS ACCESS, VBA, VB

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

ник: osmor
Вы делаете типичную ошибку...
Прежде всего нужно запомнить что форма это ТОЛЬКО ОТОБРАЖЕНИЕ данных, а сами данные находятся в ТАБЛИЦАХ. т.е Если вы хотите работать с данными, то обращайтесь к ним непосредственно, а не к их отображению в форме.

здесь у вас не увидел ничего про рекордсет
Рекодсет это виртуальное представление некого набора данных
или как сказал один очень умный человек
"Рекордсет - узкая прорезь через которую видно 1 строку таблицы, но ее можно гонять по этой таблице вверх-вниз"
И так задача получить поля из всех строка набора записей предсталенного в подчиненной форме для того что бы произвести с ними некие действия.
Набор записей в форме можно получить обратившись к свойству Recordset формы. Как было сказано выше в MDB свойство Recordset формы содержит DAO рекордсет. (нужно подключить библиотеку DAO или вместо dim rst as dao.recordset использовать
dim rst as object
)
т.е.

 'описываем переменную для рекордсета
dim rst as dao.recordset 
dim lngTemp as Long
' получаем рекордсет который содержит записи подформы
set rst = me.имяКонтролаПодФормы.form.recordset 
'проверяем наличие записей в рекордсете
if rst.recordcount <> 0 then
     'переходим к первой записи
     rst.movefirst 
     'пока не будет достигнут конец рекордсета, т.е. свойство EOF не станет истиной т.е. TRUE
      do while Not rst.eof
               ' берем значение из полей с именем "Поле1" и "Поле3" (считая что такие поля есть в
                 наборе данных. НЕ В ФОРМЕ!!!! а в источнике т.е. таблице или запросе которые 
                являются источником данных)  перемножаем их делим на 1.8 и результат сохраняем
                во временную переменную, что бы затем приплюсовать данные из следующей строки
              lngTemp = lngTemp + (rst![Поле1]*rst![Поле3]/1.8)
              'переходим к следующей записи
               rst.movenext 
       loop
         'Выводим полученный результат - сумма произведений полей "Поле1" и "Поле3"    
          деленное на 1.8 для всех полей подформы
         msgbox lngTemp
end if

Надеюсь на первых порах понятно.. но без чтения документации по DAO (и потом еще и DAO) непрожить.
Если что не понятно - спрашивайте.
ЗЫ. возможны опечатки


Ваше имя:

Пароль:

Цитировать: [quote][/quote] Код: [code][/code]
Жирный: [b][/b] Наклонный: [i][/i]
URL: [url][/url] 

Сообщение:

 Размер файла не более 50 Кбт. Большие файлы можно размещать на www.slil.ru

Прикрепить:

 

Для вставки смайлов в текст щелкните по значку.