Имя: Пароль:
1C
 
ADODB.Recordset. Как правильно выполнять пакетный запрос?
0 DTX 4th
 
12.05.17
19:03
Нужно после вставки строки получить сгенерированный id.
Запрос такой:
INSERT INTO table VALUES (123);
SELECT SCOPE_IDENTITY();


Далее пытаюсь его выполнить:
RS = Новый COMОбъект("ADODB.Recordset");
RS.Open(ТекстЗапроса, Соединение);
Если RS.EOF() = 0 Тогда
  //Тут бы получить ID
КонецЕсли;

Получаю
Произошла исключительная ситуация (ADODB.Recordset): Operation is not allowed when the object is closed.

Но если запросы выполнять по отдельности, то всё ок. Подозреваю, что ему нужно указать, что нужно читать второй запрос, а он первый пытается. Кто-нибудь сталкивался?
1 МихаилМ
 
12.05.17
19:07
прочитайте документацию по ado/


и не будете пользоваться неондертальскими INSERT INTO
и знать pk
2 NorthWind
 
12.05.17
19:16
Как-то все сложно. А почему просто не сделать обновляемый RS и не проаппендить в него запись? В дельфи это работает...
3 DTX 4th
 
12.05.17
19:19
(1) Ссылка есть  на нормальный мануал?

Так можно на второй запрос указатель поставить?
Если запрос будет вида
SELECT * FROM table1;
SELECT * FROM table2;

То после RS.open() будет возможность прочитать данные table1, а не table2.

(2) Пример есть?)
4 Неверный Параметр И
 
12.05.17
19:21
(0) Напиши в начале SET NOCOUNT ON
5 NorthWind
 
12.05.17
19:23
(3) Мануал зовется MSDN. https://msdn.microsoft.com/ru-ru/library/ms675841(v=vs.85).aspx
Я бы посоветовал сделать обновляемый рекордсет на основе запроса select * from table. Затем методом AddNew добавить туда запись и обновить методом Update. После этого просто считайте ваш первичный ключ.
6 МихаилМ
 
12.05.17
19:28
(3)
есть ссылка на "нормальную"  документацию
но только для тех ,  кто умеет пользоваться поисковыми сервисами интернет.
7 DTX 4th
 
12.05.17
19:31
(4) Помогло, спасибо!
Но ADO выучить было бы неплохо. Вот ток боюсь, что там слишком много воды/инфы.

(5) Это как НаборЗаписей получается?
И тип всю таблицу считать это нормально? Звучит странно

(6) Другого ответа я и не ждал
8 DTX 4th
 
12.05.17
19:34
(5) Не могу себе представить, как что-то можно выучить по MSDN. Искать нужный тебе объект и смотреть его методы по очереди?
9 NorthWind
 
12.05.17
19:34
(7) и тип всю таблицу считать это нормально? Звучит странно
так сделайте на основе select * from table where id is null, не считаете вообще ничего, но структуру полей получите и для обновления все подготовите.
10 NorthWind
 
12.05.17
19:35
(8) я никак не могу понять, что означает "выучить". Вы к экзамену готовитесь, что ли? Я вообще никогда ничего не учил применительно к работе. Есть понятие "сделать".
11 NorthWind
 
12.05.17
19:37
MSDN вполне нормальный справочник, ничем не хуже других
12 NorthWind
 
12.05.17
19:41
вот до кучи ветка с примером, чел то же хочет сделать что и вы: v8: ADODB RecordSet AddNew()
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.