Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / При использовании group by в запросе к Sql server возвращается пустой recordset / 6 сообщений из 6, страница 1 из 1
16.02.2010, 16:57
    #36473060
avbaykov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании group by в запросе к Sql server возвращается пустой recordset
В таблице 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
16.02.2010, 17:55
    #36473241
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании group by в запросе к Sql server возвращается пустой recordset
Группировка ничем не мешает
Мешает rsSQL.RecordCount.
...
Рейтинг: 0 / 0
16.02.2010, 18:02
    #36473257
avbaykov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании group by в запросе к Sql server возвращается пустой recordset
White OwlГруппировка ничем не мешает
Мешает rsSQL.RecordCount.

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

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

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

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

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


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