Гость
Форумы / [игнор отключен] [закрыт для гостей] / Как получить курсор из MS SQL / 4 сообщений из 4, страница 1 из 1
15.01.2009, 11:16
    #35758789
asphalt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить курсор из MS SQL
1C версия 7.7 файл серверная.
Есть MS SQL с которым обмениваюсь информации через ADO.
И вот потребовалось получить с MS SQL выборку.
ХП запускаю, проблем нет... а куда курсор попадает? Как с ним работать?
...
Рейтинг: 0 / 0
15.01.2009, 12:10
    #35758899
testeron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить курсор из MS SQL
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
hlcConnStr = "DRIVER={SQL Server};SERVER="+SQLServerIP+";uid="+SQLLogin+";pwd="+SQLPassword+";NETWORK=dbmssocn;LANGUAGE=Russian;"+";ADDRESS="+SQLServerIP;
           
	cnn= СоздатьОбъект("ADODB.Connection");	
	cnn.ConnectionString = hlcConnStr;  
	Попытка
		cnn.Open();      
	Исключение		                                               		
		Предупреждение("Немає зв'язку з сервером " + НазваСервера+"!");
		Возврат;
	КонецПопытки;
   
	rst = СоздатьОбъект("ADODB.Recordset");

	Попытка 		
		rst = cnn.Execute("exec [тут пишем процедуру с параметрами]");
	Исключение	
		cnn.Close();
		Предупреждение(ОписаниеОшибки());
		Возврат;
	КонецПопытки;
	
	Пока rst.EOF <> - 1  Цикл 	
	 	ТаблШапки.НоваяСтрока();                                               
	 	ТаблШапки.coden = rst.Fields("coden").Value;   
		ТаблШапки.daten = rst.Fields("daten").Value;   
		ТаблШапки.namep = rst.Fields("namep").Value;   
		ТаблШапки.suma = rst.Fields("suma").Value;		
	 	rst.MoveNext();
	КонецЦикла;
    
	rst = rst.NextRecordset;                            
	
	Пока rst.EOF <> - 1  Цикл	 	
	 	ТаблНакл.НоваяСтрока();                                               
	 	ТаблНакл.codetovar = rst.Fields("codetovar").Value;   
	 	ТаблНакл.nametovar = rst.Fields("nametovar").Value;   
	 	ТаблНакл.kol = rst.Fields("kol").Value;   
	 	ТаблНакл.cena = rst.Fields("cena").Value;   	 	
	 	rst.MoveNext();
	КонецЦикла;
	
	rst.Close(); 
	cnn.Close();
Процедура возвращает 2 таблицы с сервера!
ТаблНакл и ТаблШапки - ТаблицаЗначений
...
Рейтинг: 0 / 0
15.01.2009, 12:43
    #35758986
AiratV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить курсор из MS SQL
Попробуй так:

ADOПроцедура = Новый COMОбъект( "ADODB.Command" );
ADOРезультат = Новый COMОбъект( "ADODB.Recordset" );

ADOПроцедура.ActiveConnection = мADOСоединение;
ADOПроцедура.CommandTimeout = 5000;
ADOПроцедура.Prepared = "True";
ADOПроцедура.CommandText = "EXEC [ процедура ] ";

Попытка
ADOРезультат = ADOПроцедура.Execute();
Исключение
Сообщить( "Невожможно выполнить запрос:" + Символы.ПС + ADOПроцедура.CommandText, СтатусСообщения.Важное );
Возврат NULL;
КонецПопытки;

А потом обход ADOРезультат
...
Рейтинг: 0 / 0
15.01.2009, 14:06
    #35759225
asphalt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить курсор из MS SQL
testeron
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
   
	rst = СоздатьОбъект("ADODB.Recordset");

	Попытка 		
		rst = cnn.Execute("exec [тут пишем процедуру с параметрами]");
	Исключение	
		cnn.Close();
		Предупреждение(ОписаниеОшибки());
		Возврат;
	КонецПопытки;
	
	Пока rst.EOF <> - 1  Цикл 	
	 	ТаблШапки.НоваяСтрока();                                               
	 	ТаблШапки.coden = rst.Fields("coden").Value;   
		ТаблШапки.daten = rst.Fields("daten").Value;   
		ТаблШапки.namep = rst.Fields("namep").Value;   
		ТаблШапки.suma = rst.Fields("suma").Value;		
	 	rst.MoveNext();
	КонецЦикла;
   


Спасибо, все получилось!
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / Как получить курсор из MS SQL / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]