Laboratorium 7: Konfiguracja i dynamiczne tworzenie tabeli w

Transkrypt

Laboratorium 7: Konfiguracja i dynamiczne tworzenie tabeli w
Laboratorium 7: Konfiguracja i dynamiczne tworzenie tabeli w
kodzie programu
dr inż. Marcin Witczak
Instytut Sterowania i Systemów Informatycznych, Uniwersytet Zielonogórski
1
Tworzenie klasy konfiguracyjnej
Zadaniem jest utworzenie klasy umożliwiajacej
˛ wykonywanie działań zwiazanych
˛
z manipulacja˛ katalogiem bazy
danych. W celu wprowadzenia kodu klasy należy z menu File|New wybrać opcj˛e Unit, a nast˛epnie wprowadzić
instrukcje:
type TKonfig=class
private
Katalog: string;
public
function PodajKatalog:string;
procedure UstawKatalog;
procedure OdczytajKatalog;
procedure ZapiszKatalog;
end;
var Cfg:TKonfig=nil;
implementation
uses FileCtrl,IniFiles,SysUtils;
//-----------------------------------function TKonfig.PodajKatalog:string;
begin
result:=Katalog;
end;
//-----------------------------------procedure TKonfig.UstawKatalog;
begin
SelectDirectory(’Podaj katalog’,’’,Katalog);
end;
//-----------------------------------procedure TKonfig.OdczytajKatalog;
var Ini:TIniFile;
begin
Ini:=TIniFile.Create(GetCurrentDir+’\cfg.ini’);
try
Katalog:=Ini.ReadString(’Katalogi’,’Katalog bazy’,’’);
if Katalog = ’’ then
begin
UstawKatalog;
ZapiszKatalog;
end;
finally
Ini.Free;
end;
end;
//------------------------------------
1
procedure TKonfig.ZapiszKatalog;
var Ini:TIniFile;
begin
Ini:=TIniFile.Create(GetCurrentDir+’\cfg.ini’);
try
Ini.WriteString(’Katalogi’,’Katalog bazy’,Katalog);
finally
Ini.Free;
end;
end;
//-----------------------------------initialization
if Cfg = nil then Cfg:=TKonfig.Create;
finalization
Cfg.Free;
Cfg:=nil;
end.
1. Utworzyć moduł danych i umieścić na nim komponenty TTable i TDataSource, a nast˛epnie ustawić właściwość DataSet komponentu TDataSorce.
2. Do fizycznego utworzenia tabeli służy metoda CreateTable() komponentu TTable, poprzedzona jednak szeregiem czynności wst˛epnych, tzn.
Przypisanie właściwości DataBaseName odpowiedniego katalogu lub aliasu
Nadanie zbiorowi danych unikalnej nazwy, przez przypisanie tej nazwy właściwości TableName.
Określenie typu tabeli: ttDefault, ttParadox, ttDBase, ttASCII. ttDefault spowoduje określenie typu na
podstawie rozszerzenia nazwy pliku, zawartej w TableName.
Zdefiniowanie kolejnych pól struktury tabeli za pomoca˛ metody TTable.FieldDefs.Add(). Każde wywołanie
spowoduje utworzenie jednego pola i zawiera cztery parametry określajace
˛ kolejno:
• nazw˛e pola,
• typ pola w postaci TFieldType,
• rozmiar pola - istotny jedynie dla pól typu String i Memo,
• wymaganie wypełnienia pola - wartość true oznacza, że pole nie może pozostać puste.
Opcjonalnie - jeżeli tabela ma być wyposażona w indeksy, należy określić ich zestaw i struktur˛e, za pomoca˛ kolejnych wywołań TTable.IndexDefs.Add(). Każde z tych wywołań zawiera nast˛epujace
˛ parametry:
• nazw˛e jednoznacznie identyfikujac
˛ a˛ indeks,
• oddzielone średnikami nazwy pól indeksowych, w kolejności wyst˛epowania w indeksie,
• opcje zwiazane
˛
z indeksem - zbiór zawierajacy
˛ elementy spośród nast˛epujacych:
˛
ixPrimary, ixUnique,
ixDescending, ixExpression, ixCaseInsensitive.
Wywołanie metody TTable.CreateTable().
3. W celu programowej realizacji powyższych zadań należy przejść do modułu danych, a nast˛epnie do procedury zwiazanej
˛
z jego tworzeniem. Pod słowem implementation wprowadzić kod umożliwiajacy
˛ użycie
modułu Konfig.
4. Wypełnić procedur˛e obsługi zdarzenia nast˛epujacym
˛
kodem:
Cfg.OdczytajKatalog;
T_Dane.DatabaseName:=Cfg.PodajKatalog;
T_Dane.TableName:=’osoby.db’;
T_Dane.TableType:=ttParadox;
try
T_Dane.Open;
except
with T_Dane.FieldDefs do
2
begin
Add(’ID’,ftAutoInc,0,false);
Add(’Imie’,ftString,15,false);
Add(’Nazwisko’,ftString,15,false);
end;
with T_Dane.IndexDefs do
begin
Add(’’,’ID’,[ixPrimary,ixUnique]);
end;
T_Dane.CreateTable;
T_Dane.Open;
end;
3

Podobne dokumenty