|
|
Запрос к SQL через ADO возвращает пустой Recordset |
☑ |
|
0
Sane
31.10.08
✎
12:09
|
Из 1С читаю таблицы SQL:
SQLConnection = Новый COMObject("ADODB.Connection");
SQLConnection.Open("Provider=SQLOLEDB.1;Password=PASSWORD;Persist Security Info=True;User ID=sa;Initial Catalog=DBNAME;Data Source=SERVERNAME");
Recordset = Новый COMObject("ADODB.Recordset");
Recordset.ActiveConnection = SQLConnection;
Recordset.Open(СтрокаSQL);
Проблема в том, что в Recordset есть все колонки, но нет строк.
Пробовал на разных машинах, со всеми возможными поставщиками OLE, к разным базам, к серверам SQL Server 2000 и 2005.
|
|
|
1
ДенисЧ
31.10.08
✎
12:10
|
сообщить(СтрокаSQL) ?
|
|
|
2
Sane
31.10.08
✎
12:12
|
Ну, например,
SELECT * FROM _Reference15569
(база 1С8 УПП, справочник РегистрацияВИФНС).
|
|
|
3
shuhard
31.10.08
✎
12:13
|
(0) найди отличия: MyCon = Новый COMОбъект ("ADODB.Connection"); MyCon.Open ("Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=..."); MyRst = Новый COMОбъект ("ADODB.Recordset"); MyStr = "..."; MyRst.Open (MyStr, MyCon, 2, 3);//adOpenDynamic, adLockOptimistic
|
|
|
4
Sane
31.10.08
✎
12:21
|
(3) Ну, провайдер Microsoft.Jet.OLEDB.4.0 - он для Access, а дополнительные параметры метода Open ничего не дали.
|
|
|
5
shuhard
31.10.08
✎
12:23
|
(4) код покажи
|
|
|
6
Sane
31.10.08
✎
12:26
|
SQLConnection = Новый COMObject("ADODB.Connection");
SQLConnection.Open("Provider=SQLOLEDB.1;Password=PASSWORD;Persist Security Info=True;User ID=sa;Initial Catalog=DBNAME;Data Source=SERVERNAME");
Recordset = Новый COMObject("ADODB.Recordset");
Recordset.Open(СтрокаSQL,SQLConnection,2,3);
ТЗРезультат = Новый ТаблицаЗначений;
Для н=1 По КолвоСтолбцов Цикл
ТЗРезультат.Колонки.Добавить( Recordset.Fields(н-1).Name );
КонецЦикла;
Recordset.MoveFirst();
Пока Recordset.EOF()<>0 Цикл
Стр = ТЗРезультат.Добавить();
Для н=1 По КолвоСтолбцов Цикл
Стр.Установить(н-1, Recordset.Fields(н-1).Value);
КонецЦикла;
Recordset.MoveNext();
КонецЦикла;
ТЗРезультат.ВыбратьСтроку();
|
|
|
7
ДенисЧ
31.10.08
✎
12:27
|
Пока НЕ Recordset.EOF() Цикл
|
|
|
8
ДенисЧ
31.10.08
✎
12:27
|
и без скобок
|
|
|
9
Sane
31.10.08
✎
12:27
|
(6) тьфу, 2 строки пропустил:
КолвоСтрок = Recordset.RecordCount();
КолвоСтолбцов = Recordset.Fields().Count;
ТЗРезультат = Новый ТаблицаЗначений;
|
|
|
10
Sane
31.10.08
✎
12:28
|
(8) Работает. Спасибо, добрый человек.
|
|