Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.18;
Скачать: [xml.tar.bz2];




Вниз

Вопрос по ADO+ODBC+Paradox 


TriNeT   (2002-03-25 06:36) [0]

Доброго времени суток.
Опять прошу помощи у всезнающего ALL. Проблема с сабжем состоит в следующем:

Имеется две базы данных (Paradox) на одном из файловых серверов. Эти базы ведутся своими приложениями. И имеется моя программа, которой необходимо периодически обращаться к этим базам, чтобы считать некоторую информацию. Обращение происходит в режиме read-only.

В силу определенных обстоятельств мне приходится использовать ADO а не BDE (хотя я на эти обстоятельства вовсе даже не жалуюсь). Так вот, чтобы достучаться до Paradox-таблиц через ADO мне приходится использовать ODBC (по-моему других провайдеров в стандартном комплекте нет, а другими лучше не пользоваться). Создаю системный DSN, связываю его с драйвером Microsoft Paradox Driver, указываю сетевой каталог (насколько я понимаю, это путь к файлу pdoxusrs.net). Остальные параметры, как то - путь к таблицам, определяю в своей программе и динамически формирую ConnectionString в TADOConnection.

При тестировании на локальной машине, все проходит нормально, устанавливается соединение с базой, данные читаются и все такое. Ну это и понятно, поскольку я и есть единственный юзер для этой базы. Но как только переносишь испытания на реальную сеть, при попытке соединения с базой вываливается exception с номером ошибки 11270 и описанием, информативным, как инструкция по использованию туалетной бумаги: "Непредвиденная ошибка драйвера". Описания этой ошибки найти не смог. Единственное, что я выяснил - точно такая же ошибка выскакивает при использовании любой программы просмотра таблиц БД (в частности, "родной" офисный msqry), причем в DSN я указываю ВСЕ необходимые параметры.

Из-за этого у меня ощущение, что то-ли я неправильно указываю параметры в DSN, то ли проблема как-то связана с файлом Pdoxusrs.net

Люди, кто сталкивался с подобным - поделитесь опытом. А кто не сталкивался, может быть подкинете идеюку-другую? Может быть я просто зациклился и не вижу того, что лежит на поверхности. Буду благодарен всем, кто откликнется!



sniknik   (2002-03-25 09:08) [1]

Попробуй все же прямую связку без ODBC.
строка подключения к Paradox вполне стандартна :).
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\;Extended Properties=Paradox 4.0;Persist Security Info=False

Выдержка из Хелпа. Номера 11270 не нашол, было бы конкретней но можно еще в MSDN поискать.
Непредвиденная ошибка драйвера внешней базы данных <номер ошибки>. (Ошибка 3275)
Драйвер внешней (указанной) базы данных возвращает ошибку. Такие ошибки являются результатом попытки выполнения операции, не поддерживаемой базами данных этого типа.

т.е. по сути у тебя какаято операция поддерживается локальным драйвером и не поддерживается сетевым.



TriNeT   (2002-03-25 10:48) [2]

2 sniknik ©

Спасибо за то, что откликнулись.
Попробовал. Введя дословно ту ConnectionString, которая была указана в примере (предварительно естественно заменив пути), при проверке подключения получил, как тот фашист - гранату, следующее сообщение:
[Ошибка Microsoft Data Link]
"Сбой проверки подключения из-за ошибки при инициализации поставщика. Невозможно найти устанавливаемый ISAM"
Проверял даже не на сети, а на локальном варианте.

Вообще-то я очень удивился, увидев, что вы предлагаете использовать Майкрософтский Jet, который вроде-бы предназначен для доступа к ACCESS"у, в качестве провайдера для Paradox. Но поскольку обратного никто не утверждал, то наверное дело в другом.



sniknik   (2002-03-25 11:24) [3]

Не все правильно. просто Jet кроме Access еще кое чего поддерживает смотри в реестре путь.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\ISAM Formats

а со строкой извини по памяти писал вот рабочая из программы выдернул

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\;Mode=ReadWrite;Extended Properties=Paradox 4.x;Persist Security Info=False

на самом деле и та будет работать если поставить 4.x вместо 4.0



TriNeT   (2002-03-26 08:59) [4]

2 sniknik ©

Доброго времени суток!
Проверить удалось пока только в локальном варианте. ПОЛУЧИЛОСЬ!!!! Правда если выставлять дополнительно флаг "Share deny none", то вываливается exception с сообщением о невозможности завершить операцию и еще чего-то там. В общем-то я пока не могу оценить, нужен ли мне этот флаг, просто в самом начале столкнулся с такой ситуацией.
Пока не могу испытать на реальной сети, но думаю сегодня выкрою время и проверю.
Сорри за сомнения, я честно о таких возможностях Jet"а не знал. А если не секрет, откуда такие знания? ;)

Огромное спасибо за помощь. О результатах сетевых испытаний напишу позже.



TriNeT   (2002-03-27 05:12) [5]

2 sniknik ©

Хочется витеевато выругаться, но не буду. Оказывается трабл вовсе не в сабже, а в сервере, о технических характеристиках я как-то не догадывался. В общем-то по мощности сервером его нельзя назвать даже с натяжкой. Короче говоря мои обращения к базам на нем почему-то оказываются последней соломинкой на спине верблюда. Перенеся базы и перенастроив линки на другой сервер, все сразу заработало, причем как ODBC, так и тот способ, который вы мне показали.
В общем сабж снимается, но теперь использую Ваш подход.
Еще раз спасибо.




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.18;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.018 c
1-57707           Delph                 2002-04-08 12:29  2002.04.18  
Ошибка при динамическом вызове DLL


1-57694           Rammst                2002-04-08 06:50  2002.04.18  
Kylix


1-57798           Yuriy                 2002-04-06 18:24  2002.04.18  
как определить имя компонента вызвавшего событие


6-57827           OGR                   2002-02-06 12:01  2002.04.18  
Как определить, что страница полностью загрузилась в TWebBrowse или EmbeddedWB?


1-57820           SeF                   2002-04-07 02:33  2002.04.18  
SSRROOCCHHNNOO