Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

проблема соединения с базой (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'
(тоже проверь, лишние параметры, лишняя привязка к версии)


Наверх

Титульная страница Поиск, карта сайта Написать письмо