Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Непонятный баг??? (rs.RecordCount становится равным 200) / 17 сообщений из 17, страница 1 из 1
11.03.2004, 22:57
    #32438935
Andrew12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный баг??? (rs.RecordCount становится равным 200)
Почему, при

Set frm = Screen.ActiveForm.ActiveControl.Form
Set rs = frm.RecordsetClone

If frm.FilterOn Then
rs.Filter = Replace(frm.Filter, frm.name & ".", "", , , vbTextCompare)
rs.Filter = frm.Filter
Else
rs.Filter = ""
End If

rs.RecordCount становится равным 200???
...
Рейтинг: 0 / 0
11.03.2004, 23:00
    #32438936
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный баг??? (rs.RecordCount становится равным 200)
Наверно, в нем 200 записей. Кто думает иначе?
...
Рейтинг: 0 / 0
11.03.2004, 23:12
    #32438943
Andrew12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный баг??? (rs.RecordCount становится равным 200)
До фильтра 784 записей.
...
Рейтинг: 0 / 0
11.03.2004, 23:14
    #32438945
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный баг??? (rs.RecordCount становится равным 200)
Это нормально. После фильтра должно быть меньше.
...
Рейтинг: 0 / 0
11.03.2004, 23:29
    #32438955
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный баг??? (rs.RecordCount становится равным 200)
А почему вообще rs.Filter получает значение дважды подряд? Ведь первое затирается вторым.
...
Рейтинг: 0 / 0
11.03.2004, 23:33
    #32438957
Andrew12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный баг??? (rs.RecordCount становится равным 200)
Уважаемый Владимир Саныч. Я это прекрасно понимаю, но реально там порядка 684 записей. АФильтр получает два раза в проверочных целях.. Ведь это не важно..
...
Рейтинг: 0 / 0
11.03.2004, 23:34
    #32438958
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный баг??? (rs.RecordCount становится равным 200)
А таблица прилинкованная? Возможно, драйвер ODBC приносит данные порциями.
...
Рейтинг: 0 / 0
11.03.2004, 23:35
    #32438960
Andrew12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный баг??? (rs.RecordCount становится равным 200)
Проект adp. Access XP + MSSQL 2000.
...
Рейтинг: 0 / 0
11.03.2004, 23:37
    #32438962
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный баг??? (rs.RecordCount становится равным 200)
Тогда не знаю. Но зато наконец вопрос стал сформулирован до конца, теперь кто-нибудь сможет ответить. :^)
...
Рейтинг: 0 / 0
11.03.2004, 23:38
    #32438964
Andrew12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный баг??? (rs.RecordCount становится равным 200)
Только что было обнаружено, что в предыдущем случае все нормально, НО, когда дополнительно

If FRM.OrderByOn Then
rs.Sort = Right(FRM.OrderBy, Len(FRM.OrderBy) - InStrRev(FRM.OrderBy, "."))
Else
rs.Sort = ""
End If

Происходит обрезание до 200. Причем просто этот код не обрезает..
...
Рейтинг: 0 / 0
11.03.2004, 23:46
    #32438969
AlTis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный баг??? (rs.RecordCount становится равным 200)
У меня типичная проблема.
Только ещё немного наворотов.
Есть форма добавления клиента, которая вызыватся из формы списка клиентов. После нажатия на кнопку ОК - обновляю форму "список клиентов", и пробую перейти к новой записи. Так вот, в первый раз переходит, во второй раз не хочет. Посмотрел forms!recordsetclone.recordcount (форма "список клиентов" ) и обноружил, что это значение = 50, в третий раз = 100, в четвертый= кол-во записей в форме (то чтоо надо). Почему это происходит так и не понял.
...
Рейтинг: 0 / 0
12.03.2004, 00:02
    #32438974
Andrew12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный баг??? (rs.RecordCount становится равным 200)
Получается, что если код с OrderBy расположить снизу от фильтра, то обрезается до 200, а если сверху, то до 130. А если OrderBy или фильтр убрать фообще, тогда все правильно, а необходимо и отфильтровать и упорядочить RecordSet.

Подскажите пожалуйста в чем ерунда и как это можно исправить!!!
...
Рейтинг: 0 / 0
12.03.2004, 09:57
    #32439200
Непонятный баг??? (rs.RecordCount становится равным 200)
Попробуй поставить
....
Set rs = frm.RecordsetClone
rs.Filter = ""
If frm.FilterOn Then
.........
...
Рейтинг: 0 / 0
12.03.2004, 10:13
    #32439229
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный баг??? (rs.RecordCount становится равным 200)
1. rs.recordcount не эквивалентно количеству записей в адо рекордсете, вернее не всегда.

если хочешь количество
Код: plaintext
1.
rs.PageSize =  1 
countrecords = rs.PageCount


2. для борьбы с ассинхронностью рекордсета
используй rs.movelast
после этого кстати rs.recordcount = количеству записей в адо рекордсете
...
Рейтинг: 0 / 0
12.03.2004, 10:51
    #32439320
incold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный баг??? (rs.RecordCount становится равным 200)
А как насчет свойства формы MaxRecord?
...
Рейтинг: 0 / 0
12.03.2004, 11:18
    #32439419
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный баг??? (rs.RecordCount становится равным 200)
А как насчет свойства формы MaxRecord?

думаю что после применения фильтра это свойство уже непричем

кстати , для всех заинтересованных есть процедурка - замена клиентского фильтра формы на серверный.

вот последняя на сегодняший день версия:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Public Sub SET_ServerFilter(ByRef FRM As Form)
Echo False

Dim SF As String
SF = FRM.Filter

If SF =  "" Or FRM.FilterOn = False Then
    FRM.ServerFilter = "  "
    FRM.RecordSource = FRM.RecordSource
    Echo True
    Exit Sub
End If

SF = Replace(FRM.Filter, Chr(34 ) & Chr( 34 ), "<myfindquote> ", , , vbTextCompare)
SF = Replace(SF, Chr(34 ), "'", , , vbTextCompare)
SF = Replace(SF, "<myfindquote>", Chr(34), , , vbTextCompare)
SF = Replace(SF, " ALike ", " Like ", , , vbTextCompare)
If SF Like "* select *" Then SF = Replace(SF, FRM.Name & ".", "", , , vbTextCompare)


If Trim(FRM.ServerFilter) = "" Or IsNull(FRM.ServerFilter) Then
    FRM.ServerFilter = SF
Else
    FRM.ServerFilter = FRM.ServerFilter & " AND " & SF
End If
FRM.Filter = ""
FRM.RecordSource = FRM.RecordSource
Echo True
'Желающие убедиться могут раскоментировать ниже
'FRM.Recordset.PageSize = 1
'Debug.Print FRM.Recordset.PageCount
End Sub


вызывать ее имеет смысл по событию смены фильтра в форме

Код: plaintext
1.
2.
Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer)
    Call SET_ServerFilter(Me)
End Sub


при использовании этой процедуры фильтр автоматом применяется на рекордсет

положительный побочный эффект - работают суммовые поля в примечании формы, так как это было в MDB
...
Рейтинг: 0 / 0
14.03.2004, 01:29
    #32441012
Andrew12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятный баг??? (rs.RecordCount становится равным 200)
Всем спасибо. Помог совет АлексейК насчет rs.movelast
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Непонятный баг??? (rs.RecordCount становится равным 200) / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]