<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBS: ADODB MSSQL Получение ответа сервера БД]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7015&amp;type=atom" />
	<updated>2012-04-01T03:11:15Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=7015</id>
		<entry>
			<title type="html"><![CDATA[Re: VBS: ADODB MSSQL Получение ответа сервера БД]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58672#p58672" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>oshliaer пишет:</cite><blockquote><p>На код взглянуть можно?</p></blockquote></div><p>Тот же самый код внутри HTA приложения. <br />Я понял уже, как надо делать с TRUNCATE, вы правы, там ответа как такого нет.<br />Были сомнения по поводу DBCC SRINKDATABASE, но оказалось, что у эта функция возвращает набор записей.</p><p>Меня немного смутило, что выполнение скрипта при помощи OSQL.EXE всегда выдает строку с результатом.</p>]]></content>
			<author>
				<name><![CDATA[Mat Skywalker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26275</uri>
			</author>
			<updated>2012-04-01T03:11:15Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58672#p58672</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: ADODB MSSQL Получение ответа сервера БД]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58660#p58660" />
			<content type="html"><![CDATA[<p><strong>BeS Yara</strong>, солидарен, не могу одного понять, зачем делать проверку? Неужели случаи бывали? Одно дело пакетник или глобальное изменение контента и структуры.</p><div class="quotebox"><cite>Mat Skywalker пишет:</cite><blockquote><p>Да. Событие ExecuteComplete не наступает.</p></blockquote></div><p>На код взглянуть можно?</p><p>Вот мой<br /></p><div class="codebox"><pre><code>Test
Sub Test
	Set objConn = WScript.CreateObject(&quot;ADODB.Connection&quot;, &quot;Connection_&quot;)
	ConnectString = &quot;Provider=SQLOLEDB.1;Persist Security Info=False;User Id=sa;Password=super_pass;Initial Catalog=test;Data Source=1C&quot;
	
	objConn.Open ConnectString
	Set objRecordset = objConn.Execute(&quot;TRUNCATE TABLE tblTest&quot;)

	objConn.Close
	
	Set objConn = Nothing
	Set objRecordset = Nothing

End Sub

Function Connection_ExecuteComplete(RecordsAffected, pError, adStatus, pCommand, pRecordset, pConnection)
	MsgBox &quot;yeah&quot;
End Function</code></pre></div>]]></content>
			<author>
				<name><![CDATA[oshliaer]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27783</uri>
			</author>
			<updated>2012-03-31T14:01:40Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58660#p58660</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: ADODB MSSQL Получение ответа сервера БД]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58647#p58647" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Mat Skywalker пишет:</cite><blockquote><p>Но! Если текст запроса вида <br /></p><div class="codebox"><pre><code>TRUNCATE TABLE BAR</code></pre></div><p>То набора записей нет. А сообщение сервера есть. То есть мне надо не количество обработанных строк, а именно сообщение. Вот как его получить?</p></blockquote></div><p>Набора записей конечно нет - команда его не возвращает(т.к. очищает таблицу без подсчёта удалённых записей). Что до сообщения от сервера, то какое?!<br />&quot;The command(s) completed successfully.&quot; в QA это просто интерпритация того что команда выполнена без ошибок и не более того. В ответ на команду не возвращающую значения сервер может только сказать выполнена ли команда с ошибками или нет. Если требуется убедиться в том что команда выполена успешно, то достаточно отследить ошибки объекта MSSQLConn после выполнения MSSQLConn.Execute(Command_1) - если нет ошибок, значит &quot;The command(s) completed successfully.&quot;.<br /></p><div class="codebox"><pre><code>
strSQL = &quot;TRUNCATE TABLE BAR&quot;
On Error Resume Next
MSSQLConn.Execute(strSQL)
If MSSQLConn.Errors.Count &gt; 0 Then &#039; обработка ошибок SQL
 For Each E In MSSQLConn.Errors
  wscript.echo &quot;SQL_Error: &quot; &amp; E.Description
 Next
End If
On Error Goto 0</code></pre></div><p>Если и это не убеждает, то после &quot;TRUNCATE TABLE BAR&quot; можно сделать &quot;SELECT count(*) FROM BAR&quot; - если вернулось 0, то таблица очищена <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />.</p><p>В любом случае, обработку возможных ошибок при выполнении запроса лучше добавить. Я бы вообще выполнение запроса вынес в отдельную процедуру для каждого типового случая - селект отдельно, делет отдельно, транкейт отдельно. В дальнейшем эти процедуры легко скопипастить в другой код для повторного использования <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />.</p><p>Или я не совсем правильно понял что требуется сделать?</p>]]></content>
			<author>
				<name><![CDATA[BeS Yara]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25643</uri>
			</author>
			<updated>2012-03-31T09:35:02Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58647#p58647</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: ADODB MSSQL Получение ответа сервера БД]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58642#p58642" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>Пробовали использовать?</p></blockquote></div><p>Да. Событие ExecuteComplete не наступает.</p>]]></content>
			<author>
				<name><![CDATA[Mat Skywalker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26275</uri>
			</author>
			<updated>2012-03-31T03:04:16Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58642#p58642</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: ADODB MSSQL Получение ответа сервера БД]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58621#p58621" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Mat Skywalker пишет:</cite><blockquote><p>Это событие, как я понял, тоже возвращает количество обработанных строк.</p></blockquote></div><p><strong>Вопрос 1:</strong> и это все?<br />А что находится в <strong>pError</strong>, <strong>pCommand</strong>, <strong>pRecordset</strong>, <strong>pConnection</strong>?<br /></p><div class="codebox"><pre><code>Sub Test
   Set objConn = WScript.CreateObject(&quot;ADODB.Connection&quot;, &quot;Connection_&quot;)
   ConnectString = &quot;Provider=;&quot;
   objConn.Open ConnectString
   Set objRecordset = objConn.Execute(&quot;exec DO_IT&quot;)
      objConn.Close
   Set objConn = Nothing
   Set objRecordset = Nothing
End Sub

Function Connection_ExecuteComplete(RecordsAffected, pError, adStatus, pCommand, pRecordset, pConnection)
   &#039;перебрать RecordsAffected, pError, adStatus, pCommand, pRecordset, pConnection
End Function</code></pre></div><p><strong>Вопрос 2:</strong> а какое сообщение-то сервер отправляет? Что там находится?</p>]]></content>
			<author>
				<name><![CDATA[oshliaer]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27783</uri>
			</author>
			<updated>2012-03-30T20:02:23Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58621#p58621</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: ADODB MSSQL Получение ответа сервера БД]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58602#p58602" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Пробовали использовать?</p></blockquote></div>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-03-30T13:35:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58602#p58602</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: ADODB MSSQL Получение ответа сервера БД]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58592#p58592" />
			<content type="html"><![CDATA[<p>Провайдер MSSQL<br />Это событие, как я понял, тоже возвращает количество обработанных строк.</p>]]></content>
			<author>
				<name><![CDATA[Mat Skywalker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26275</uri>
			</author>
			<updated>2012-03-30T09:30:04Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58592#p58592</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: ADODB MSSQL Получение ответа сервера БД]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58530#p58530" />
			<content type="html"><![CDATA[<p>Событие <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms676183(v=vs.85).aspx">ExecuteComplete</a> поддерживается провайдером? Пробовали использовать?</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-03-29T02:21:15Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58530#p58530</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: ADODB MSSQL Получение ответа сервера БД]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58527#p58527" />
			<content type="html"><![CDATA[<p>Сейчас сделано так:<br /></p><div class="codebox"><pre><code>
...
		SQLConn.Execute SQLstr, rcount
		msgbox  Cstr(rcount)+ &quot; Записей обработано&quot;
...</code></pre></div><p>Но это только для DELETE FROM<br />А вот для всего остального не ясно...</p>]]></content>
			<author>
				<name><![CDATA[Mat Skywalker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26275</uri>
			</author>
			<updated>2012-03-29T00:08:49Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58527#p58527</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBS: ADODB MSSQL Получение ответа сервера БД]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58465#p58465" />
			<content type="html"><![CDATA[<p>Вопрос. Как получить от ADODB ответ сервера на выполнение например truncate table ?<br />Поясню. Выполняя запрос, результатом которого является набор данных я вижу результаты так:<br /></p><div class="codebox"><pre><code>
Command_1=&quot;select barcode from bar&quot;&#039;Текст запроса
Set Record_1 =MSSQLConn.Execute(Command_1)&#039;Выплняем запрос

While Not Record_1.EOF &#039;Перебираем результаты
    if isNull(Record_1.Fields(0).Value)  then&#039; Что нибудь с ними вытворяем
	RecSet=&quot;NULL&quot;
	Else
	RecSet=CStr(Record_1.Fields(0).Value)
	end if
Record_1.MoveNext&#039; Идем к следующей записи
wend</code></pre></div><p>Но! Если текст запроса вида <br /></p><div class="codebox"><pre><code>TRUNCATE TABLE BAR</code></pre></div><p>То набора записей нет. А сообщение сервера есть. То есть мне надо не количество обработанных строк, а именно сообщение. Вот как его получить?</p>]]></content>
			<author>
				<name><![CDATA[Mat Skywalker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26275</uri>
			</author>
			<updated>2012-03-27T14:55:15Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58465#p58465</id>
		</entry>
</feed>
