![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание DBF файлов [D7, dBase, FoxPro]
ambhtr © (2007-06-19 15:07:00)Программно создаю DBF файл. Все работает. НО! Хочу создать DBF файл версии DBaseIII. Пишу код:
TableName := nmDBF;
TableType := ttDBase;
TableLevel := 3;
а файл создается с Table Type = Visual DBase7, если смотреть из SQL Explorer-a, а устаревшие DBVier-ы вообще отказываются смотреть его. А для сторонних организаций - надо.
Так как все-таки создать DBaseIII ?
Desdechado (2007-06-20 10:56:00) [1]Почитай еще раз Desdechado © (19.06.07 15:38) [3]
ambhtr (2007-06-20 09:55:00) [2]В Help-e не нашел, как же задавать SessionName... :о(
ambhtr (2007-06-20 09:54:00) [3]Спасибо
> Anatoly Podgoretsky © (19.06.07 18:53) [9]
Попробовал следующее:
после TableLevel := 3; поставил SessionName := 'dBASEIII+';
Кроме SessionName в свойствах TTable не нашел.
При выполнении программы пишет: "Invalid session name dBASEIII+"
Anatoly Podgoretsky (2007-06-19 18:53:00) [4]> ambhtr (19.06.2007 17:11:08) [8]
> TableLevel := 3; //Номер версии DBase
Ну и где тут сессия?
ambhtr (2007-06-19 17:11:00) [5]За основу процедуры взял пример из Help-a.
{Глобальные переменные}
var
tblDBF : TTable;
...
{В процедуре procedure TfrmMain.FormActivate(Sender: TObject); создаю}
tblDBF := TTable.Create(Self);
...
procedure TfrmMain.pCreateDBF(Sender: TObject);
var
ln_sDirDBF,
ln_nmFileFull: integer;
begin
OpenDialog.Title := 'Выберите папку и задайте имя для создаваемого DBF-файла';
OpenDialog.InitialDir := cDir;
OpenDialog.Filter := 'DBase files (*.dbf)|*.dbf';
OpenDialog.Options := [ofHideReadOnly,ofAllowMultiSelect];//,ofEnableSizing]; //Загрузка нескольких файлов
if OpenDialog.Execute then
begin
GetDir(0,sDirDBF);
ln_sDirDBF := length(sDirDBF);
nmFileFull := OpenDialog.FileName;
ln_nmFileFull := length(nmFileFull);
nmDBF := Copy(nmFileFull,ln_sDirDBF+2,(ln_nmFileFull-ln_sDirDBF));
with tblDBF do
begin
Active := False;
DatabaseName := sDirDBF;
TableName := nmDBF;
TableType := ttDBase;
TableLevel := 3; //Номер версии DBase
if tblDBF.Exists then
begin
//Если *.dbf- файл существует, то все записи его удаляются
Exclusive := True; // и он становиться пустым
EmptyTable;
Exclusive := false;
end
else //Если *.dbf- файл не существует, то он создается.
begin
{ The Table component must not be active }
{ First, describe the type of table and give }
{ it a name }
{ Next, describe the fields in the table }
with FieldDefs do begin
Clear;
with AddFieldDef do begin
Name := 'N_ID'; //Нумерация записей
DataType := ftInteger;
Required := True;
end;
with AddFieldDef do begin
Name := 'NmFile'; //Наименование файла-источника
DataType := ftString;
Size := 15;
end;
with AddFieldDef do begin
Name := 'DtFile'; //Дата создания файла-источника
DataType := ftDateTime;
end;
end; //with FieldDefs do begin
{ Call the CreateTable method to create the table }
CreateTable;
end; //if tblDBF.Exists then
end; // with tblDBF do
end; //if OpenDialog.Execute then
end; //procedure TfrmMain.pCreateDBF(Sender: TObject);
На счет драйверов, точно не знаю, но с таблицами DBaseIII, на компьютере работаю без проблем. Инсталляции WinXP и Delphi были стандартные.
Desdechado (2007-06-19 16:53:00) [6]> Программно создаю DBF файл
Приведенный код не полон. Что за компоненты? Что за драйвера?
Anatoly Podgoretsky (2007-06-19 16:44:00) [7]> ambhtr (19.06.2007 16:15:05) [5]
Значит у тебя еще что то есть в самой программе. Это могут быть и кривые компоненты.
ambhtr (2007-06-19 16:15:00) [8]Что-то все-таки не получается. Сделал как советовал:
> Desdechado © (19.06.07 15:27) [1]
> BDE Admin - Config - drivers - Native - Dbase - LEVEL=3
а таблица создается, все-равно Visual DBase7
Может еще что надо настроить?
Anatoly Podgoretsky (2007-06-19 15:49:00) [9]> ambhtr (19.06.2007 15:36:02) [2]
Программно нельзя, поскольку привилегия администратора.
Меняй значение у Сессии
Desdechado (2007-06-19 15:38:00) [10]переменная Session
ambhtr (2007-06-19 15:36:00) [11]
> Desdechado © (19.06.07 15:27) [1]
Спасибо! А программно это можно сделать, так чтобы общие настройки не менять все-таки.
Desdechado (2007-06-19 15:27:00) [12]BDE Admin - Config - drivers - Native - Dbase - LEVEL=3