Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.10.28;
Скачать: [xml.tar.bz2];

Вниз

Создание 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.043 c
2-1191160170
Мурзик
2007-09-30 17:49
2007.10.28
Возможно ли?


3-1182192180
Lavrenty
2007-06-18 22:43
2007.10.28
Не работает сообщение (из триггера)


15-1190734016
ProgRAMmer Dimonych
2007-09-25 19:26
2007.10.28
Вопрос по ресурсам


1-1187082607
bon
2007-08-14 13:10
2007.10.28
---


2-1191398280
Riply
2007-10-03 11:58
2007.10.28
Создание резервной копии для отдельного файла.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский