<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBS: как открыть файл .MDB через ADODB  только на чтение?]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7921&amp;type=atom" />
	<updated>2013-01-15T17:27:51Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=7921</id>
		<entry>
			<title type="html"><![CDATA[Re: VBS: как открыть файл .MDB через ADODB  только на чтение?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=68513#p68513" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>omegastripes пишет:</cite><blockquote><p>как задействовать ODBCDirect</p></blockquote></div><p>Проверил подключение через <strong>ODBCDirect</strong>. Результат отрицательный.</p><p>Расшарил в домашней сети с другого компа (Win7 x64) папку \\HP\tmpmdb\ с доступом только на чтения, где создал БД database.mdb с таблицей data. На своем компе (Win7 x64) настроил источник данных ODBC c именем Test, драйвером Microsoft Access Driver (*.mdb) и соответсвующим путем к файлу БД в диспетчере C:\WINDOWS\SysWOW64\odbcad32.exe (источник стал виден и в C:\WINDOWS\System32\odbcad32.exe). </p><p><strong>Вариант 1.</strong> Следующий скрипт отрабатывает без ошибок, если database.mdb не был открыт:</p><div class="codebox"><pre><code>set dbe = createobject(&quot;DAO.DBEngine.36&quot;)
set wksp = dbe.createworkspace(&quot;odbcworkspace&quot;, &quot;admin&quot;, &quot;&quot;, 1) &#039; dbUseODBC = 1 dbUseJet = 2
set cn = wksp.openconnection(&quot;connection1&quot;, 1, true, &quot;ODBC;DSN=test;&quot;) &#039; dbDriverNoPrompt = 1
set rs = cn.openrecordset(&quot;SELECT * FROM DATA;&quot;)
do while not rs.eof
    msgbox rs.fields(0)
    rs.movenext
loop</code></pre></div><p>cn.connect содержит строку &quot;ODBC;DSN=test;DBQ=\\HP\tmpmdb\database.mdb;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;UID=admin;&quot;<br />Результат одинаков, как при запуске скрипта под C:\WINDOWS\SysWOW64\wscript.exe, так и C:\WINDOWS\System32\wscript.exe<br />Пока работает скрипт, и открыто соединение - файл не удается удалить на другом компе с сообщением &quot;Операция не может быть завершена, поскольку этот файл открыт в &quot;System&quot;.</p><p><strong>Вариант 2.</strong> Попытка открыть соединение, когда database.mdb открыт локально на другом компе в MS Access с полным доступом приводит к ошибке скрипта, в коллекции dbe.errors их сразу 3:</p><p>S1000: [Microsoft][Драйвер ODBC Microsoft Access] Невозможно использовать &#039;(нет данных)&#039;; файл уже используется.<br />IM006: [Microsoft][Диспетчер драйверов ODBC] Ошибка SQLSetConnectAttr для драйвера<br />ODBC - ошибка вызова.</p><p>Кстати, если этим скриптом открыть *.mdb в папке с полным доступом, DAO.DBEngine.36 так же, как и ADODB.Connection создает *.ldb.</p>]]></content>
			<author>
				<name><![CDATA[omegastripes]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29228</uri>
			</author>
			<updated>2013-01-15T17:27:51Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=68513#p68513</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: как открыть файл .MDB через ADODB  только на чтение?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=68445#p68445" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>yuriy2000 пишет:</cite><blockquote><p>Других способов доступа к MDB нет?</p></blockquote></div><p>Опираясь на различные источники, могу предположить, что создание .ldb файла - дело рук Jet Engine, ODBCDirect может подключаться к ISAM базам данных без использования Jet, вероятно, будет достаточно доступа только на чтение? Однако, как задействовать ODBCDirect, да еще и в скриптовой среде - подсказать не могу.</p>]]></content>
			<author>
				<name><![CDATA[omegastripes]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29228</uri>
			</author>
			<updated>2013-01-13T20:08:57Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=68445#p68445</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: как открыть файл .MDB через ADODB  только на чтение?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=68384#p68384" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>yuriy2000 пишет:</cite><blockquote><p>Других способов доступа к MDB нет?</p></blockquote></div><p> Если размер файла .mdb невелик, и информация считывается нечасто, тогда перед подключением копируйте, например, средствами fso требуемый файл на локальный диск и пользуйтесь сколько угодно. Костыль банален и непродуктивен, но работает безотказно <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[omegastripes]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29228</uri>
			</author>
			<updated>2013-01-10T15:10:16Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=68384#p68384</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: как открыть файл .MDB через ADODB  только на чтение?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67994#p67994" />
			<content type="html"><![CDATA[<p>Реально у меня тоже домен и этот файл активно использует, в т.ч. добавляет записи, несколько человек (у них имеются права на запись на этот ресурс).&nbsp; &nbsp;Это я просто пытался тестировать на своем ПК. </p><p>Ладно вопрос задам по другому.&nbsp; Других способов доступа к MDB нет?</p>]]></content>
			<author>
				<name><![CDATA[yuriy2000]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25753</uri>
			</author>
			<updated>2012-12-29T01:02:31Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67994#p67994</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: как открыть файл .MDB через ADODB  только на чтение?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67982#p67982" />
			<content type="html"><![CDATA[<p>На всякий случай: я открывал файл посредством Microsoft Access из комплекта Office 2003. Доменная структура сети. Как сетевой диск ресурс не подключал — открывал по UNC-имени.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-12-28T16:29:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67982#p67982</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: как открыть файл .MDB через ADODB  только на чтение?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67975#p67975" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p><strong>yuriy2000</strong>, проверил несколько раз. У меня в предложенных Вами условиях и на Вашем коде ошибки не возникает.</p></blockquote></div><p>Хм, странно..., я сам тоже проверял - беру свой же каталог объявляю сетевым ресурсом и подключаю его как сетевой диск с доступом только на чтение, если файл не открыт - скрипт отрабатывает нормально, но стоит только открыть базу в программе Access - скрипт выдает ошибку!</p>]]></content>
			<author>
				<name><![CDATA[yuriy2000]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25753</uri>
			</author>
			<updated>2012-12-28T13:56:35Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67975#p67975</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: как открыть файл .MDB через ADODB  только на чтение?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67964#p67964" />
			<content type="html"><![CDATA[<p><strong>yuriy2000</strong>, проверил несколько раз. У меня в предложенных Вами условиях и на Вашем коде ошибки не возникает.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-12-28T12:06:24Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67964#p67964</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: как открыть файл .MDB через ADODB  только на чтение?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67948#p67948" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>Что подразумевается под «работает»? Как именно «кто-то» открывает этот файл?</p></blockquote></div><p>Этому &quot;Кому-то&quot; достаточно&nbsp; просто открыть этот MDB-файл в программе Access и уже метод open выдает ошибку <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[yuriy2000]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25753</uri>
			</author>
			<updated>2012-12-28T01:44:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67948#p67948</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: как открыть файл .MDB через ADODB  только на чтение?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67945#p67945" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>yuriy2000 пишет:</cite><blockquote><p>Если же с файлом кто-то работает…</p></blockquote></div><p>Что подразумевается под «работает»? Как именно «кто-то» открывает этот файл?</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-12-27T22:05:53Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67945#p67945</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBS: как открыть файл .MDB через ADODB  только на чтение?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67944#p67944" />
			<content type="html"><![CDATA[<p>Коллеги подскажите как обойти такую проблему:</p><p>Для открытия файла с базой MDB используется следующий код (выдержка):<br /></p><div class="codebox"><pre><code>
set cnn1 = WScript.CreateObject(&quot;ADODB.Connection&quot;)
cnn1.Mode = 1 &#039; adModeRead
cnn1.Provider = &quot;Microsoft.Jet.OLEDB.4.0&quot;
cnn1.Open &quot;Data Source=\\server\share1\folder2\info.mdb&quot; 
</code></pre></div><p>Доступ к сетевому ресурсу \\server\share1\, на котором лежит база имеется <strong>только на чтение. </strong><br />Если этот файл ни кем не открыт, то всё ок - подключаемся и считываем информацию <br />Если же с файлом кто-то работает, то при попытке открыть файл получаю сообщение:<br /></p><div class="quotebox"><blockquote><p>Microsoft JET Database Engine&nbsp; &nbsp;Erorr description: Невозможно использовать &#039;&#039;; файл уже используется.</p></blockquote></div><p>На форуме уже обсуждали подобную проблему <a href="http://forum.script-coding.com/viewtopic.php?id=3058">здесь</a>, но там так и не нашли решения в лоб, к тому же <br />1. мне не нужно ничего писать в MDB-файл. <br />2. Да, я знаю что если получить доступ к созданию/изменению файла \\server\share1\folder2\info.<strong>ldb</strong>, то всё будет работать.</p><p><span style="color: red">Есть какие-то идеи</span> как получить данные из файла MDB без изменения прав доступа к сетевому ресурсу?</p>]]></content>
			<author>
				<name><![CDATA[yuriy2000]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25753</uri>
			</author>
			<updated>2012-12-27T18:33:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67944#p67944</id>
		</entry>
</feed>
