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

Форум: MS ACCESS

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

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

 
 

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

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

тема: а как узнать сколько записей в фильтре?
 
 автор: час   (18.07.2011 в 16:17)   личное сообщение
 
 


Dim RST As Recordset       ' таблица изделий
Dim db As Database
Dim ALL_PRODUCTS As Long    ' ВСЕ ИЗДЕЛИЯ заказа
Dim ACTUAL_PRODUCTS As Long ' изделия прошедшие ОТК
Set db = CurrentDb

Set RST = db.OpenRecordset("LIST_PRODUCT__DEFRAG")
If RST.RecordCount <> 0 Then
ALL_PRODUCTS = RST.RecordCount
RST.Filter = "[DATE_OTK]"
что то типа этого
ACTUAL_PRODUCTS = RST.Filter.Count

If ALL_PRODUCTS > ACTUAL_PRODUCTS Then

  Ответить  
 
 автор: snipe   (18.07.2011 в 16:45)   личное сообщение
 
 

а че другой рекордсет открыть нельзя с SQL строкой (ну т.е. фильром) и count

  Ответить  
 
 автор: Дядя Федор   (18.07.2011 в 16:47)   личное сообщение
 
 


RST.Filter = "[DATE_OTK]"



????

  Ответить  
 
 автор: час   (18.07.2011 в 16:48)   личное сообщение
 
 

можно!!!
У меня какие то глюки ваще.
Set RST = db.OpenRecordset("PRODUCTS_TBL")
If RST.RecordCount <> 0 Then

открываю таблу полную записей RST.RecordCount = 1
с фильтром тоже = 1
и без фильтра и как угодно?

  Ответить  
 
 автор: Дядя Федор   (18.07.2011 в 16:52)   личное сообщение
 
 


открываю таблу полную записей RST.RecordCount = 1


.movelast
потом уж recordcount

  Ответить  
 
 автор: час   (18.07.2011 в 16:55)   личное сообщение
 
 

А вдруг rst.Eof

  Ответить  
 
 автор: Силblч   (18.07.2011 в 16:56)   личное сообщение
 
 

єто уже как ОтчеНаш :)

if not rs.Eof then
   rs.MoveLast:rs.MoveFirst
   .....
end if

  Ответить  
 
 автор: час   (18.07.2011 в 17:01)   личное сообщение
 
 

RST.MoveLast
RST.MoveFirst
да - Наш Отчэ помог........

Но почему это только иногда такая ситуация.......
Обычно - RST.Recordcoun - lf' количество записей ез прыжков в конец и в начало, но порою как заартачится .........

  Ответить  
 
 автор: Дядя Федор   (18.07.2011 в 17:02)   личное сообщение
 
 

Это да, я тоже замечал...
Поэтому надо перестраховаться...

  Ответить  
 
 автор: Дядя Федор   (18.07.2011 в 16:59)   личное сообщение
 
 

Ну тады
If NOT Rs.EOF Or NOT Rs.BOF Then

  Ответить  
 
 автор: Силblч   (18.07.2011 в 16:48)   личное сообщение
 
 


ДыКаунт("*","LIST_PRODUCT__DEFRAG","[DATE_OTK]=CDATE('" & [Парамэтр] & "')")

  Ответить  
 
 автор: час   (18.07.2011 в 16:51)   личное сообщение
 
 

дык кыунт это выход.....
я хотел паработать с набором записей, а чёта в ступоре от Count_a

  Ответить  
 
 автор: Силblч   (18.07.2011 в 16:55)   личное сообщение
 
 

паслющий Дядю Фёдора!

  Ответить  
 
 автор: час   (18.07.2011 в 17:01)   личное сообщение
 
 

Слухаю.....
Set RST = db.OpenRecordset("PRODUCTS_TBL")
If Not RST.EOF Or Not RST.BOF Then
RST.MoveLast
RST.MoveFirst

End If
If RST.RecordCount = 0 Then
MESS""
Exit Sub
End If
RST.Filter = "[ORDER_NUMBER] =  & Me!ORDER_NUMBER"

ALL_PRODUCTS = RST.RecordCount
RST.Filter = "[DATE_OTK]"


