Difference between revisions of "Guide for usage of Tdbf component/ru"
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;
Обратите внимание на фрагменты кода, отмеченные //<=