![]() |
![]() |
|
Запрос к 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) Работает. Спасибо, добрый человек.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |