![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
проблема соединения с базой (dbase через ADO) на разных компах [D7, dBase, FoxPro]
NewGuest © (2004-09-28 16:13:00)Есть приложение для работы с таблицами dbase(*.dbf). Соединение с таблицами происходит через ADO. Строка соединения, такая:
ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;' +
'User ID=Admin;Data Source=' + FirmListPath + ';' +
'Mode=Share Deny None;Extended Properties=dBase III;Jet DB:' +
'System database="";Jet OLEDB:Registry Path="";' +
'Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=16;' +
'Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;' +
'Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";'+
'Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;'+
'Jet OLEDB:Don''t Copy Locale on Compact=False;' +
'Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False';
Так вот, на моем компе все работает, на другом работает, на третьем - а на 4-ом ни в какую. Пишет: неподдерживаемый формат данных. На всех компах - w2k+sp4.
Пробовал ставить mdac2_7, экспортировал ветку реестра с работающего, с данным приложением, компа, на неработающий (HKEY_LOCAL_MACHINE\Software\Microsoft\Jet) - все едино. Не работает. Так в чем же дело?
sniknik (2004-10-07 11:55:00) [1]> В этих пакетах есть Jet
в MDAC2_6 нет.
Aleksey V.P. (2004-10-07 11:41:00) [2]В начале года делал проект, D7, ADO dbf. Намаялся сильно. В результате, выяснил, что для нормальной работы программы достаточно DNS файлов, название таблиц не больше 8 символов (это если BDE нет), для Win9x надо MDAC2_5_sp3, для WinNT и далее MDAC2_6. В этих пакетах есть Jet, который собственно и работает с dbf и прочим калом на эту тематику.
sniknik (2004-10-07 11:33:00) [3]> А в чём сложность?
"сложности" в составлении нет ты прав, сложности начнутся после.
сдесь используется подключение к ODBC "стандартный" DSN.
сложность первая он вовсе не обязателен (!!!) на машине, его могут удалить или не поставить.
вторая даже если он есть название его в разных виндах разное (в английской это "Files dBase")
это обходится простым указанием драйвера вместо DSN
но
возникает третья сложность одна версия ODBC драйвера вовсе не обязана понимать настройки другой, а указывать их приходится ведь ему неоткуда брать начальные значения (DSN то нет, не указан), а дефаултные могут не подойти. (не часто но это нарываются, проскакивали вопросы на форуме)
и сложность четвертая непреодолимая ;о), с некоторых пор мелкософт не развивает ODBC, но поддержку старого делать обязан, наверное поэтому (думаю так) было сделан "ход конем", odbc-шные драйвера стали заменятся jet-ом на делающие простой редирект на тот же jet... у которого как было сказано "особые" отношения с BDE.
все это вместе не делает это (и другие подобные) решения универсальными (как обычно преподносят), если у кого работает во многих местах то только по счастливой случайности. универсально носить все используемое с собой (инсталяшка с BDE, включение движка в код, dll, ... и т.д.).
iZEN (2004-10-07 10:04:00) [4]http://delphimaster.ru/cgi-bin/forum.pl?id=1097122070&n=3
Skyle © (07.10.04 08:35) [1]
А в чём сложность?
Например
Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DSN=Файлы dBASE;DBQ=D:\ByDBFList;DefaultDir=D:\MyDBFList;DriverId=533;MaxBufferSize=2048;PageTimeout=5;"
Anatoly Podgoretsky (2004-10-07 09:03:00) [5]Не хороший путь выбран для dBase III
ADO-JET-BDE два звена лишних, к тому же кроме этого на некоторых компьютерах придется еще устанавливать и DCOM итого 13 метров инсталяция, а работа все равно пойдет через БДЕ (3.5 мб). Решение или отказ от двух первых звеньев или отказ от JET-BDE в пользу какого либо другого движка.
sniknik (2004-10-07 08:43:00) [6]можно. есть компоненты работающие с dBase есть определенные условия при которых ADO со "спец." ;о) строкой сработает. есть провайдеры(могут быть, или если напишут будут) которых можно доставить. в принципе и ISAM-ы в jet-е "нарашиваемые", доставляются (правда тоже не видел таких).
в этом случае стандартный jet, который так работает в 2х вариантах, на запись с BDE.
реально же, уже никому не нужно писать чтото что будет заранее "древнее навоза от мамонта", имею ввиду производителей драйверов. тем более если уже есть BDE, и неплохо справляется кстати.
iZEN (2004-10-07 08:21:00) [7]Неужели нельзя без BDE?
Мне здесь говорят, что необходима спец.сформированная строчка для ConnectionString...
sniknik (2004-09-29 11:13:00) [8]> я думал это самостоятельный движок, а тут надо еще BDE ставить.
если на чтение то хватит, того ограниченого, что в поставке jet-а, а на запись не хватит, он на запись не работает, но если стоит полная версия BDE (нормальная! никаких dll-ек) то используется она. (преимущество полных установок, один раз ставится, все используют, и глюков не имеют!)
NewGuest (2004-09-29 10:56:00) [9]Поставил BDE - все заработало. Видимо, пробел в образовании - я думал, если я использую ADO, то BDE мне без надобности. Хотя надо признать, что на всех компах, где я использовал свои приложения с подключением к базам через ADO BDE уже было - есть же старые проги. Значение сему факту, я, до последнего времени не придавал - как оказалось зря. А тут еще запись в реестре HKLM\Software\Microsoft\Jet\4.0\Engines\XBase
win32="C:\WINNT\System32\msxbde40.dll" - я думал это самостоятельный движок, а тут надо еще BDE ставить. :-( Может ему надо одну какую-то dll-ку подсунуть вместо целого BDE, а?
KSergey (2004-09-29 06:06:00) [10]Пока пропихнул пост - давно уже ответили, оказывается ;)
KSergey (2004-09-29 06:04:00) [11]А с dBase - jet работает???
А в mdac2_7 изначально jet уже не входит. Она одельно идет (искать где-то там же). Либо предыдущую версию поставить
sniknik (2004-09-28 16:58:00) [12]mdac2_7 не содержит jet (подключение к нему) т.что это было бессмысленно.
поиши на мелкософте
Jet40SP6_W2K.exe (или поновее SP7/8)
> на третьем - а на 4-ом ни в какую.
на сапись работаеш? BDE на нем стоит?
строку можно прпроще
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ FirmListPath +';Mode=Share Deny None;Extended Properties=dBase III;Persist Security Info=False'
(тоже проверь, лишние параметры, лишняя привязка к версии)