<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBS + ODBC: Количество полей в запросе]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9656&amp;type=atom" />
	<updated>2014-06-02T04:11:02Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=9656</id>
		<entry>
			<title type="html"><![CDATA[Re: VBS + ODBC: Количество полей в запросе]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83581#p83581" />
			<content type="html"><![CDATA[<p>/me испытывает стыд и позор.</p><p>Написал кучу текста для оправдания поста, стёр, т.к. нет оправдания.</p><p><strong>Res.Fields.Count</strong> - то, что и требуется.<br />Спасибо всем большое.</p><p>P.s. Отдельное спасибо за RecordCount</p>]]></content>
			<author>
				<name><![CDATA[MikeSh]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24507</uri>
			</author>
			<updated>2014-06-02T04:11:02Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83581#p83581</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS + ODBC: Количество полей в запросе]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83483#p83483" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>MikeSh пишет:</cite><blockquote><div class="quotebox"><cite>omegastripes пишет:</cite><blockquote><p><strong>Res.Fields.Count</strong> возвращает количество полей (&quot;столбцов&quot;), разве не так?</p></blockquote></div><p>В том то и дело, что это возвращает количество строк, а не столбцов.</p></blockquote></div><p>Явно ошибаетесь.</p><p><strong>Res.Fields.Count</strong> - возвращает кол-во <span class="bbu">полей</span>.</p><p><strong>Res.RecordCount</strong> - возвращает кол-во полученных в результате запроса <span class="bbu">записей</span>.</p><p><strong>RecordCount</strong> может возвращать -1 в случае если курсор связи с базой данных <span class="bbu">серверный</span>. И это логично. При этом клиентская сторона не знает сколько записей вернёт запрос и обращение к следующей записи по <strong>MoveNext</strong> инициирует новый запрос к БД. В случае если курсор связи с БД клиентский, то в результате запроса все записи выгружаются на клиента и при этом RecordCount возвращает реальное кол-во полученных записей. Есть ещё условия при которых RecordCount возвращает -1, но об этом лучше почитать тут - <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms676701(v=vs.85).aspx">http://msdn.microsoft.com/en-us/library … s.85).aspx</a></p><br /><p>P.S В базе данных нет строк и столбцов. ) Есть записи и поля этих записей.</p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2014-05-29T12:11:57Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83483#p83483</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS + ODBC: Количество полей в запросе]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83463#p83463" />
			<content type="html"><![CDATA[<p>Сперва всё же проверьте:</p><div class="codebox"><pre><code>Set Catalog.ActiveConnection = FB  &#039; следом
MsgBox Catalog.Views.Count   &#039; результат, отличный от нуля?</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2014-05-29T06:30:11Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83463#p83463</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS + ODBC: Количество полей в запросе]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83462#p83462" />
			<content type="html"><![CDATA[<p>Хотелось бы по проще...<br />Неужели никто такой мыслью не заморачивался?</p>]]></content>
			<author>
				<name><![CDATA[MikeSh]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24507</uri>
			</author>
			<updated>2014-05-29T06:11:40Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83462#p83462</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS + ODBC: Количество полей в запросе]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83460#p83460" />
			<content type="html"><![CDATA[<p>Метод Append добавляет в коллекцию Views данные в соответствии с запросом.<br />Только надо сперва проверить как изменится Catalog.Views.Count после добавления нового представления. Если оно меняется, то можно вычислить разницу между исходным и суммированным числом столбцов. Хотя, вероятно, есть способ попроще.</p>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2014-05-29T05:16:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83460#p83460</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS + ODBC: Количество полей в запросе]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83459#p83459" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Flasher пишет:</cite><blockquote><p>Не уверен, но можно попробовать перед циклом это добавить:<br /></p><div class="codebox"><pre><code>Set Comm = CreateObject(&quot;ADODB.Command&quot;)
Comm.CommandText = Query
Catalog.Views.Append &quot;NewQuery&quot;, Comm</code></pre></div></blockquote></div><p>А что это даст?</p>]]></content>
			<author>
				<name><![CDATA[MikeSh]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24507</uri>
			</author>
			<updated>2014-05-29T03:46:55Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83459#p83459</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS + ODBC: Количество полей в запросе]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83458#p83458" />
			<content type="html"><![CDATA[<p>Не уверен, но можно попробовать перед циклом это добавить:<br /></p><div class="codebox"><pre><code>Set Comm = CreateObject(&quot;ADODB.Command&quot;)
Comm.CommandText = Query
Catalog.Views.Append &quot;NewQuery&quot;, Comm</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2014-05-29T03:11:16Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83458#p83458</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS + ODBC: Количество полей в запросе]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83418#p83418" />
			<content type="html"><![CDATA[<p>Да, но это всё-равно не то, что нужно.<br />У меня запрос к хранимым процедурам, которые джоинятся между собой и таблицами.<br />Мне нужно подсчитать и перебрать количество столбцов на выходе селекта.</p>]]></content>
			<author>
				<name><![CDATA[MikeSh]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24507</uri>
			</author>
			<updated>2014-05-28T10:30:24Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83418#p83418</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS + ODBC: Количество полей в запросе]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83414#p83414" />
			<content type="html"><![CDATA[<p>Откуда список? Каждое окно должно выдавать имя каждой таблицы и число её столбцов.</p>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2014-05-28T08:19:01Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83414#p83414</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS + ODBC: Количество полей в запросе]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83413#p83413" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Flasher пишет:</cite><blockquote><div class="codebox"><pre><code>&#039;&lt;...&gt;
Set Catalog = CreateObject(&quot;ADOX.Catalog&quot;)
Set Catalog.ActiveConnection = FB
For Each Table In Catalog.Tables
  MsgBox Table.Name &amp; vbnewline &amp; Table.Columns.Count
Next</code></pre></div><p>?</p></blockquote></div><p>А счастье было так близко и так возможно...<br />К сожалению, эта конструкция выдаёт список таблиц в базе.<br />В общем, мимо...</p><p>Вопрос открыт.</p>]]></content>
			<author>
				<name><![CDATA[MikeSh]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24507</uri>
			</author>
			<updated>2014-05-28T06:34:38Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83413#p83413</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS + ODBC: Количество полей в запросе]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83412#p83412" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>omegastripes пишет:</cite><blockquote><p><strong>Res.Fields.Count</strong> возвращает количество полей (&quot;столбцов&quot;), разве не так?</p></blockquote></div><p>В том то и дело, что это возвращает количество строк, а не столбцов.</p><div class="quotebox"><cite>Mat Skywalker пишет:</cite><blockquote><p>select count(*) from blabla</p></blockquote></div><p>Так, конечно, можно получить количество, но тоже только строк, а не колонок (столбцов).<br />К тому же, данный вариант плох ещё и по другой причине. Если хранимая процедура blabla вносит изменения в базу, то её повторный запуск уже даст другой результат.</p><div class="quotebox"><cite>Flasher пишет:</cite><blockquote><p>Set Catalog = CreateObject(&quot;ADOX.Catalog&quot;)</p></blockquote></div><p>С этим я ещё не сталкивался, судя по коду - то, что нужно, лишь бы заработало. Проверю.</p>]]></content>
			<author>
				<name><![CDATA[MikeSh]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24507</uri>
			</author>
			<updated>2014-05-28T04:10:34Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83412#p83412</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS + ODBC: Количество полей в запросе]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83409#p83409" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>select count(*) from blabla</code></pre></div><p>Можно так получить количество. И да, .RecordsCount возвращает -1 (что я только не пробовал).</p>]]></content>
			<author>
				<name><![CDATA[Mat Skywalker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26275</uri>
			</author>
			<updated>2014-05-28T03:10:12Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83409#p83409</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS + ODBC: Количество полей в запросе]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83408#p83408" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>&#039;&lt;...&gt;
Set Catalog = CreateObject(&quot;ADOX.Catalog&quot;)
Set Catalog.ActiveConnection = FB
For Each Table In Catalog.Tables
  MsgBox Table.Name &amp; vbnewline &amp; Table.Columns.Count
Next</code></pre></div><p>?</p>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2014-05-28T00:06:52Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83408#p83408</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS + ODBC: Количество полей в запросе]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83401#p83401" />
			<content type="html"><![CDATA[<p><strong>Res.Fields.Count</strong> возвращает количество полей (&quot;столбцов&quot;), разве не так?</p>]]></content>
			<author>
				<name><![CDATA[omegastripes]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29228</uri>
			</author>
			<updated>2014-05-27T20:11:02Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83401#p83401</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBS + ODBC: Количество полей в запросе]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83400#p83400" />
			<content type="html"><![CDATA[<p>Добрый день.</p><p>Использую Firebird ODBC + VBScript</p><p>Возникла необходимость перебрать все результаты в запросе, при этом количество полей не известно.</p><p>Пример:<br /></p><div class="codebox"><pre><code>
Set FB = CreateObject(&quot;ADODB.Connection&quot;)

FB.Open &quot;DataBase&quot;

Query = &quot;Select * From StoredProcedure&quot;

Set Res = FB.Execute(Query)

While Not Res.EOF
  a1 = Res.Fields(0).Value
  a2 = Res.Fields(1).Value
...
  aX = Res.Fields(X).Value

  Res.MoveNext
WEnd
</code></pre></div><p>StoredProcedure могут быть любыми и, соответственно, возвращать произвольное количество столбцов.<br />aX = Res.Fields(X).Value<br />Как узнать, чему равно Х для данной StoredProcedure?</p><p>Я очень надеюсь на ответ типа: <br />Используй<br /></p><div class="codebox"><pre><code>ColumnCount = Res.ColumnCount()</code></pre></div><p>, по аналогии с количеством строк <br /></p><div class="codebox"><pre><code>Res.Fields.Count</code></pre></div><p>но, к сожалению, не смог нагуглить ничего подобного...</p><p>Спасибо.</p>]]></content>
			<author>
				<name><![CDATA[MikeSh]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24507</uri>
			</author>
			<updated>2014-05-27T19:40:14Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83400#p83400</id>
		</entry>
</feed>