как посчитать количество отфильтрованных записей?
Мне надо фильтрануть те у которых [DATE_OTK] = ""
У кого нет даты отк

  Ответить  
 
 автор: Дядя Федор   (18.07.2011 в 17:05)   личное сообщение
 
 

паслющий Силыча!

  Ответить  
 
 автор: час   (18.07.2011 в 17:06)   личное сообщение
 
 

Паслухал....
Он на футбол сёдня идёт.
Ладн - дэкаунт дык дэсоунт

  Ответить  
 
 автор: Дядя Федор   (18.07.2011 в 17:06)   личное сообщение
 
 

Dcount-ить надо. Чего мучаться?
Или
rst2 = db.open...("select ... where [DATA]='' ")
...
x=rst2.recordcount

  Ответить  
 
 автор: osmor   (18.07.2011 в 17:55)   личное сообщение
 
 


ALL_PRODUCTS = RST.RecordCount
RST.Filter = "[DATE_OTK]" 
set RSTFiltered = RST.OpenRecordset()
debug.print RSTFiltered.RecordCount

  Ответить  
 
 автор: час   (18.07.2011 в 20:20)   личное сообщение
 
 

Спасибо пробую......
чего то не то .....
Мне надо фильтрануть те у которых [DATE_OTK] = ""
У кого нет даты отк
как такое условие написать?
RST.Filter = "IsNull([DATE_OTK])= True"

  Ответить  
 
 автор: час   (18.07.2011 в 20:47)   личное сообщение
 
 

Я офигиваю

ALL_PRODUCTS = RST.RecordCount
RST.Filter = "[DATE_OTK]<> #01.01.01# "

' Создает динамический объект Recordset для отобранных записей.
Set RSTFiltered = RST.OpenRecordset
RSTFiltered.MoveFirst
RSTFiltered.MoveLast
ACTUAL_PRODUCTS = RSTFiltered.AbsolutePosition


AbsolutePosition - рулито вместе с MoveLast

  Ответить  
 
 автор: час   (18.07.2011 в 20:57)   личное сообщение
 
 


If RST.RecordCount = 0 Then
 MESS "Таблица заказов пуста."
 Exit Sub
End If

RST.Filter = "[ORDER_NUMBER]= '" & Me!ORDER_NUMBER & "'"

' Создаем динамический объект Recordset для отобранных записей.
Set rstFiltered = RST.OpenRecordset
rstFiltered.MoveFirst
rstFiltered.MoveLast
ALL_PRODUCTS = rstFiltered.AbsolutePosition

RST.Filter = "[DATE_OTK]<> #01.01.01# "
' Создаем динамический объект Recordset для отобранных записей.
Set rstFiltered = RST.OpenRecordset
rstFiltered.MoveFirst
rstFiltered.MoveLast
ACTUAL_PRODUCTS = rstFiltered.AbsolutePosition

If ALL_PRODUCTS <> ACTUAL_PRODUCTS Then
    MESS "В данном заказе имеются изделия не прошедшие ОТК."
    MESS "Потому изменение места хранения не представляется возможным."
..........

  Ответить  
 
 автор: Дядя Федор   (19.07.2011 в 10:11)   личное сообщение
 
 

И все же. Через рекордсет дольше. Что-то типа
NZ(DLOOKUP(...тратата..),FALSE)
даст тебе ответ намного быстрее.

  Ответить  
 
 автор: час   (19.07.2011 в 10:18)   личное сообщение
 
 


ALL_PRODUCTS = DCount("[ORDER_NUMBER]", "PRODUCTS_TBL", "[ORDER_NUMBER] = '" & STR_ORDER_NUMBER_DEFRAG & "'")
ACTUAL_PRODUCTS = DCount("[DATE_OTK]", "PRODUCTS_TBL", "[DATE_OTK]<> #01.01.01# AND [ORDER_NUMBER] = '" & STR_ORDER_NUMBER_DEFRAG & "'")

  Ответить  
 
 автор: Дядя Федор   (19.07.2011 в 10:21)   личное сообщение
 
 

ну типа да

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