Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подчиненная форма, как посчитать число записей, отмеченных "флажком" ?
 
 автор: Grigoriu   (22.12.2009 в 11:39)   личное сообщение
 
 

Уважаемые разработчики ! Всех с Новым Годом !
Буду очень благодарен за помощь. Есть форма, содержащая подчиненную. В подчиненной форме есть поле, тип данных "логический", соответственно, часть записей отмечена "флажком". Как сосчитать именно эти записи и вывести результат в поле основной формы ? мучаюсь..

Посчитать все записи в подчиненной форме легко:
txtCount = Forms("frm_TList").Controls("frm_SubForm").Form.Recordset.RecordCount

А как сосчитать именно отмеченные "флажком" ? Спасибо.

  Ответить  
 
 автор: snipe   (22.12.2009 в 12:06)   личное сообщение
 
 

можно так
условные обозначения
ОсновнаяФорма - имя основной формы
IDОсновнойФормы - поле на основной форме
ТаблицаПодФормы - таблица или запрос являющиеся источником записей для подчиненной формы
IDПодФормы - ключевое поле счетчик в таблице или запросе
IDОснФормы - поле в таблице или запросе для связи
флажок - флажок в ТаблицаПодФормы


dim txtCount as long
txtCount =dcount("[IDПодФормы]","[ТаблицаПодФормы]","[IDОснФормы]=" & forms![ОсновнаяФорма]![IDОсновнойФормы] & " and [флажок]=True")

можно вот так
dim rs as dao.recordset
dim asd as long
dim txtCount as long
set rs=Forms("frm_TList").Controls("frm_SubForm").Form.Recordsetclone
rs.movelast
asd=rs.recordcount
rs.movefirst
txtCount =0
for i=1 to asd
if rs.fields("флажок")=true then txtCount =txtCount +1
rs.movenext
next i
set rs=nothing

  Ответить  
 
 автор: Grigoriu   (26.12.2009 в 12:51)   личное сообщение
 
 

Спасибо Вам большое ! Не прошло и трех дней, и я наладился ) Прошел с Recorset - oм, вот окончательный вариант:
Dim rs As dao.Recordset
Dim CountContract As Long

If txtCount > 0 Then

Set rs = Forms("frm_TList").Controls("frm_SubForm").Form.RecordsetClone
CountContract = 0
rs.MoveLast
rs.MoveFirst

Do Until rs.EOF
If rs(5) = True Then CountContract = CountContract + 1 ' столбец, в котором "флажки" , под№5

rs.MoveNext
Loop
rs.Close
Set rs = Nothing


Me.txtCountContract = CountContract
End If
Set rs = Nothing

End Sub

С Новым Годом, творческих успехов !

  Ответить  
 
 автор: Lukas   (26.12.2009 в 13:12)   личное сообщение
 
 


...
rs.Close
...


А зачем закрывать то?

А не проще посчитать "скопом" применив Count или функцию DCount?

  Ответить  
 
 автор: Grigoriu   (28.12.2009 в 09:35)   личное сообщение
 
 

Мне, оказалось, не проще, не удалось наладить этот вариант. Кажется, только на первый взгляд он проще

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList