|
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.
Я бы посоветовал сделать обновляемый рекордсет на основе запроса 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()
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший