<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBS:"Собрать" эксель файл из большой строки шестнадцатеричного формата]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=13245&amp;type=atom" />
	<updated>2017-11-28T11:45:19Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=13245</id>
		<entry>
			<title type="html"><![CDATA[Re: VBS:"Собрать" эксель файл из большой строки шестнадцатеричного формата]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=121742#p121742" />
			<content type="html"><![CDATA[<p>Вообщем, проблему удалось-таки решить средствами самого оракла) Оказывается, там есть такой пакет UTL_FILE, который умеет проворачивать такие штуки как распаковка блоба в файл, причем в принципе в любой, какой укажешь. Пришлось, правда, шаманить прикинувшись dba в SQL*Plus.</p>]]></content>
			<author>
				<name><![CDATA[Eugene]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=38900</uri>
			</author>
			<updated>2017-11-28T11:45:19Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=121742#p121742</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS:"Собрать" эксель файл из большой строки шестнадцатеричного формата]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=121703#p121703" />
			<content type="html"><![CDATA[<p>Так Вам естественным образом нужен адаптер для БД на клиентской стороне. </p><p>Проще говоря нужна библиотека <strong>OraOLEDB.DLL</strong> на компьютере с которого запускаете скрипт. И она должна быть зарегистрирована через <strong>regsvr32</strong></p><p>Пример пояснения подобной ошибки: <br /><a href="http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&amp;tid=52138&amp;msg=364502">OraOLEDB.Oracle.1 provider is not registered on the local machine</a></p><p><a href="https://docs.oracle.com/cd/B28359_01/win.111/b28431/intro.htm">Документация по теме</a></p><p><a href="https://docs.oracle.com/cd/B28359_01/win.111/b28431/intro.htm#i1004001">Необходимые библиотеки</a></p><p>Законный вопрос - &quot;И что с этим делать то ???&quot;</p><p>Думаю Вам нужно поставить <a href="http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html">Oracle Instant Client</a> соответственно разрядности Вашей системы.</p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2017-11-27T16:06:10Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=121703#p121703</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS:"Собрать" эксель файл из большой строки шестнадцатеричного формата]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=121697#p121697" />
			<content type="html"><![CDATA[<p><strong>Xameleon</strong>,</p><p>ситуация успела несколько измениться. </p><p>Я пытаюсь подконнектиться к своему источнику данных под той учеткой, которая ходит в бд. Получаю следующую ошибку (см. файл tns_error). Тестовый коннект выполняю, запуская файл .udl (появляется окно Data Link Properties с различными параметрами).</p><p>Код, который я запускаю, вот такой:</p><div class="codebox"><pre><code>
Option Explicit

Const C_ORA_SID = &quot;Ora_EGRC&quot;
Const C_ORA_USR = &quot;&quot;
Const C_ORA_PWD = &quot;&quot;

Const C_TBL = &quot;dual&quot;
Const C_FLD_LOB = &quot;sysdate&quot;
Const C_FLD_ID = &quot;ID_FIELD&quot;

Dim oConn, sSQL, oRst, oLOB, f
Set oConn = CreateObject(&quot;ADODB.Connection&quot;)
oConn.ConnectionString = &quot;Provider=OraOLEDB.Oracle.1;Data Source=&quot; &amp; C_ORA_SID &amp; &quot;;User ID=&quot; &amp; C_ORA_USR &amp; &quot;;Password=&quot; &amp; C_ORA_PWD &amp; &quot;;&quot;
oConn.Open
sSQL = &quot;SELECT &quot; &amp; C_FLD_LOB &amp; &quot; FROM &quot; &amp; C_TBL
Set oRst = oConn.Execute(sSQL)
</code></pre></div><p>Запускаю этот код (vbs) в командной строке и получаю следующее сообщение:</p><div class="codebox"><pre><code>
another_var.vbs(17, 1) ADODB.Connection: Provider cannot be found. It may not be properly installed.
</code></pre></div><p>Проблема может быть связана с тем, что само приложение в данный момент лежит, хотя база доступна и запросы к ней я могу делать.</p>]]></content>
			<author>
				<name><![CDATA[Eugene]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=38900</uri>
			</author>
			<updated>2017-11-27T13:29:08Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=121697#p121697</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS:"Собрать" эксель файл из большой строки шестнадцатеричного формата]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=121691#p121691" />
			<content type="html"><![CDATA[<p><strong>Eugene</strong>, а можно взглянуть на код (естесственно без реальных паролей), который Вы запускаете и узнать каким интерпретатором исполняете ?</p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2017-11-27T12:47:29Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=121691#p121691</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS:"Собрать" эксель файл из большой строки шестнадцатеричного формата]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=121681#p121681" />
			<content type="html"><![CDATA[<p><strong>Xameleon</strong>,</p><p>попробую воспользоваться вашим примером с ADODB.Connection. Спасибо за помощь!</p><p>Подскажите как проверить, что есть коннект? Подставил свои параметры (драйвер, имя источника данных, логин пароль) и добавил строчку MsgBox conn.State. Запускаю скрипт, появляется окно командной строки и тут же пропадает..</p>]]></content>
			<author>
				<name><![CDATA[Eugene]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=38900</uri>
			</author>
			<updated>2017-11-27T08:44:17Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=121681#p121681</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS:"Собрать" эксель файл из большой строки шестнадцатеричного формата]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=121675#p121675" />
			<content type="html"><![CDATA[<p>Для этих целей, Вы можете создать подключение к базе используя объект <strong>ADODB.Connection</strong>. Далее используя либо <strong>ADODB.Command</strong> либо <strong>ADODB.Recordset</strong> получить набор записей из которых нужно выгрузить данные. После этого у объекта <strong>Recordset</strong> взять необходимое поле <strong>Field</strong> и через его метод <strong>GetChunk</strong> загрузить блоками (или сразу всё содержимое) в <strong>SAPI.spFileStream</strong> / <strong>SAPI.spMemoryStream</strong>. И уже тогда выполнить сохранение на диск.</p><p><a href="http://www.vbaexpress.com/forum/showthread.php?18516-Solved-Connect-to-Oracle&amp;p=150912&amp;viewfull=1#post150912">Пример подключения к базе Oracle</a></p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2017-11-26T20:35:24Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=121675#p121675</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBS:"Собрать" эксель файл из большой строки шестнадцатеричного формата]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=121674#p121674" />
			<content type="html"><![CDATA[<p>Всем доброго времени суток.</p><p>У меня есть большая строка (8000 символов; это поле типа BLOB (binary large object) в БД Оракл) в шестнадцатеричном формате, которая в действительности является файлом формата .xlsx (я это знаю точно, потому что в соседнем поле лежит имя файла с расширением). Мне нужно эту строку &quot;превратить&quot; в физический файл экселя на диске. Т.е., этот файл &quot;упакован&quot; в BLOB в Оракле. Мне нужно его &quot;распаковать&quot;.</p><p>На другом форуме мне подсказали, что для этой цели можно использовать SAPI.SpFileStream, т.к. он не грузит данные в память в отличие от ADODB.</p><p>Казус заключается еще и в том, что файлы там разных типов - есть эксель, есть вордовский документ, а есть архив. Подскажите, пожалуйста, как можно такую строчку распарсить объектом SAPI.SpFileStream. В принципе саму строчку я могу выгрузить в текстовый файл, чтобы не лазить за ней в базу.</p>]]></content>
			<author>
				<name><![CDATA[Eugene]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=38900</uri>
			</author>
			<updated>2017-11-26T18:54:25Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=121674#p121674</id>
		</entry>
</feed>
