Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Рекордсет открывается пустой, хотя есть записи в таблице / 13 сообщений из 13, страница 1 из 1
05.01.2018, 17:12
    #39579798
IFK
IFK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекордсет открывается пустой, хотя есть записи в таблице
Уважаемый форум,

Не могу понять, почему рекордсет открывается пустым, хотя в таблице 100% есть записи:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Dim db As New ADODB.Connection, rs As New ADODB.Recordset
Dim case_range_submit As String

Set db = CurrentProject.Connection
rs.Open ("SELECT Case_from, Case_to From Case_ranges ORDER BY Case_from"), db, adOpenDynamic, adLockOptimistic
If rs.RecordCount > 0 Then
    rs.MoveFirst
    Do Until rs.EOF
        case_range_submit = rs.Fields("Case_from").Value & "-" & rs.Fields("Case_to").Value & ","
        rs.MoveNext
    Loop
    case_range_submit = Left(case_range_submit, Len(case_range_submit) - 1)
End If
rs.Close

Debug.Print case_range_submit



При пошаговом выполнении rs.RecordCount =-1, т.е. пустой рекордсет. Не могу понять, почему?
...
Рейтинг: 0 / 0
05.01.2018, 17:33
    #39579806
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекордсет открывается пустой, хотя есть записи в таблице
IFK,
А Вы справку про RecordCount читали? Там написано что значение будет верным только после перемещения на последнюю запись. Рекомендую пользоваться конструкцией:
Код: vbnet
1.
2.
3.
4.
Do Until rs.EOF
   'Ваши действия
    rs.MoveNext
Loop
...
Рейтинг: 0 / 0
05.01.2018, 17:40
    #39579807
Лапух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекордсет открывается пустой, хотя есть записи в таблице
sdku,
Знаю, читал, но уже давно делаю именно так, по чему уже не помню, но чего то по иному глючило и не получалось, теперь при создании форм беру за основу бланк формы и в ней создаю иное.
А в чём собственно проблемма, разьясните, а то я весь такой несовершенный ни как не пойму сути вопроса.
...
Рейтинг: 0 / 0
05.01.2018, 17:40
    #39579808
IFK
IFK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекордсет открывается пустой, хотя есть записи в таблице
sdkuIFK,
А Вы справку про RecordCount читали? Там написано что значение будет верным только после перемещения на последнюю запись. Рекомендую пользоваться конструкцией:
Код: vbnet
1.
2.
3.
4.
Do Until rs.EOF
   'Ваши действия
    rs.MoveNext
Loop



Я убрал проверку по RecordCount - все заработало, но остался вопрос, почему даже после принудительного rs.MoveFirst и rs.MoveLast, RecordCount все равно показывает -1?
...
Рейтинг: 0 / 0
05.01.2018, 17:44
    #39579810
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекордсет открывается пустой, хотя есть записи в таблице
вдогонку:
зачем проверять IFом-если в rs записей нет цикл не выполняется
...
Рейтинг: 0 / 0
05.01.2018, 17:44
    #39579811
Лапух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекордсет открывается пустой, хотя есть записи в таблице
IFK... но остался вопрос, почему даже после принудительного rs.MoveFirst и rs.MoveLast, RecordCount все равно показывает -1?...
Пальцем покажите в ГДЕ , а то сёдня как то не шибко соображается, да еще и хрустальный шар в ремонте.
...
Рейтинг: 0 / 0
05.01.2018, 17:46
    #39579813
Лапух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекордсет открывается пустой, хотя есть записи в таблице
Блин, это я не в ту тему случайно попал.
А то думаю, по чему я ни чего не пойму.
Если возможно, то прошу модераторов поудалять мои сообщения.
...
Рейтинг: 0 / 0
05.01.2018, 17:47
    #39579815
adOpenDynamic,
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекордсет открывается пустой, хотя есть записи в таблице
IFKЯ убрал проверку по RecordCount - все заработало, но остался вопрос, почему даже после принудительного rs.MoveFirst и rs.MoveLast, RecordCount все равно показывает -1?Задумка у разработчиков АДО была такая, что динам.курсор будет (будучи уже открытым) "дополняться" / "избавляться" от записей которые добавили / удалили в других сессиях.
А поддерживать значение к-ва записей в акктуальном значении посчитали, при таком подходе, излишним.

Выбери статик курсор, наверняка начальный код окажеться робочим.
...
Рейтинг: 0 / 0
05.01.2018, 17:49
    #39579818
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекордсет открывается пустой, хотя есть записи в таблице
а так:
Код: vbnet
1.
set rs = db.openRecordset(....)
...
Рейтинг: 0 / 0
05.01.2018, 17:51
    #39579819
IFK
IFK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекордсет открывается пустой, хотя есть записи в таблице
sdku,

Правильно, но каким образом узнать, что рекордсет пустой?
Попробовал
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Set db = CurrentProject.Connection
rs.Open ("SELECT * FROM Case_ranges ORDER BY Case_from"), db, adOpenDynamic, adLockOptimistic
If rs.EOF = False Then
    rs.MoveFirst
    Do Until rs.EOF
        case_range_submit = case_range_submit & rs.Fields("Case_from").Value & "-" & rs.Fields("Case_to").Value & ", "
        rs.MoveNext
    Loop
    case_range_submit = Left(case_range_submit, Len(case_range_submit) - 2)
End If
rs.Close



Все отработало штатно. Осадочек все равно остался: как определить размер рекордсета, если RecordCount в Access 2013 работает через ...опу? В предыдущих версиях Акссесса все было ок - всегда так делал, проблем не возникало.

Для Лапух:

Код: vbnet
1.
2.
3.
4.
5.
Set db = CurrentProject.Connection
rs.Open ("SELECT * FROM Case_ranges ORDER BY Case_from"), db, adOpenDynamic, adLockOptimistic
rs.MoveFirst
rs.Movelast
===> rs.Recordcount =-1
...
Рейтинг: 0 / 0
05.01.2018, 17:53
    #39579820
IFK
IFK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекордсет открывается пустой, хотя есть записи в таблице
sdku,

А так нет опции db.OpenRecordset, есть только db.Open
...
Рейтинг: 0 / 0
05.01.2018, 17:54
    #39579821
IFK
IFK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекордсет открывается пустой, хотя есть записи в таблице
adOpenDynamic,IFKЯ убрал проверку по RecordCount - все заработало, но остался вопрос, почему даже после принудительного rs.MoveFirst и rs.MoveLast, RecordCount все равно показывает -1?Задумка у разработчиков АДО была такая, что динам.курсор будет (будучи уже открытым) "дополняться" / "избавляться" от записей которые добавили / удалили в других сессиях.
А поддерживать значение к-ва записей в акктуальном значении посчитали, при таком подходе, излишним.

Выбери статик курсор, наверняка начальный код окажеться робочим.

Точно, сработало. :) Спасибо!
...
Рейтинг: 0 / 0
05.01.2018, 17:57
    #39579824
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекордсет открывается пустой, хотя есть записи в таблице
прошу пардону перепутал с DAO
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Рекордсет открывается пустой, хотя есть записи в таблице / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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