<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBS: Проблема с sql запросом.]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9865&amp;type=atom" />
	<updated>2014-08-05T14:32:23Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=9865</id>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Проблема с sql запросом.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=85647#p85647" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Скажите пожалуйста, можно ли использовать &quot;SET ENGINEBEHAVIOR 70&quot; в VBS.</p></blockquote></div><p>Дело не в VBScript. Мы используем OLEDB Text Driver. Посему «SET ENGINEBEHAVIOR …», относящееся к FoxPro, неприменимо.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2014-08-05T14:32:23Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=85647#p85647</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Проблема с sql запросом.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=85628#p85628" />
			<content type="html"><![CDATA[<p><strong>alexii,</strong> спасибо!!!<br />Скажите пожалуйста, можно ли использовать <strong>&quot;SET ENGINEBEHAVIOR 70&quot;</strong> в VBS. Так как в VisualFoxPro при использовании этой установки следующий запрос возвращает желаемый результат.<br /></p><div class="codebox"><pre><code>
SELECT LEN(barname) as BarnameLen, * FROM test.txt WHERE LEN(barname)&lt;=20 GROUP BY barname ORDER BY BarnameLen
</code></pre></div><p> <br />Только там нужно текстовый файл конвертировать в &quot;dbf&quot;.<br />Запрос в VFP:<br /></p><div class="codebox"><pre><code>
SET ENGINEBEHAVIOR 70
SELECT LEN(ALLTRIM(barname)) AS BarnameLen, * FROM test WHERE LEN(ALLTRIM(barname)) &lt;= 20 GROUP BY barname ORDER BY BarnameLen
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[ada]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32462</uri>
			</author>
			<updated>2014-08-05T04:49:48Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=85628#p85628</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Проблема с sql запросом.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=85617#p85617" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>но мне нужен результат:</p></blockquote></div><p>Вы не можете при группировке использовать «*» в списке полей. Это раз. Второе: Вы не можете <em>не</em> использовать группировку для полей, указанных в списке. Т.е.:<br /></p><div class="codebox"><pre><code>qStr = &quot;SELECT LEN(barname) as BarnameLen, shopcode, barname, grpname, salesitem, salesvalue FROM &quot; &amp; fileName &amp; &quot; WHERE LEN(barname)&lt;=20 GROUP BY barname, shopcode, grpname, salesitem, salesvalue ORDER BY LEN(barname)&quot;
</code></pre></div><p>Возможно, что вместо конкретных полей Вам нужны будут суммы или количества, например:<br /></p><div class="codebox"><pre><code>qStr = &quot;SELECT LEN(barname) as BarnameLen, shopcode, barname, grpname, count(salesitem), sum(salesvalue) FROM &quot; &amp; fileName &amp; &quot; WHERE LEN(barname)&lt;=20 GROUP BY barname, shopcode, grpname, salesitem, salesvalue ORDER BY LEN(barname)&quot;
</code></pre></div><p>— я по примеру не могу этого определить.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2014-08-04T17:18:47Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=85617#p85617</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Проблема с sql запросом.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=85614#p85614" />
			<content type="html"><![CDATA[<p>Спасибо, но мне нужен результат:<br />BarnameLen&nbsp; &nbsp;shopcode&nbsp; &nbsp;broup&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;barcode&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;barname&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;salesitem&nbsp; &nbsp; salesvalue<br />17&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; СРЕДСТВА ГИГИЕНЫ&nbsp; &nbsp; 5007489856900&nbsp; &nbsp; зубная паста 50мл&nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;116<br />16&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; СРЕДСТВА ГИГИЕНЫ&nbsp; &nbsp; 4603103030400&nbsp; &nbsp; туалетная бумага&nbsp; &nbsp; &nbsp;1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;307</p><p>Соответственно должен быть следующий запрос:<br /></p><div class="codebox"><pre><code>
SELECT LEN(barname) as BarnameLen, * FROM test.txt WHERE LEN(barname)&lt;=20 GROUP BY barname ORDER BY BarnameLen
</code></pre></div><p>В место &quot;*&quot; можно использовать имена колонок, но это тоже не дает результата.</p>]]></content>
			<author>
				<name><![CDATA[ada]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32462</uri>
			</author>
			<updated>2014-08-04T16:44:15Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=85614#p85614</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Проблема с sql запросом.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=85613#p85613" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Скрипт выводит следующую ошибку:</p></blockquote></div><p>Там же написана причина. Замените «*» на «barname». Получите:<br /></p><div class="quotebox"><blockquote><div class="codebox"><pre><code>16
туалетная бумага
17
зубная паста 50мл</code></pre></div></blockquote></div>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2014-08-04T13:39:12Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=85613#p85613</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBS: Проблема с sql запросом.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=85607#p85607" />
			<content type="html"><![CDATA[<p>Здравствуйте!!!<br />Прошу Вас помочь решить проблему с запросом из VBScript. Заранее благодарю Вас за помощь.</p><p>Скрипт выводит следующую ошибку:<br /><span class="postimg"><img src="http://forum.script-coding.com/misc.php?action=pun_attachment&amp;item=831&amp;download=1&amp;secure_str=32462t9865" alt="http://forum.script-coding.com/misc.php?action=pun_attachment&amp;amp;item=831&amp;amp;download=1&amp;amp;secure_str=32462t9865" /></span></p><p>Сам код:<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>
Option Explicit
Dim strPath, fileName, qStr, queryObj, tmp
strPath = &quot;C:\test&quot;
fileName = &quot;test.txt&quot;
qStr = &quot;SELECT LEN(barname) as BarnameLen, * FROM &quot;&amp;fileName&amp;&quot; WHERE LEN(barname)&lt;=20 GROUP BY barname ORDER BY LEN(barname)&quot;
queryObj = QueryTextFile(strPath, qStr)
If IsArray(queryObj) Then
    For Each tmp In queryObj
        WScript.Echo tmp
    Next    
End If

Function QueryTextFile(fileLocation, qString)
    Const adOpenStatic = 3
    Const adLockOptimistic = 3
    Const adCmdText = &amp;H0001
    Dim objConnection, objRecordSet, result
    Set objConnection = CreateObject(&quot;ADODB.Connection&quot;)
    Set objRecordSet = CreateObject(&quot;ADODB.Recordset&quot;)
    objConnection.ConnectionString = &quot;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=&quot; &amp; fileLocation &amp; &quot;;Extended Properties=&quot;&quot;text;;&quot;&quot;;&quot;
    objConnection.Open
    objRecordset.Open qString, objConnection, adOpenStatic, adLockOptimistic, adCmdText
    If Not objRecordset.EOF Or Not objRecordset.BOF Then
        QueryTextFile = objRecordSet.GetRows()        
    End If
    Set objRecordset = Nothing
    Set objConnection = Nothing
End Function
</code></pre></div></div></div><p>schema.ini файл:<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>
[test.txt]
Format = TabDelimited
ColNameHeader = True
Col1 = shopcode Text
Col2 = grpname Text
Col3 = barcode Text
Col4 = barname Text
Col5 = salesitem Long
Col6 = salesvalue Long
</code></pre></div></div></div><p>test.txt файл:<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><p>shopcode	grpname	barcode	barname	salesitem	salesvalue<br />1	СРЕДСТВА ГИГИЕНЫ	7891418826200	зубная паста 50мл Бережное Отбеливание	1	123<br />1	СРЕДСТВА ГИГИЕНЫ	7891414900300	зубная паста 50мл Защита от Кариеса	1	123<br />7	СРЕДСТВА ГИГИЕНЫ	8850633044900	зубная щетка Премьер отбеливания	1	118<br />5	БЫТОВАЯ ХИМИЯ	5413155692800	средство для посуды 500мл Алоэ	1	187<br />3	БЫТОВАЯ ХИМИЯ	5413104284100	универсальное средство 400гр порошок Лимон	3	495<br />4	БЫТОВАЯ ХИМИЯ	5410018384500	универсальное средство 475гр порошок Океан	1	203<br />2	БЫТОВАЯ ХИМИЯ	5413100858800	универсалное средство 400гр Сосна	1	194<br />7	СРЕДСТВА ПО УХОДУ ЗА ВОЛОСАМИ	5011161622600	шампунь 250мл Блеск ухаживающий	1	416<br />3	СРЕДСТВА ПО УХОДУ ЗА ВОЛОСАМИ	5410656075200	шампунь 400мл укрепление и блеск	1	554<br />5	СРЕДСТВА ПО УХОДУ ЗА ВОЛОСАМИ	5000418417400	шампунь 400мл Гладкий Шелк 2в1	1	778<br />4	СРЕДСТВА ПО УХОДУ ЗА ВОЛОСАМИ	4015037787800	шампунь 400мл Против перхоти	1	376<br />5	СРЕДСТВА ГИГИЕНЫ	4010004164100	прокладки Ультра 10шт	1	332<br />4	СРЕДСТВА ГИГИЕНЫ	4010043754300	прокладки Классик 7шт	1	241<br />3	СРЕДСТВА ГИГИЕНЫ	4010048183600	ежедневки нормал 20шт	2	284<br />1	СРЕДСТВА ГИГИЕНЫ	4010048192800	ежедневки нормал 60шт	1	414<br />1	СРЕДСТВА ГИГИЕНЫ	4010010783500	ежедневки Регуляр 20шт	1	166<br />1	СРЕДСТВА ГИГИЕНЫ	4010017975700	ежедневки Нормал 60шт	1	440<br />2	СРЕДСТВА ГИГИЕНЫ	5007489856900	зубная паста 50мл	1	116<br />2	СРЕДСТВА ГИГИЕНЫ	4603103030400	туалетная бумага	1	307</p></div></div>]]></content>
			<author>
				<name><![CDATA[ada]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32462</uri>
			</author>
			<updated>2014-08-04T09:34:24Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=85607#p85607</id>
		</entry>
</feed>
