|
v7: Количество записей в запросе |
☑ |
0
kupec
19.08.21
✎
09:00
|
Добрый день, есть вот такой запрос
Cmd=СоздатьОбъект("ADODB.Command");
Cmd.ActiveConnection=Соединение;
Cmd.CommandTimeOut=10;
Cmd.CommandType=1;
Cmd.Commandtext=СокрЛП("SELECT CODE FROM SC2463 WHERE (ISMARK=0 and SP2464 = ' 22I ')");
Rs.ActiveConnection=Соединение;
Rs=Cmd.Execute();
Пока Rs.EOF()=0 Цикл
Сообщить(Rs.Fields(0).Value);
Rs.MoveNext();
КонецЦикла;
Он работает, все с этим хорошо. Можно ли каким то образом перед обходом цикла узнать, сколько записей (или как там их называют) содержит результат выполнения запроса. Почему то Count не срабатывает
|
|
1
trad
19.08.21
✎
09:18
|
|
|
2
Ёпрст
гуру
19.08.21
✎
09:19
|
Нам отсюда не видно, как ты используешь count в тексте запроса, и зачем используешь ado, заместо 1cpp, например
|
|
3
kupec
19.08.21
✎
09:22
|
(2) т.е. в тексте запроса нужно задать, что мне необходимо получить количество записей? Типа как в 7.7 Счётчик?
|
|
4
kupec
19.08.21
✎
09:22
|
(1) пробовал вот так
Rs.RecordCount()
Выдает -1
|
|
5
trad
19.08.21
✎
09:27
|
(4) значит рекордсет не знает сколько записей будет выбрано.
В таком случае узнать можно только прокрутив весь рекордсет.
1) ты сам можешь это сделать прокрутив цикл два раза
2) использовать GetRows, но это вернет массив, а семерка их не умеет
|
|
6
trad
19.08.21
✎
09:28
|
правильный ответ в (2) - 1cpp
|
|
7
ДенисЧ
19.08.21
✎
09:48
|
Так в строке соединения (?) нужно указать правильный тип курсора...
|
|
8
Sserj
19.08.21
✎
09:56
|
Ну как вариант:
SELECT
CODE
, row_number() over (order by code) as [НомерТекущейСтроки]
, row nuber() over (opder by code desc) as [СтрокДоКонцаВыборки]
ROM
SC2463
WHERE (ISMARK=0 and SP2464 = ' 22I ')
order by
CODE
|
|
9
kupec
23.08.21
✎
08:42
|
(7) строка соединения
"Provider=SQLOLEDB; Server=192.168.0.100;User ID=sa;Password=пароль;Database=база;"
|
|