Кой драйвер да избера
какъв доставчик на данни трябва да бъде избран в свойството ConnectionSrting на компонента ADOConnection за свързване на dbf файл? Избирам Microsoft OLE DB Provider за ODBC драйвери, след което в раздела за връзка избирам източник на данни „dBase Files“
низът изглежда така - Provider=MSDASQL.1;Persist Security Info=False;Data Source=dBASE Files
но когато се опитам да стартирам програмата, получавам съобщение със следната грешка проектът хвърли изключение на класа EOleEsception със съобщението [Microsoft][ODBC драйвер dBse]Неочаквана грешка в драйвера на външна база данни (15877) Процесът е спрян.
Доставчик=MSDASQL.1;Постоянна информация за сигурност=False;Източник на данни=dBASE файлове;Първоначален каталог=C:\
dbf файлът не е индикатор, dBase, Foxpro, Foxpro visual, clipper, clarion (вероятно), ADS и много други имат dbf разширението (и частично се разбират помежду си)
проблеми при свързване към dbf чрез Provider=MSDASQL.1, въпреки че имаше dBase, Foxpro файлове, Foxpro visual, clipper
има проблеми с кодировките - за visual Foxpro използвам Provider=VFPOLEDB.1
грешки понякога се появяват на 2000-ke, но на XP след инсталирането на MDAC 8.0 изглежда все още не се оплакваме
2sniknik Разбирам. но точният тип не е известен. и машинката е 100% и лисица досовска също. 2Nick_GM Да, това е, което правя.. по някакъв начин проблемът е някъде другаде.. Вече виждам решението.
Направих го с доставчика Microsoft.Jet.OLEDB.4.0 и точката на инициализация е Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\urban\delphi\projects\db_win\111\;Extended Properties=dBASE IV;Persist Security Info=False но с този ред Provider=MSDASQL.1; Запазване на информацията за сигурност= False; Източник на данни = ФайловеdBASE;Първоначален каталог=D:\urban\delphi\projects\db_win\111\ не работи по някаква причина.. Затворих дисплея на формуляра
с ADOTable1 do begin Active:=false; TableName:="MR47"; Open; end; ето как работи
2 Nick_GM - не забелязах съобщението ви веднага. в дизайнера като направя таблицата активна - отваря се. и при зареждане на програмата - грешка (
2 Nick_GM - не забелязах съобщението ви веднага. в дизайнера като направя таблицата активна - отваря се. и при зареждане на програмата - грешка (
Тук достъп чрез мини BDE
Доставчик=MSDASQL.1;Постоянна информация за сигурност=False;Източник на данни=dbASE файлове;Първоначален каталог=D:\urban\delphi\projects\db_win\111\
И тук достъпът е чрез ODBC драйвера, може да е същият mini BDE или може да е съвсем различен драйвер, това е какъв късмет.
2Анатолий Подгорецки благодаря. чрез този мини BDE изглежда работи, но възможно ли е да бъда по-подробен за - "колко късметлия" имам предвид? И)
> по-фино за - "какъв късмет" имам предвид? jet с dBase работи или през този mini BDE, или с нормалния, в зависимост от това как е инсталиран. и ODBC, в зависимост от версията (инсталацията), работи или чрез собствен драйвер, или през същия jet, но jet. вижте ;o)).
> и машинката е 100% и лисица досовска също. с DOS fox не е проблем, но с машинката могат. например clipper позволява и разбира > 255 дълго (не поле за бележка!), това ще се срещне, нито един драйвер няма да разбере правилно (или "отрязва" или изпада с неопределена грешка). (ситуацията е още по-зле с индексите ;o)))
Ако с JET все още можете да разчитате на този мини драйвер, можете също да го смените, ако желаете, но с ODBC това е редовна ситуация, когато дявол знае какъв драйвер си струва. Това е първият, а ето и вторите „dbase файлове“, върху които се намираБългарска версия на Windows, но на английски например този псевдоним ще е dBase Files и програмата няма да работи.
Мисля, че тези две неща са достатъчни.
В допълнение, повечето ODBC драйвери са криви :-) или поне много ограничени и със собствени проблеми.
Бих ви посъветвал да използвате BDE за dBase файлове, като най-ефективния двигател с отстраняване на грешки. И оставете ODBC и ADO за други бази.
> Това е първото, но второто "dbASE файлове" е в българската версия на Windows, а на английски например е > псевдонимът ще бъде dBase Files и програмата няма да работи. е, това не е най-"ужасното" нещо ;o), в крайна сметка можете да посочите името на драйвера вместо DSN името, то е непроменено.