Difference between revisions of "Guide for usage of Tdbf component/ru"

From Free Pascal wiki
Jump to navigationJump to search
Line 12: Line 12:
 
=== Начало - создание новой таблицы ===
 
=== Начало - создание новой таблицы ===
 
Подробности создания таблицы описываются в статье [[http://wiki.lazarus.freepascal.org/Lazarus_Tdbf_Tutorial/ru#.D0.9A.D0.B0.D0.BA_.D1.81.D0.BE.D0.B7.D0.B4.D0.B0.D1.82.D1.8C_.D0.BD.D0.BE.D0.B2.D1.83.D1.8E_.D1.82.D0.B0.D0.B1.D0.BB.D0.B8.D1.86.D1.83_.D0.B1.D0.B0.D0.B7.D1.8B_.D0.B4.D0.B0.D0.BD.D0.BD.D1.8B.D1.85]]
 
Подробности создания таблицы описываются в статье [[http://wiki.lazarus.freepascal.org/Lazarus_Tdbf_Tutorial/ru#.D0.9A.D0.B0.D0.BA_.D1.81.D0.BE.D0.B7.D0.B4.D0.B0.D1.82.D1.8C_.D0.BD.D0.BE.D0.B2.D1.83.D1.8E_.D1.82.D0.B0.D0.B1.D0.BB.D0.B8.D1.86.D1.83_.D0.B1.D0.B0.D0.B7.D1.8B_.D0.B4.D0.B0.D0.BD.D0.BD.D1.8B.D1.85]]
Я хочу уточнить некоторые особенности, с которыми мне пришлось столкнуться.
+
Я хочу уточнить некоторые особенности, с которыми мне пришлось столкнуться.
 +
Например, нам необходимо создать таблицу следующей структуры, если она не существует (пример взят из реальной программы):
 +
 
 +
procedure CheckAndCreate;
 +
var path : String;
 +
begin
 +
  path:=ExtractFilePath(Application.EXEName);
 +
  //Проверка существования базы данных
 +
  if not DirectoryExists(Path+DirectorySeparator+'Base') then
 +
        CreateDir(Path+DirectorySeparator+'Base');
 +
  if not FileExists(Path+'Base'+DirectorySeparator+'tarif.dbf') then begin
 +
    TarifDbf.TableLevel := 4;
 +
    TarifDbf.FilePathFull := Path+'Base';
 +
    TarifDbf.TableName := 'tarif.dbf';
 +
    TarifDbf.FieldDefs.Add('NLZ',ftInteger,2);//[0]код учреждения
 +
    TarifDbf.FieldDefs.Add('NOTD',ftInteger,2);//[1]код отдела
 +
    TarifDbf.FieldDefs.Add('DOLGNOST',ftString,20);//[2]название должности
 +
    TarifDbf.FieldDefs.Add('PERSONAL',ftInteger,2);//тип персонала
 +
    TarifDbf.FieldDefs.Add('KODKAT',ftInteger,2);//[3]квалификацоонная категория (розряд)
 +
    TarifDbf.FieldDefs.Add('DATAKAT',ftString,13);//дата, до которой действительна категория
 +
    TarifDbf.FieldDefs.Add('FIO1',ftString,35);//[4]Фамилия, имя, отчество сотрудника
 +
    TarifDbf.FieldDefs.Add('TARIFRZ',ftInteger,2);//[5]Тарификационній разряд (1..25)
 +
    TarifDbf.FieldDefs.Add('OKLAD1',ftFloat,10);//[6]Должносной оклад по тарифному разряду
 +
    TarifDbf.FieldDefs[TarifDbf.FieldDefs.Count-1].Precision := 2;//<=
 +
    TarifDbf.FieldDefs.Add('DOLJA1',ftFloat,5);//[16]доля ставки
 +
    TarifDbf.FieldDefs[TarifDbf.FieldDefs.Count-1].Precision := 2;//<=
 +
    TarifDbf.FieldDefs.Add('FOND',ftFloat,11);//[27] месячный фонд з/п
 +
    TarifDbf.FieldDefs[TarifDbf.FieldDefs.Count-1].Precision := 2;//<=
 +
    TarifDbf.CreateTable;
 +
  end;
 +
  TarifDbf.FilePathFull := Path+'Base';
 +
  TarifDbf.TableName := 'tarif.dbf';
 +
  TarifDbf.Active := true;
 +
end;
 +
 
 +
Обратите внимание на фрагменты кода, отмеченные //<=

Revision as of 15:27, 20 March 2008

Учебник по использованию компонента Tdbf

Обзор

Этот учебник описывает особенности использования компонента Tdbf совместно со средой разработки Lazarus.

Что нам понадобится

Этот документ был написан с версией Free Pascal Compiler 2.2.1 /Lazarus 0.9.25, компонент Tdbf установлен по умолчанию.

Другая документация

Существует также другая документация по работе с этим компонентом. Официальная документация в формате PDF доступна на SourceForge. Также мой перевод статьи по использованию этого компонента [1].

Начало - создание новой таблицы

Подробности создания таблицы описываются в статье [[2]] Я хочу уточнить некоторые особенности, с которыми мне пришлось столкнуться. Например, нам необходимо создать таблицу следующей структуры, если она не существует (пример взят из реальной программы):

procedure CheckAndCreate;
var path : String;
begin
 path:=ExtractFilePath(Application.EXEName);
 //Проверка существования базы данных
 if not DirectoryExists(Path+DirectorySeparator+'Base') then 
        CreateDir(Path+DirectorySeparator+'Base');
  if not FileExists(Path+'Base'+DirectorySeparator+'tarif.dbf') then begin
   TarifDbf.TableLevel := 4;
   TarifDbf.FilePathFull := Path+'Base';
   TarifDbf.TableName := 'tarif.dbf';
   TarifDbf.FieldDefs.Add('NLZ',ftInteger,2);//[0]код учреждения
   TarifDbf.FieldDefs.Add('NOTD',ftInteger,2);//[1]код отдела
   TarifDbf.FieldDefs.Add('DOLGNOST',ftString,20);//[2]название должности
   TarifDbf.FieldDefs.Add('PERSONAL',ftInteger,2);//тип персонала
   TarifDbf.FieldDefs.Add('KODKAT',ftInteger,2);//[3]квалификацоонная категория (розряд)
   TarifDbf.FieldDefs.Add('DATAKAT',ftString,13);//дата, до которой действительна категория
   TarifDbf.FieldDefs.Add('FIO1',ftString,35);//[4]Фамилия, имя, отчество сотрудника
   TarifDbf.FieldDefs.Add('TARIFRZ',ftInteger,2);//[5]Тарификационній разряд (1..25)
   TarifDbf.FieldDefs.Add('OKLAD1',ftFloat,10);//[6]Должносной оклад по тарифному разряду
   TarifDbf.FieldDefs[TarifDbf.FieldDefs.Count-1].Precision := 2;//<=
   TarifDbf.FieldDefs.Add('DOLJA1',ftFloat,5);//[16]доля ставки
   TarifDbf.FieldDefs[TarifDbf.FieldDefs.Count-1].Precision := 2;//<=
   TarifDbf.FieldDefs.Add('FOND',ftFloat,11);//[27] месячный фонд з/п
   TarifDbf.FieldDefs[TarifDbf.FieldDefs.Count-1].Precision := 2;//<=
   TarifDbf.CreateTable;
  end;
  TarifDbf.FilePathFull := Path+'Base';
  TarifDbf.TableName := 'tarif.dbf';
  TarifDbf.Active := true;
end;

Обратите внимание на фрагменты кода, отмеченные //<=