Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Как с помощью ADO открыть таблицу dBase (.dbf)


Автор: -Сергей- 14.11.2004, 07:48
В FoxPro 2.6 создал таблицу spr_str.dbf
На форму ставлю ADOTable, DataSource и DBGrid
У ADOTable значение ConnectionString = Provider=MSDASQL.1;Password=Password;Persist Security Info=True;User ID=Admin;Data Source=Файлы dBASE;Location=1049;Mode=ReadWrite;Initial Catalog=C:\MyBase\
TableName = spr_str
При установке значения Active=True у ADOTable появляется ошибка:
Цитата

[Microsoft][Драйвер ODBC dBase] Непредвиденная ошибка драйвера внешней базы данных (15877)

Помогите разобраться в чем дело?

Автор: Cashey 14.11.2004, 22:18
А почему не через BDE или ODBC?

Автор: -Сергей- 18.11.2004, 07:42
Цитата(Cashey @ 15.11.2004, 02:18)
А почему не через BDE или ODBC?

Почему не через BDE - мне нужно через ADO научиться, ведь ADO как раз и подключается к ODBC.
Если есть другой способ подключения к ODBC просвятите меня как?

Автор: Vit 18.11.2004, 14:43
Цитата
мне нужно через ADO научиться


Учись на MS Access - будет намного эффективнее

Цитата
ведь ADO как раз и подключается к ODBC


Сие есть неверно.

Цитата
Если есть другой способ подключения к ODBC просвятите меня как?


www.torry.net - пакет компонентов mODBC. Впрочем можно и напрямую через их API но это гемморойно, кстати BDE тоже обеспечивает возможность использования ODBC драйверов

Автор: mutex 19.11.2004, 05:43
Если еще есть индексный файл от FoxPro, воспользуйся специальным ADO провайдером "VFP OLE DB Provider" от Microsoft. Иначе будут проблемы с индексами. Как сделать - смотри Help файл провайдера.

Автор: -Сергей- 19.11.2004, 12:26
Vit, спасибо за совет, Acces уже пробовал, теперь dBase мучаю, потом на Paradox и Oracle перейду.
Ошибку исправил с помощью:
Код

try
   AdoTable1.Active := True;
exсept
   ShowMessage('Cannot open table');
   exit;
end;

Но во время проектирования, когда устанавливаю в Object Inspector`е Active=True появляется ошибка.
Цитата(mutex @ 19.11.2004, 09:43)
смотри Help файл провайдера

А где этот Help файл?

Автор: mutex 20.11.2004, 01:17
Виноват! Хелп для VFP8 и он огромен.

Вот образцы строк соединения:

1) через VFP OLE провайдер:
Provider=VFPOLEDB.1;Data Source=C:\MyBase;Password="";Collating Sequence=RUSSIAN

2) через VFP ODBC драйвер:
Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="Driver={Microsoft Visual FoxPro Driver};UID=;SourceDB=C:\MyBase;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=RUSSIAN;Null=Yes;Deleted=Yes;"

Открой свой DBF с индексом в FoxPro 2.6 и проверь Collation, т.е. набери команду disp stat после use ... order...
Если коллейт у тебя MACHINE, то замени RUSSIAN на него.

Автор: Гость_Алексей 23.11.2004, 13:55
соединение с DBF через ADO

Connection String содержит
sConn := 'Provider=Microsoft.Jet.OLEDB.4.0;Data SourceC:\MyBase\;'+
'Extended Properties=dBase III;Persist Security Info=False';

Автор: klonnn 14.5.2008, 13:57
Цитата

соединение с DBF через ADO

Connection String содержит
sConn := 'Provider=Microsoft.Jet.OLEDB.4.0;Data SourceC:\MyBase\;'+
'Extended Properties=dBase III;Persist Security Info=False';


Пробовал такое соединение.
Все равно не застрахованы от ошибки 15877 (мне показалось, что она возникает, если в dbf-файле есть поля типа float, хотя точно не уверен)

Xentrax на форуме http://www.sql.ru/forum/actualthread.aspx?tid=156445 предложил следующее:
Цитата

http://support.microsoft.com/kb/307455/EN-US/

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Xbase]
"BDE"=dword:00000002


Помогло! 
Но похоже этот ключ может быть использован и другим ПО

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)