<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; 1Cv8.0: проблемы работы с ADO]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=46&amp;type=atom" />
	<updated>2006-09-13T19:24:30Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=46</id>
		<entry>
			<title type="html"><![CDATA[Re: 1Cv8.0: проблемы работы с ADO]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=598#p598" />
			<content type="html"><![CDATA[<p>Два небольших замечания по работе с ADO + MS SQL Server, касающиеся не только 1С v8.0.</p><p>1. Если с помощью ADO выполняется не &quot;простой&quot; запрос (SELECT), а сиквельный скрипт из нескольких различных команд, что-нибудь наподобие такого:<br /></p><div class="codebox"><pre><code>CREATE TABLE #TempTable (&lt;...&gt;)
INSERT #TempTable EXEC My_Stored_Procedure
SELECT * FROM #TempTable
DROP TABLE #TempTable</code></pre></div><p>возвращаемый рекордсет может оказаться &quot;пустым&quot;. В этом случае часто помогает вставка в начало сиквельного скрипта строки:</p><div class="codebox"><pre><code>SET NOCOUNT ON</code></pre></div><p>2. Кроме того, при исполнении подобных сиквельных скриптов данные могут возвращаться во <strong>втором</strong> рекордсете, т.е. после получения данных надо использовать метод NextRecordset(). Подробнее об этом и других методах можно прочитать в статье <a href="http://www.script-coding.com/ADO.html">Использование библиотеки ADO (Microsoft ActiveX Data Object)</a>.</p>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2006-09-13T19:24:30Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=598#p598</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[1Cv8.0: проблемы работы с ADO]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=67#p67" />
			<content type="html"><![CDATA[<p>Восьмая версия 1С не совсем корректно работает с ADO. Например, следующий код правильно работать не будет:<br /></p><div class="codebox"><pre><code>Rec = Новый COMОбъект(&quot;ADODB.Recordset&quot;);
Rec.ActiveConnection = &quot;Provider=SQLOLEDB;Data Source=ServName;InitialCatalog=master;UID=sa;PWD=pass&quot;;</code></pre></div><p>Присвоения свойству &quot;ActiveConnection&quot; происходить не будет, и при этом, как ни странно, не будет никаких ошибок. В этом случае свойству рекордсета &quot;ActiveConnection&quot; можно передавать <strong>только</strong> объект Connection, и нельзя передавать строку (а в 1С 7.7 можно передавать строку). Абсолютно та же петрушка происходит со свойством рекордсета &quot;Source&quot; (нужен только объект Command, никаких строк). Можно предположить, что 1С 8.0 плохо работает со свойствами COM-объектов, допускающими присвоение разных типов. Кстати, в 1С 7.7 в момент присвоения строки свойству рекордсета &quot;ActiveConnection&quot; эта строка автоматически преобразуется в объект Connection, что видно в отладчике (тип значения - &quot;OLE._Connection&quot;). В 1С 8.0 этого не происходит.</p>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2006-07-09T08:50:04Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=67#p67</id>
		</entry>
</feed>
