powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / При использовании group by в запросе к Sql server возвращается пустой recordset
6 сообщений из 6, страница 1 из 1
При использовании group by в запросе к Sql server возвращается пустой recordset
    #36473060
avbaykov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В таблице 16 строк удовлетворяющих условию where.
В поле Z.NumPack хранится 3 варианта значений.

Пытаюсь получить данные от SQL Server кодом:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    
    Dim cnSQL As ADODB.Connection
    Set cnSQL = CreateObject("ADODB.Connection")
    cnSQL.Provider = "SQLOLEDB.1"
    cnSQL.ConnectionString = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Baza;Data Source=Server"
    On Error GoTo CnErrorHandler
    cnSQL.Open
    
    Dim rsSQL As ADODB.Recordset
    Set rsSQL = CreateObject("ADODB.Recordset")
    rsSQL.CursorType = adOpenKeyset
    rsSQL.LockType = adLockOptimistic

   SQuery = "Select Z.NumPack " _
& " from ZakazDoc Z with (nolock)  " _
& " where Z.NumPack in (393042 , 393008 , 393306) group by Z.NumPack"

   rsSQL.Open SQuery, cnSQL
   MsgBox rsSQL.RecordCount
...

В итоге RecordCount = -1, а должен быть 3.
Если выполнить этот запрос в SQL Manager, то результат именно 3.

Если убрать группировку в запросе:
Код: plaintext
1.
2.
3.
   SQuery = "Select Z.NumPack " _
& " from ZakazDoc Z with (nolock)  " _
& " where Z.NumPack in (393042 , 393008 , 393306) "
то возвращает реальное количество строк (16).

Подключиться к SQL серверу через профайлер и посмотреть, что туда приходит нет возможности.
Может кто-то сталкивался с такой проблемой? Не понимаю, чем мешает группировка...
...
Рейтинг: 0 / 0
При использовании group by в запросе к Sql server возвращается пустой recordset
    #36473241
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Группировка ничем не мешает
Мешает rsSQL.RecordCount.
...
Рейтинг: 0 / 0
При использовании group by в запросе к Sql server возвращается пустой recordset
    #36473257
avbaykov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White OwlГруппировка ничем не мешает
Мешает rsSQL.RecordCount.

rsSQL.RecordCount просто показывает количество возвращенных записей. Чем он мешает?
...
Рейтинг: 0 / 0
При использовании group by в запросе к Sql server возвращается пустой recordset
    #36473299
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avbaykov, насколько я помню, если RecordCount = -1, значит, поставщик данных не может (или вообще не умеет это делать) подсчитать кол-во отобранных записей.
...
Рейтинг: 0 / 0
При использовании group by в запросе к Sql server возвращается пустой recordset
    #36473313
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avbaykovWhite OwlГруппировка ничем не мешает
Мешает rsSQL.RecordCount.

rsSQL.RecordCount просто показывает количество возвращенных записей. Чем он мешает?

А Вы значения рекордсета нарисуйте вот и увидите чем мешает
...
Рейтинг: 0 / 0
При использовании group by в запросе к Sql server возвращается пустой recordset
    #36473332
avbaykov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shamanus, vlth

Действительно, есть 3 записи, если пробежаться по рекордсету.
Код: plaintext
1.
2.
3.
4.
    While Not rsSQL.EOF
             MsgBox rsSQL.Fields( 0 )
        rsSQL.MoveNext
    Wend

Спасибо!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / При использовании group by в запросе к Sql server возвращается пустой recordset
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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