Вставка данных из рекордсета в таблицу без цикла

Кабысдох
Дата: 09.11.2009 12:22:06
Доброго всем времени суток.

Имеем: хранимая процедура с параметром на MS SQLServer 2000, MS Access 2000.
Надо вставить результат отработки процедуры в таблицу MS Access.

Строим query,
Set qd = db.QueryDefs("qry_Example")
strSQL = "EXECUTE sp_Example @Param1 = ...""
qd.SQL = strSQL

рекордсет на query:

set rst = qd.openrecordset

Очень не хочется организовывать цикл движения по рекордсету
rst.MoveFirst
While not rst.eof

rst.MoveNext
Wend

Есть ли что-то, похожее на метод для Экселя - CopyFromRecordset?
Заранее спасибо!
qwrqwr
Дата: 09.11.2009 12:28:47
После выстраивания qry_Example:
SELECT * INTO MyNewTable FROM qry_Example;
?
Возможно, предварительно потребуется сделать db.QueryDefs.Refresh
П-Л
Дата: 09.11.2009 12:28:48
Вставляйте напрямую из запроса в таблицу операторами SQL. Recordset не нужен.
ё
Дата: 09.11.2009 12:33:55
для 2000 скуля, - вроде - никак
если бы 2005, то можно было бы так

insert into TableName
exec ProcName

так что - или цикл по рекордсету
или
1. переделать процедуру в функцию и
INSERT INTO TableName
FROM dbo.MyFunct(@Param1)
2. переделать процедуру (создать новую), так что бы сразу в ней шла вставка
Кабысдох
Дата: 09.11.2009 12:39:07
П-Л
Вставляйте напрямую из запроса в таблицу операторами SQL. Recordset не нужен.


Таблицу MS Access? Запрос MS SQL - не простой селект, там много разного с циклами и временными таблицами.
Кабысдох
Дата: 09.11.2009 12:42:02
ё
для 2000 скуля, - вроде - никак
если бы 2005, то можно было бы так

insert into TableName
exec ProcName

так что - или цикл по рекордсету
или
1. переделать процедуру в функцию и
INSERT INTO TableName
FROM dbo.MyFunct(@Param1)
2. переделать процедуру (создать новую), так что бы сразу в ней шла вставка


Все верно для MS SQL. Проблема же во вставке результата отработки процедуры в локальную таблицу на Accessе.
Кабысдох
Дата: 09.11.2009 12:52:43
qwrqwr
После выстраивания qry_Example:
SELECT * INTO MyNewTable FROM qry_Example;
?
Возможно, предварительно потребуется сделать db.QueryDefs.Refresh


Вы имеете ввиду db.Execute ("SELECT * INTO MyNewTable FROM qry_Example")? Ругается что MyNewTable exists. Мол, существует она. Верно ругается - таблица создана заранее...
qwrqwr
Дата: 09.11.2009 12:57:48
Кабысдох

Вы имеете ввиду db.Execute ("SELECT * INTO MyNewTable FROM qry_Example")? Ругается что MyNewTable exists. Мол, существует она. Верно ругается - таблица создана заранее...
Ну раз таблица уже есть (о чем Вы умолчали) - попробуйте
INSERT INTO MyNewTable SELECT * FROM qry_Example;
- естественно, число и тип столбцов MyNewTable и qry_Example должны совпадать.
Кабысдох
Дата: 09.11.2009 13:06:05
qwrqwr
Кабысдох

Вы имеете ввиду db.Execute ("SELECT * INTO MyNewTable FROM qry_Example")? Ругается что MyNewTable exists. Мол, существует она. Верно ругается - таблица создана заранее...
Ну раз таблица уже есть (о чем Вы умолчали) - попробуйте
INSERT INTO MyNewTable SELECT * FROM qry_Example;
- естественно, число и тип столбцов MyNewTable и qry_Example должны совпадать.


Все пошло! Огромное спасибо!