Delphi 2.0
5. óra
Adatbáziskezelés II.
Feladat: Hallgatói nyilvántartás karbantartása nyomógombok segítségével.
Mezok: Név , Születési dátum, Szem.ig. szám, tankör, ösztöndíj.
Készítsünk egy menübol hívható formot, amin lapozgatni lehet az adatok között.
Megoldás: Válasszuk ki a Database menüpontból az Explore pontot. Erre azért van szükség, hogy egy álnevet (alias) hozzunk létre. Kattintsunk a Database objektumra és nyomjuk meg az egér jobb szemét. Válasszuk ki a New menüpontot. Válasszuk ki az alias típusát (STANDARD) és nyomjuk meg az ok gombot. Írjuk be az új álnevet (ora5)! A Definition részben adjuk meg azt a könyvtárat, amire az alias mutat (path), majd állítsuk be a Default Drivert (DBASE). Kattintsuk a bal oldalon a Database objektumra, majd nyomjuk meg az egér jobb szemét és az apply menüpontra kattintsunk, hogy a beállításokat rögzítse. Ezután zárjuk be a Database Explorer-t.
Indítsuk el a Program files\Borland\Database Desktop könyvtárból a DBD32 (Database Desktop) programot, aminek segítségével tudunk táblákat létrehozni. Állítsuk be a munkakönyvtárat a leendo adataink könyvtárára a File/Working Directory menüpont segítségével. Az aliases-nél pedig válasszuk ki az elobb beállított álnevünket (ora5). És OK gomb. A táblák létrehozásához a File/New/Table menüpontra van szükségünk. Válasszuk ki a kívánt tábla típust (dBASE IV). Írjuk be az elso mezo nevét, a típusát a szóközre kinyíló listából választhatjuk ki, a hosszát kell még megadnunk, a tizedesjegyek számát.
Field Name | Type | Size | Dec |
NEV | C | 25 | |
SZULDAT | D | ||
SZEMIGSZAM | C | 8 | |
TANKOR | C | 10 | |
OSZTONDIJ | N | 4 |
Indexet állítsuk be a define gomb lenyomásával (NEV, TANKOR). Az indexelni kívánt mezore kell állni és OK. Ezután már csak a nevet kell megadni ahogyan hivatkozni szeretnénk rá. Ezután Save as... és megadjuk a nevét a táblának: hallgatók (az alias megadására is figyeljünk!).Ezután kiléphetünk a Database Desktop-ból.
Hozzunk létre egy adatmodult (File/New Data Module). A Name tulajdonságához írjunk be egy nevet (adatmodul), majd mentsük el abba a könyvtárba, ahova a táblát is mentettük adatok néven. Helyezzünk el rajta a Data Access palettáról egy Table és egy Data Source komponenst, majd a jellemzoket az alábbiak szerint állítsuk be:
Komponens | Jellemző | Érték |
Table1 | Name | tblhallgatok |
DatabaseName | ora5 (az az álnév, amit létrehoztunk) | |
TableName | hallgatók | |
Active | True (ilyenkor tervezés közben is látszanak az adatok) | |
IndexName | Nev (ami szerint rendezve szeretnénk látni az adatokat) | |
DataSource1 | Name | dsrhallgatok |
DataSet | tblhallgatok |
A form unit-jában (unit1) biztosítsuk az utat az adatmodul felé:
unit unit1;
...
implementation
{$R *.DFM}
uses adatok;
...
end.
A Data Controls palettáról helyezzünk el 5 db DbEdit-et az adatok megjelenítésére, a Standard palettáról 5 db Label-t a magyarázószövegnek, egy ComboBox-ot az index kiválasztásához, 7 db Button-t és 2 db BitButtont az Additional palettáról.
Komponens | Jellemző | Érték |
DBEdit1 | Name | eNev |
DataSource | adatmodul.dsrhallgatok | |
DataField | Nev | |
Enabled | False | |
DBEdit2 | Name | eSzuldat |
DataSource | adatmodul.dsrhallgatok | |
DataField | Szuldat | |
Enabled | False | |
DBEdit3 | Name | eSzemigszam |
DataSource | adatmodul.dsrhallgatok | |
DataField | Szemigszam | |
Enabled | False | |
DBEdit4 | Name | eTankor |
DataSource | adatmodul.dsrhallgatok | |
DataField | Tankor | |
Enabled | False | |
DBEdit5 | Name | eOsztondij |
DataSource | adatmodul.dsrhallgatok | |
DataField | Osztondij | |
Enabled | False |
Komponens | Jellemző | Érték |
ComboBox | Name | Cbindex |
Style | DropDownList | |
Items | Név szerint | |
Tankör szerint |
OnChange eseménye:
procedure TForm1.CBindexChange(Sender: TObject);
begin
if CbIndex.Itemindex=0 then
adatmodul.tblhallgatok.IndexFieldNames:='nev'
else
adatmodul.tblhallgatok.IndexFieldNames:='tankor';
end;
Komponens | Jellemző | Érték |
Button1 | Name | BtnElso |
Caption | << Elso |
OnClick eseménye:
procedure TForm1.BtnelsoClick(Sender: TObject);
begin
with adatmodul.tblhallgatok do
Begin
first;
end;
If BtnUtolso.Enabled=false then
begin
BtnUtolso.Enabled:=true;
BtnKovetkezo.Enabled:=true;
end;
BtnElso.enabled:=false;
BtnElozo.enabled:=false;
end;
Komponens | Jellemző | Érték |
Button2 | Name | BtnElozo |
Caption | < Elozo |
OnClick eseménye:
procedure TForm1.BtnelozoClick(Sender: TObject);
begin
with adatmodul.tblhallgatok do
Begin
prior;
if bof then
Begin
BtnElso.enabled:=false;
BtnElozo.enabled:=false;
end;
end;
If BtnUtolso.Enabled=false then
begin
BtnUtolso.Enabled:=true;
BtnKovetkezo.Enabled:=true;
end;
end;
Komponens | Jellemző | Érték |
Button3 | Name | Btnkovetkezo |
Caption | Következo > |
OnClick eseménye:
procedure TForm1.BtnkovetkezoClick(Sender: TObject);
begin
with adatmodul.tblhallgatok do
Begin
next;
If Eof then
Begin
BtnUtolso.Enabled:=false;
BtnKovetkezo.Enabled:=false;
End;
end;
if BtnElso.enabled=false then
begin
BtnElso.enabled:=true;
BtnElozo.enabled:=true;
end;
end;
Komponens | Jellemző | Érték |
Button4 | Name | BtnUtolso |
Caption | Utolsó >> |
OnClick eseménye:
procedure TForm1.BtnutolsoClick(Sender: TObject);
begin
with adatmodul.tblhallgatok do
Begin
last;
end;
btnUtolso.Enabled:=false;
BtnKovetkezo.Enabled:=false;
if BtnElso.enabled=false then
begin
BtnElso.enabled:=true;
BtnElozo.enabled:=true;
end;
end;
Komponens | Jellemző | Érték |
Button5 | Name | BtnFelvesz |
Caption | Felvesz |
OnClick eseménye:
procedure TForm1.BtnFelveszClick(Sender: TObject);
begin
with adatmodul.tblhallgatok do
begin
insert;
end;
BtnElso.enabled:=false;
BtnElozo.enabled:=false;
BtnUtolso.Enabled:=false;
BtnKovetkezo.Enabled:=false;
BtnTorol.Enabled:=false;
BtnKilepes.Enabled:=false;
btnOk.Enabled:=true;
BtnCancel.Enabled:=true;
Enev.Enabled:=true;
Etankor.Enabled:=true;
Eszemigszam.Enabled:=true;
Eszuldat.Enabled:=true;
Eosztondij.Enabled:=true;
end;
Komponens | Jellemző | Érték |
Button6 | Name | BtnTorol |
Caption | Töröl |
OnClick eseménye:
procedure TForm1.BtnTorolClick(Sender: TObject);
begin
with adatmodul.tblhallgatok do
delete;
end;
Komponens | Jellemző | Érték |
BitBtn1 | Name | BtnOk |
Kind | BkOk | |
Enabled | False |
OnClick eseménye:
procedure TForm1.BtnOkClick(Sender: TObject);
begin
with adatmodul.tblhallgatok do
begin
FieldByName('Nev').asString:=Enev.text;
FieldByName('Tankor').asString:=Etankor.text;
FieldByName('Szuldat').asDateTime:=StrToDate(Eszuldat.text);
FieldByName('Osztondij').asInteger:=StrToInt(Eosztondij.text);
FieldByName('Szemigszam').asString:=Eszemigszam.text;
post;
end;
BtnElso.enabled:=true;
BtnElozo.enabled:=true;
BtnUtolso.Enabled:=true;
BtnKovetkezo.Enabled:=true;
BtnTorol.Enabled:=true;
BtnKilepes.Enabled:=true;
btnOk.Enabled:=false;
BtnCancel.Enabled:=false;
Enev.Enabled:=false;
Etankor.Enabled:=false;
Eszemigszam.Enabled:=false;
Eszuldat.Enabled:=false;
Eosztondij.Enabled:=false;
end;
Komponens | Jellemző | Érték |
BitBtn2 | Name | BtnCancel |
Kind | BkCancel | |
Enabled | False |
OnClick eseménye:
procedure TForm1.BtnCancelClick(Sender: TObject);
begin
with adatmodul.tblhallgatok do
begin
delete;
end;
BtnElso.enabled:=true;
BtnElozo.enabled:=true;
BtnUtolso.Enabled:=true;
BtnKovetkezo.Enabled:=true;
BtnTorol.Enabled:=true;
BtnKilepes.Enabled:=true;
btnOk.Enabled:=false;
BtnCancel.Enabled:=false;
Enev.Enabled:=false;
Etankor.Enabled:=false;
Eszemigszam.Enabled:=false;
Eszuldat.Enabled:=false;
Eosztondij.Enabled:=false;
end;
Komponens | Jellemző | Érték |
Button7 | Name | BtnKilepes |
Caption | Kilépés |
OnClick eseménye:
Close;
Komponens | Jellemző | Érték |
Form1 | Name | frmkarbantart |
Caption | Hallgatók adatainak karbantartása |
Kérjünk egy új form-ot (File/New Form) és hozzuk létre rajta az elozo ablakot hívó és az alkalmazást befejezo menüpontokat:
Karbantart Kilépés
Állítsuk be az OnClick eseményeket.
procedure TForm1.Karbantarts1Click(Sender: TObject);
begin
frmkarbantart.Showmodal;
end;
procedure TForm1.Kilps1Click(Sender: TObject);
begin
Close;
end;
Adjuk nevet neki a Name tulajdonságának kitöltésével és a címsorába írjunk a Caption használatával.
A Project/Options menüpontban Main form-nak állítsuk be a menüs ablakot és az auto-create forms résznél pedig a legelso helyre húzzuk az adatmodult. (különben nem látja a megjeleníto ablak az adatokat)