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

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

Работа с DBF [D4, D5, D6, dBase, FoxPro, Paradox]


Ericman ©   (2002-10-17 09:16:00) 

Как брать DBF файлы из разных директорий? (Без BDE)


sniknik   (2002-10-17 16:16:00) [1]

не получалось возможно потому что свойство компонента ADODataset (квери) ParamCheck стоит в True. и тогда при попытке записать запрос в CommandText например
select * from C:\FKEYS.DBF
все после : (\FKEYS.DBF) будет интерпретироватся как параметр.
кстати это не только в десигн действует чтобы выполнять такие запросы (с : но без параметров) ParamCheck надо отключать!

Vlad2 я ответил.


Vlad2   (2002-10-17 15:39:00) [2]

> sniknik
Да, да, да. Никак у меня не получалось динамически менять размещение dbf файлов, если connectionString назначать в designTime. А почему так, никто не знает.
sniknik ! Я Вам там письмо послал.


sniknik   (2002-10-17 15:29:00) [3]

Vlad2 (17.10.02 15:21)
Все эти присваивания, за исключением connectionString, выполняются во время разработки, визуально.

все верно но и connectionString не обязательно в рантайме присваивать можно и "визуально" в компоненте TADOConnection.

Vlad2 тут скорее имеет ввиду что тебе придетсятак делать чтобы путь менять, изза того что Driver Microsoft Visual FoxPro не умеет в другие места смотреть.


Vlad2   (2002-10-17 15:21:00) [4]

У ADOTableDbf есть свойство ADOTableDbf.Connection. Нужно:
ADOConnectionDbf.ConnectionString := "...";
ADOTableDbf.TableName := tableDbfName;
ADOTableDbf.Connection := ADOConnectionDbf;
DataSourseDbf.DataSet := ADOTableDbf;
DBGrid.Datasourse := DataSourseDbf;
Все эти присваивания, за исключением connectionString, выполняются во время разработки, визуально.
А про OPENROWSET() забудь, это я не сразу понял вопрос.


sniknik   (2002-10-17 15:21:00) [5]

OPENROWSET() это из MSSQL, не ищи.
через ADO, сторка
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\;Extended Properties=dBase IV;Persist Security Info=False
возможны запросы
SELECT * FROM 1SACCS //это с Data Source=D:\1SACCS.DBF возьмет
SELECT * FROM D:\Test\CARDRATE.DBF
SELECT * FROM C:\FKEYS.DBF
(Driver={Microsoft Visual FoxPro} так похоже не умеет)

Halcyon точно неплохая штучка, и исходники есть можно поправить "под себя". (правил только индексы для клипера несовпадало построение)


Vovchik_A   (2002-10-17 15:03:00) [6]

Halcyon-ом недавно пользовался. Без БДЕ все чудесно пашет


ericman   (2002-10-17 15:00:00) [7]

Что-то я опять не понял. Открыли мы таблицу TableDbf.Open. А где используется выше приведенный запрос?
По функции OPENROWSET() нигде не могу найти помощь.

Не делаю через Advantage потому, что не хочется зависеть от сторонних разработчиков.


Vlad2   (2002-10-17 13:56:00) [8]

> Ericman
извини за паузу, меня здесь опять отвлекли. Нужно на клиенте сформировать строку для ADOConnectionDbf.ConnectionString.
ADOConnectionDbf: TADOConnection
Например, так:
ADOConnectionDbf.ConnectionString :=
"Provider=MSDASQL.1;"+
"Persist Security Info=True;"+
"Driver={Microsoft Visual FoxPro Driver};" +
"Exclusive=No;SourceType=DBF;" +
"SourceDB=" + initialCatalog;

ADOTableDbf.TableName := tableDbfName;

Здесь initialCatalog и tableDbfName соответственно путь и имя dbf файла, которые можно получить от OpenDialog. Проверено для win2000 с mdac2.5

Далее выполняешь ADOTableDbf.Open и т.д.


perov   (2002-10-17 13:26:00) [9]

для дбф формата есть библиотеки прямого доступа, например Advantage, Halcyon (не требует никаких dll)


Ericman   (2002-10-17 12:05:00) [10]

а пример какой-нибудь можно?


Vlad2   (2002-10-17 09:55:00) [11]

можно через DSN:
SELECT *
FROM OPENROWSET("MSDASQL",
"External VFP"; "sa"; "",
"SELECT * FROM anyTable")
здесь External VFP - имя DSN

а можно указать параметры явно
SELECT * from
OPENROWSET("MSDASQL",
"Driver={Microsoft Visual FoxPro Driver};UID=;SourceDB=E:\Travel\External;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Russian;Null=No;Deleted=Yes;",
"SELECT * FROM anyTable")

в обоих случаях anyTable - имя dbf файла


Ericman   (2002-10-17 09:48:00) [12]

Через ADO пробовал
делал такой запрос: "SELECT * FROM d:\dbf\predpr.dbf"
не выходит.


_lex_   (2002-10-17 09:30:00) [13]

может ADO компоненты помогут ?


Наверх

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