Имя: Пароль:
1C
 
ADODB. Как получить выборку из многострочного запроса?
0 DTX 4th
 
03.10.17
18:12
Т.е. есть запрос вида
CREATE TABLE #temp (...)
INSERT INTO #table EXEC MySuperProc
SELECT * FROM #temp
DROP TABLE #temp


Пытаюсь так:
    RS = Новый COMОбъект("ADODB.Recordset");
    
    RS.Open(ТекстЗапроса, Соединение);

    Пока RS.EOF() = 0 Цикл
        Стр = ТЗ.Добавить();


Получаю ошибку:
Ошибка при вызове метода контекста (EOF)
        Пока RS.EOF() = 0 Цикл
по причине:
Произошла исключительная ситуация (ADODB.Recordset): Operation is not allowed when the object is closed.
1 Филиал-msk
 
03.10.17
18:41
Вот уже даже Ливингстар тетрадку себе завел и свои решения туда записывает. Но же мы гордые, мы крутые, мы в поиск не хотим, мы хотим здесь и сейчас.

Ты уже спрашивал это вопрос и получал ответ. Примерно 12 мая этого года.
2 DTX 4th
 
03.10.17
18:52
(1) Свои решения храню в OneNote, очень удобно.
(2) 12 мая был другой вопрос. Там INSERT возвращал количество строки, и меня спасло SET NOCOUNT ON. Просто способа как выполнить пакетный запрос с выборками я так и не нашёл.
3 Филиал-msk
 
03.10.17
18:54
(2) А тут у тебя INSERT возвращает температуру на Марсе в зависимости от периода запроса. Ок.
4 DTX 4th
 
03.10.17
19:20
(3) Ок, не додумал (CREATE и DROP мешали), спасибо.
Осталось узнать, есть ли простой способ запилить два разных селекта в одном запросе.
5 Филиал-msk
 
03.10.17
19:22
(4) В смысле "получить в результате две выборки"?
6 DTX 4th
 
03.10.17
19:27
(5) Как ВыполнитьПакет() в 1С.
Запрос = `
SELECT * FROM t1;
SELECT * FROM t2;
SELECT 123;
`;
7 Филиал-msk
 
03.10.17
19:38
(6) Вообще говоря, зависит от провайдера ADO. Возможно он такой возможности не предоставляет вовсе.
У традиционного MSSQL, например, там может быть мешанина из закрытых наборов (которые как раз описывают соответствуют возвращаемое число строк, которые ты убрал SET NOCOUNT ON) и данных.

Для получения последовательных выборок используется NextRecordset()
https://docs.microsoft.com/ru-ru/sql/ado/reference/ado-api/nextrecordset-method-ado
8 mehfk
 
03.10.17
19:39
9 DTX 4th
 
03.10.17
19:41
Оно, спасибо!
10 Филиал-msk
 
03.10.17
19:43
(9) Положи спасибо в OneNote (:
Программист всегда исправляет последнюю ошибку.