Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.28;
Скачать: CL | DM;

Вниз

Создание DBF файлов   Найти похожие ветки 

 
ambhtr   (2007-06-19 15:07) [0]

Программно создаю DBF файл. Все работает. НО! Хочу создать DBF файл версии DBaseIII. Пишу код:

    TableName := nmDBF;
    TableType := ttDBase;
    TableLevel := 3;

а файл создается с Table Type = Visual DBase7, если смотреть из SQL Explorer-a, а устаревшие DBVier-ы вообще отказываются смотреть его. А для сторонних организаций - надо.
Так как все-таки создать DBaseIII ?


 
Desdechado ©   (2007-06-19 15:27) [1]

BDE Admin - Config - drivers - Native - Dbase - LEVEL=3


 
ambhtr   (2007-06-19 15:36) [2]


> Desdechado ©   (19.06.07 15:27) [1]

Спасибо! А программно это можно сделать, так чтобы общие настройки не менять все-таки.


 
Desdechado ©   (2007-06-19 15:38) [3]

переменная Session


 
Anatoly Podgoretsky ©   (2007-06-19 15:49) [4]

> ambhtr  (19.06.2007 15:36:02)  [2]

Программно нельзя, поскольку привилегия администратора.
Меняй значение у Сессии


 
ambhtr   (2007-06-19 16:15) [5]

Что-то все-таки не получается. Сделал как советовал:

> Desdechado ©   (19.06.07 15:27) [1]
> BDE Admin - Config - drivers - Native - Dbase - LEVEL=3

а таблица создается, все-равно Visual DBase7
Может еще что надо настроить?


 
Anatoly Podgoretsky ©   (2007-06-19 16:44) [6]

> ambhtr  (19.06.2007 16:15:05)  [5]

Значит у тебя еще что то есть в самой программе. Это могут быть и кривые компоненты.


 
Desdechado ©   (2007-06-19 16:53) [7]

> Программно создаю DBF файл
Приведенный код не полон. Что за компоненты? Что за драйвера?


 
ambhtr   (2007-06-19 17:11) [8]

За основу процедуры взял пример из 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 были стандартные.


 
Anatoly Podgoretsky ©   (2007-06-19 18:53) [9]

> ambhtr  (19.06.2007 17:11:08)  [8]

>     TableLevel := 3;     //Номер версии DBase

Ну и где тут сессия?


 
ambhtr   (2007-06-20 09:54) [10]

Спасибо

> Anatoly Podgoretsky ©   (19.06.07 18:53) [9]

Попробовал следующее:
после TableLevel := 3; поставил SessionName := "dBASEIII+";
Кроме SessionName в свойствах TTable не нашел.
При выполнении программы пишет: "Invalid session name dBASEIII+"


 
ambhtr   (2007-06-20 09:55) [11]

В Help-e не нашел, как же задавать SessionName... :о(


 
Desdechado ©   (2007-06-20 10:56) [12]

Почитай еще раз Desdechado ©   (19.06.07 15:38) [3]



Страницы: 1 вся ветка

Текущий архив: 2007.10.28;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
15-1190892322
Ega23
2007-09-27 15:25
2007.10.28
Что в редакторе кода означает


15-1190688286
Slider007
2007-09-25 06:44
2007.10.28
С днем рождения ! 25 сентября 2007 вторник


2-1191588575
olevacho_
2007-10-05 16:49
2007.10.28
Представление данных


4-1177871978
Плиз_не_пинайте
2007-04-29 22:39
2007.10.28
Нужен файл TLHelp32.dcu


2-1191411254
два_программера
2007-10-03 15:34
2007.10.28
Структура базы