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

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

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

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

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

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


2. для борьбы с ассинхронностью рекордсета
используй rs.movelast
после этого кстати rs.recordcount = количеству записей в адо рекордсете
...
Рейтинг: 0 / 0
Непонятный баг??? (rs.RecordCount становится равным 200)
    #32439320
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как насчет свойства формы MaxRecord?
...
Рейтинг: 0 / 0
Непонятный баг??? (rs.RecordCount становится равным 200)
    #32439419
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как насчет свойства формы 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
Непонятный баг??? (rs.RecordCount становится равным 200)
    #32441012
Andrew12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо. Помог совет АлексейК насчет rs.movelast
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Непонятный баг??? (rs.RecordCount становится равным 200)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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