Вход | Регистрация

1С:Предприятие ::

Метки: 

ADODB. Как получить выборку из многострочного запроса?

Я
   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.

 
  Рекламное место пустует
   Филиал-msk
 
1 - 03.10.17 - 18:41
Вот уже даже Ливингстар тетрадку себе завел и свои решения туда записывает. Но же мы гордые, мы крутые, мы в поиск не хотим, мы хотим здесь и сейчас.

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

   Филиал-msk
 
7 - 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
   mehfk
 
8 - 03.10.17 - 19:39
   DTX 4th
 
9 - 03.10.17 - 19:41
Оно, спасибо!
   Филиал-msk
 
10 - 03.10.17 - 19:43
(9) Положи спасибо в OneNote (:
 
  Рекламное место пустует


Список тем форума
  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует