<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBScript: Поиск текста по условиям и преобразование в переменные]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=8615</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=8615&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBScript: Поиск текста по условиям и преобразование в переменные».]]></description>
		<lastBuildDate>Tue, 27 Aug 2013 23:50:16 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBScript: Поиск текста по условиям и преобразование в переменные]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=75000#p75000</link>
			<description><![CDATA[<p><strong>Tox</strong>, вот примерная болванка кода:<br /></p><div class="codebox"><pre><code>Option Explicit

Dim strPath
Dim strBase

Dim objConnection
Dim objRecordset
Dim objField


strPath = &quot;E:\Песочница\0317&quot;
strBase = &quot;data.dbf&quot;

Set objConnection = WScript.CreateObject(&quot;ADODB.Connection&quot;)

With objConnection
    .ConnectionString = _
        &quot;Provider=Microsoft.Jet.OLEDB.4.0;&quot; &amp; _
        &quot;Data Source=&quot; &amp; strPath &amp; &quot;;&quot; &amp; _
        &quot;Extended Properties=dBASE IV;&quot;
    
    .Open
End With

Set objRecordset  = WScript.CreateObject(&quot;ADODB.Recordset&quot;)

With objRecordset
    Set .ActiveConnection = objConnection
    
    .Open &quot;SELECT * FROM &quot; &amp; strBase &amp; &quot; WHERE SUM = -1&quot;
    
    For Each objField In .Fields
        WScript.StdOut.Write objField.Name &amp; &quot;;&quot;
    Next
    
    WScript.StdOut.WriteLine
    
    Do Until .EOF
        For Each objField In .Fields
            WScript.StdOut.Write StrConvert(CStr(objField.Value &amp; &quot;&quot;), &quot;cp866&quot;, &quot;windows-1251&quot;) &amp; &quot;;&quot;
        Next
        
        WScript.StdOut.WriteLine
        
        .MoveNext
    Loop
    
    .Close
End With

objConnection.Close

Set objRecordset  = Nothing
Set objConnection = Nothing

WScript.Quit 0
&#039;=============================================================================

&#039;=============================================================================
&#039; HKEY_CLASSES_ROOT\MIME\Database\Charset
&#039; cp866, windows-1251, koi8-r, unicode, utf-8, _autodetect
&#039;=============================================================================
Function StrConvert(ByVal strText, ByVal strSourceCharset, ByVal strDestCharset)
    Const adTypeText      = 2
    Const adModeReadWrite = 3
    
    
    With WScript.CreateObject(&quot;ADODB.Stream&quot;)
        .Type      = adTypeText
        .Mode      = adModeReadWrite
        
        .Open
        
        .Charset   = strSourceCharset
        .WriteText strText
        
        .Position  = 0
        .Charset   = strDestCharset
        StrConvert = .ReadText
        
        .Close
    End With
End Function
&#039;=============================================================================
</code></pre></div><p>Условие задано в «WHERE SUM = -1», помнится, оно должно было быть именно таким.</p><p>Поскольку у Вас внутри ANSI, а умолчание для данного формата — OEM, то, дабы не лазать и не править реестр («HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Xbase\DataCodePage»), добавлена простая обратная конвертация.</p><p>Вам конечный результат в каком виде нужен?</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Tue, 27 Aug 2013 23:50:16 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=75000#p75000</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Поиск текста по условиям и преобразование в переменные]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=74973#p74973</link>
			<description><![CDATA[<p><a href="http://rghost.ru/48398989">http://rghost.ru/48398989</a> выложил таблицу.</p>]]></description>
			<author><![CDATA[null@example.com (Tox)]]></author>
			<pubDate>Tue, 27 Aug 2013 08:24:04 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=74973#p74973</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Поиск текста по условиям и преобразование в переменные]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=74956#p74956</link>
			<description><![CDATA[<p><strong>Tox</strong>, это не dbf-таблица. А <em>я</em> просил именно её.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Mon, 26 Aug 2013 15:43:52 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=74956#p74956</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Поиск текста по условиям и преобразование в переменные]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=74954#p74954</link>
			<description><![CDATA[<div class="quotebox"><cite>-TOXA- пишет:</cite><blockquote><p>Ошибка происходит из за того, что, скорее всего, в конце есть пустые строки.. Уберите их.. Или же выключите ошибки в скрипте, написав в начале On Error Resume Next..</p><p>Или же просто проверять, сколько элементов..</p><div class="codebox"><pre><code>Dim Result(200)

For i = 0 To 200
Result(i) = &quot;_&quot;
Next

Set objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Set objF = objFSO.OpenTextFile(filename, 1, false, 0)    
Text = objF.ReadAll                                   

Str_ = Split(Text, vbNewLine)      
Index = 0

For Each Str In Str_ 

Parts = Split(Str, vbTab)

If UBound(Parts) = 8 Then
If (Parts(8) = &quot;-1&quot;) And (Left(Parts(3), 8) = &quot;16000000&quot;) Then
Result(Index) = Parts(3)
Index = Index + 1
End If
End If

Next

Result_ = Filter(Result, &quot;_&quot;, False)

For Each p In Result_
MsgBox p
Next</code></pre></div></blockquote></div><p>Выложил кусок файла, там в центре где идет текст, между словами идут пробелы.</p>]]></description>
			<author><![CDATA[null@example.com (Tox)]]></author>
			<pubDate>Mon, 26 Aug 2013 14:59:09 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=74954#p74954</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Поиск текста по условиям и преобразование в переменные]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=74953#p74953</link>
			<description><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p><strong>Tox</strong>, «пример данных» был и в первом посте. И даже после последнего «примера данных» возник вопрос.</p><div class="quotebox"><blockquote><p>данные которые я пытаюсь обработать, получаются из dbf таблицы , да бы не делать безсмысленную перегонку данных, можно обращаться напрямую в таблицу... и путем sql запроса получать те же данные...</p></blockquote></div><p>Выкладывайте пример таблицы. Не всю, несколько записей. Упакуйте в архив, выложите сюда или на RGhost, а сюда — ссылку.</p></blockquote></div><p>http://rghost.ru/48385323</p>]]></description>
			<author><![CDATA[null@example.com (Tox)]]></author>
			<pubDate>Mon, 26 Aug 2013 14:57:59 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=74953#p74953</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Поиск текста по условиям и преобразование в переменные]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=74952#p74952</link>
			<description><![CDATA[<p>Ошибка происходит из за того, что, скорее всего, в конце есть пустые строки.. Уберите их.. Или же выключите ошибки в скрипте, написав в начале On Error Resume Next..</p><p>Или же просто проверять, сколько элементов..</p><div class="codebox"><pre><code>Dim Result(200)

For i = 0 To 200
Result(i) = &quot;_&quot;
Next

Set objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Set objF = objFSO.OpenTextFile(filename, 1, false, 0)    
Text = objF.ReadAll                                   

Str_ = Split(Text, vbNewLine)      
Index = 0

For Each Str In Str_ 

Parts = Split(Str, vbTab)

If UBound(Parts) = 8 Then
If (Parts(8) = &quot;-1&quot;) And (Left(Parts(3), 8) = &quot;16000000&quot;) Then
Result(Index) = Parts(3)
Index = Index + 1
End If
End If

Next

Result_ = Filter(Result, &quot;_&quot;, False)

For Each p In Result_
MsgBox p
Next</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (-TOXA-)]]></author>
			<pubDate>Mon, 26 Aug 2013 14:51:07 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=74952#p74952</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Поиск текста по условиям и преобразование в переменные]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=74951#p74951</link>
			<description><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p><strong>Tox</strong>, «пример данных» был и в первом посте. И даже после последнего «примера данных» возник вопрос.</p><div class="quotebox"><blockquote><p>данные которые я пытаюсь обработать, получаются из dbf таблицы , да бы не делать безсмысленную перегонку данных, можно обращаться напрямую в таблицу... и путем sql запроса получать те же данные...</p></blockquote></div><p>Выкладывайте пример таблицы. Не всю, несколько записей. Упакуйте в архив, выложите сюда или на RGhost, а сюда — ссылку.</p></blockquote></div><p>http://rghost.ru/48385323</p>]]></description>
			<author><![CDATA[null@example.com (Tox)]]></author>
			<pubDate>Mon, 26 Aug 2013 14:48:00 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=74951#p74951</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Поиск текста по условиям и преобразование в переменные]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=74950#p74950</link>
			<description><![CDATA[<p><strong>Tox</strong>, «пример данных» был и в первом посте. И даже после последнего «примера данных» возник вопрос.</p><div class="quotebox"><blockquote><p>данные которые я пытаюсь обработать, получаются из dbf таблицы , да бы не делать безсмысленную перегонку данных, можно обращаться напрямую в таблицу... и путем sql запроса получать те же данные...</p></blockquote></div><p>Выкладывайте пример таблицы. Не всю, несколько записей. Упакуйте в архив, выложите сюда или на RGhost, а сюда — ссылку.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Mon, 26 Aug 2013 14:44:56 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=74950#p74950</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Поиск текста по условиям и преобразование в переменные]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=74949#p74949</link>
			<description><![CDATA[<div class="quotebox"><cite>-TOXA- пишет:</cite><blockquote><p>Я тут образумился, и понял, что я бред какой-то писал) Попробуй так:</p><div class="codebox"><pre><code>Dim Result(200)

For i = 0 To 200
Result(i) = &quot;_&quot;
Next

Set objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Set objF = objFSO.OpenTextFile(filename, 1, false, 0)    
Text = objF.ReadAll                                   

Str_ = Split(Text, vbNewLine)      
Index = 0

For Each Str In Str_ 

Parts = Split(Str, vbTab)

If (Parts(8) = &quot;-1&quot;) And (Left(Parts(3), 8) = &quot;16000000&quot;) Then
Result(Index) = Parts(3)
Index = Index + 1
End If

Next

Result_ = Filter(Result, &quot;_&quot;, False)

For Each p In Result_
MsgBox p
Next</code></pre></div></blockquote></div><p>Пишет - Индекс выходит за пределы допустимого диапазона: &#039;[number: 8]&#039;</p>]]></description>
			<author><![CDATA[null@example.com (Tox)]]></author>
			<pubDate>Mon, 26 Aug 2013 14:35:43 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=74949#p74949</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Поиск текста по условиям и преобразование в переменные]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=74947#p74947</link>
			<description><![CDATA[<p>Я тут образумился, и понял, что я бред какой-то писал) Попробуй так:</p><div class="codebox"><pre><code>Dim Result(200)

For i = 0 To 200
Result(i) = &quot;_&quot;
Next

Set objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Set objF = objFSO.OpenTextFile(filename, 1, false, 0)    
Text = objF.ReadAll                                   

Str_ = Split(Text, vbNewLine)      
Index = 0

For Each Str In Str_ 

Parts = Split(Str, vbTab)

If (Parts(8) = &quot;-1&quot;) And (Left(Parts(3), 8) = &quot;16000000&quot;) Then
Result(Index) = Parts(3)
Index = Index + 1
End If

Next

Result_ = Filter(Result, &quot;_&quot;, False)

For Each p In Result_
MsgBox p
Next</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (-TOXA-)]]></author>
			<pubDate>Mon, 26 Aug 2013 14:19:14 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=74947#p74947</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Поиск текста по условиям и преобразование в переменные]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=74945#p74945</link>
			<description><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>Если бы сразу был выложен образец (хотя бы частичный) реального файла, упакованный в архив — вопрос бы не растянулся на два десятка постов.</p></blockquote></div><p>Пример данных был уже в 5 посте.&nbsp; Просто в файле не 2 строки, а 20-100, не думаю , что это сделало бы погоды ...</p>]]></description>
			<author><![CDATA[null@example.com (Tox)]]></author>
			<pubDate>Mon, 26 Aug 2013 13:51:30 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=74945#p74945</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Поиск текста по условиям и преобразование в переменные]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=74944#p74944</link>
			<description><![CDATA[<p>Если бы сразу был выложен образец (хотя бы частичный) реального файла, упакованный в архив — вопрос бы не растянулся на два десятка постов.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Mon, 26 Aug 2013 13:49:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=74944#p74944</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Поиск текста по условиям и преобразование в переменные]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=74943#p74943</link>
			<description><![CDATA[<div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p><strong>Tox</strong><br />Из первого описания сложно понять, что же Вам требуется:<br /></p><div class="quotebox"><blockquote><p>Нужно найти первые цифры вида &quot;111***&quot;(первые 5-7 знаков всегда одинаковые) по вторым цифрам, если они равны 222222(если не 222222) первые цифры не брать.</p></blockquote></div><p>А вот это описание более осмысленное:<br /></p><div class="quotebox"><cite>Tox пишет:</cite><blockquote><div class="codebox"><pre><code>
20.08.2013    18:23    1    1600000000000888    Платежный сертификат 5000    15    1    -1    
20.08.2013    18:23    1    1600000000000101    Платежный сертификат 5000    15    1    5000
</code></pre></div><p>Пример из файла, если есть -1, то брать код 1600000000000888.</p></blockquote></div><p>Его можно описать так:<br />Для каждой строки, в которой поле №8 == -1 что-то сделать с полем №4. </p><p>Задача решается как с помощью регулярных выражений, так и без них. Так же как и с/без VBS. Заметил, что поля разделены символом табуляции. Это в реальности так или только в качестве примера?</p></blockquote></div><p>Да, поля разделены табуляцией, сейчас подумал, ведь vbs имеет возможность выполнять sql запросы(так ведь?), просто данные которые я пытаюсь обработать, получаются из dbf таблицы , да бы не делать безсмысленную перегонку данных, можно обращаться напрямую в таблицу... и путем sql запроса получать те же данные...</p>]]></description>
			<author><![CDATA[null@example.com (Tox)]]></author>
			<pubDate>Mon, 26 Aug 2013 13:48:33 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=74943#p74943</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Поиск текста по условиям и преобразование в переменные]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=74942#p74942</link>
			<description><![CDATA[<p><strong>Tox</strong><br />Из первого описания сложно понять, что же Вам требуется:<br /></p><div class="quotebox"><blockquote><p>Нужно найти первые цифры вида &quot;111***&quot;(первые 5-7 знаков всегда одинаковые) по вторым цифрам, если они равны 222222(если не 222222) первые цифры не брать.</p></blockquote></div><p>А вот это описание более осмысленное:<br /></p><div class="quotebox"><cite>Tox пишет:</cite><blockquote><div class="codebox"><pre><code>
20.08.2013    18:23    1    1600000000000888    Платежный сертификат 5000    15    1    -1    
20.08.2013    18:23    1    1600000000000101    Платежный сертификат 5000    15    1    5000
</code></pre></div><p>Пример из файла, если есть -1, то брать код 1600000000000888.</p></blockquote></div><p>Его можно описать так:<br />Для каждой строки, в которой поле №8 == -1 что-то сделать с полем №4. </p><p>Задача решается как с помощью регулярных выражений, так и без них. Так же как и с/без VBS. Заметил, что поля разделены символом табуляции. Это в реальности так или только в качестве примера?</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Mon, 26 Aug 2013 13:35:20 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=74942#p74942</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Поиск текста по условиям и преобразование в переменные]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=74941#p74941</link>
			<description><![CDATA[<div class="quotebox"><cite>-TOXA- пишет:</cite><blockquote><p>Ааа.. Нее.. Я беру справа 2 символа.. Но если нужно поиск, то замени на InStr(&quot;-1&quot;, Str) &gt; 0</p></blockquote></div><p>Если написать InStr(&quot;-1&quot;, Str) &gt; 0(как я понимаю вместо If Right(Str, 2) = &quot;-1&quot; Then), то выдает пустоту , если str поменять местами с -1 выдает странные цифры(1,60000000000089E+15)</p>]]></description>
			<author><![CDATA[null@example.com (Tox)]]></author>
			<pubDate>Mon, 26 Aug 2013 13:02:11 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=74941#p74941</guid>
		</item>
	</channel>
</rss>
