<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBS: ADODB MSSQL Получение ответа сервера БД]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=7015</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7015&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBS: ADODB MSSQL Получение ответа сервера БД».]]></description>
		<lastBuildDate>Sun, 01 Apr 2012 03:11:15 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBS: ADODB MSSQL Получение ответа сервера БД]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58672#p58672</link>
			<description><![CDATA[<div class="quotebox"><cite>oshliaer пишет:</cite><blockquote><p>На код взглянуть можно?</p></blockquote></div><p>Тот же самый код внутри HTA приложения. <br />Я понял уже, как надо делать с TRUNCATE, вы правы, там ответа как такого нет.<br />Были сомнения по поводу DBCC SRINKDATABASE, но оказалось, что у эта функция возвращает набор записей.</p><p>Меня немного смутило, что выполнение скрипта при помощи OSQL.EXE всегда выдает строку с результатом.</p>]]></description>
			<author><![CDATA[null@example.com (Mat Skywalker)]]></author>
			<pubDate>Sun, 01 Apr 2012 03:11:15 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58672#p58672</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: ADODB MSSQL Получение ответа сервера БД]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58660#p58660</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (oshliaer)]]></author>
			<pubDate>Sat, 31 Mar 2012 14:01:40 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58660#p58660</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: ADODB MSSQL Получение ответа сервера БД]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58647#p58647</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (BeS Yara)]]></author>
			<pubDate>Sat, 31 Mar 2012 09:35:02 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58647#p58647</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: ADODB MSSQL Получение ответа сервера БД]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58642#p58642</link>
			<description><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>Пробовали использовать?</p></blockquote></div><p>Да. Событие ExecuteComplete не наступает.</p>]]></description>
			<author><![CDATA[null@example.com (Mat Skywalker)]]></author>
			<pubDate>Sat, 31 Mar 2012 03:04:16 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58642#p58642</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: ADODB MSSQL Получение ответа сервера БД]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58621#p58621</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (oshliaer)]]></author>
			<pubDate>Fri, 30 Mar 2012 20:02:23 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58621#p58621</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: ADODB MSSQL Получение ответа сервера БД]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58602#p58602</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Пробовали использовать?</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Fri, 30 Mar 2012 13:35:37 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58602#p58602</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: ADODB MSSQL Получение ответа сервера БД]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58592#p58592</link>
			<description><![CDATA[<p>Провайдер MSSQL<br />Это событие, как я понял, тоже возвращает количество обработанных строк.</p>]]></description>
			<author><![CDATA[null@example.com (Mat Skywalker)]]></author>
			<pubDate>Fri, 30 Mar 2012 09:30:04 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58592#p58592</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: ADODB MSSQL Получение ответа сервера БД]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58530#p58530</link>
			<description><![CDATA[<p>Событие <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms676183(v=vs.85).aspx">ExecuteComplete</a> поддерживается провайдером? Пробовали использовать?</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Thu, 29 Mar 2012 02:21:15 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58530#p58530</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: ADODB MSSQL Получение ответа сервера БД]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58527#p58527</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Mat Skywalker)]]></author>
			<pubDate>Thu, 29 Mar 2012 00:08:49 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58527#p58527</guid>
		</item>
		<item>
			<title><![CDATA[VBS: ADODB MSSQL Получение ответа сервера БД]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58465#p58465</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Mat Skywalker)]]></author>
			<pubDate>Tue, 27 Mar 2012 14:55:15 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58465#p58465</guid>
		</item>
	</channel>
</rss>
