Delphi 2.0

6. óra

Adatbáziskezelés III.

 

Feladat: 3 tábla létrehozása, DbGrid rács, kikeresett mezők használata. Az egyik tábla az árukat, a másik a megrendeléseket tartja nyilván, a harmadik a vevőket. Lekérdezés használata.

Készítsük el a menüből hívható formokat.

Az első form a rendelés adatait mutatja meg, de látható a vevő és az áru neve is a rácsban, mint kikeresett mező.

Megoldás: 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 leendő adataink könyvtárára a File/Working Directory menüpont segítségével. Az aliases-nél pedig válasszuk ki egy korábban használt álnevet (pl. ora5, vagy amit a multkor használtatok). É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 első mező 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.

 

Áruk tábla szerkezete:

Field Name Type Size Dec
ARUKOD N 4  
ARUNEV C 20  
EGYSEGAR N 6 2
AFAKOD N 2  

Indexet állítsuk be a define gomb lenyomásával (ARUKOD). Az indexelni kívánt mezőre 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: aruk (az alias megadására is figyeljünk!).

A következő két tábla létrehozása ezen módszerrel:

Vevők tábla szerkezete:

Field Name Type Size Dec
VEVOKOD N 4  

VEVONEV

C 25  
IRSZAM N 4  
VAROS C 20  
UTCA C 35  

Index: Vevokod, Vevonev szerint.

 

Rendelés tábla szerkezete:

 

Field Name Type Size Dec
RENDKOD N 6  
VEVOKOD N 4  
ARUKOD N 4  
DARAB N 4  

Index: Rendkod szerint.

Mindegyik táblát nyissuk meg (file/open/table) és a table/edit data menüpont segítségével vigyünk fel összefüggő adatokat (a megrendelésben létező áru- és vevőkód legyen).

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 3 Table és 3 Data Source komponenst, majd a jellemzőket az alábbiak szerint állítsuk be:

Komponens Jellemző Érték
Table1 Name tblaruk
  DatabaseName ora5
  TableName aruk
  Active True (ilyenkor tervezés közben is látszanak az adatok)
  IndexName arukod
DataSource1 Name dsraruk
  DataSet tblaruk
Table2 Name tblvevok
  DatabaseName ora5
  TableName vevok
  Active True (ilyenkor tervezés közben is látszanak az adatok)
  IndexName vevokod
DataSource2 Name dsrvevok
  DataSet tblvevok
Table3 Name tblrendeles
  DatabaseName ora5
  TableName rendeles
  Active True (ilyenkor tervezés közben is látszanak az adatok)
  IndexName rendkod
DataSource3 Name dsrrendeles
  DataSet tblrendeles

 

A form unit-jában (pl. 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 1 db DbGrid-et az adatok megjelenítésére, a Standard palettáról 1 db Button-t a kilépéshez.

 

Komponens Jellemző Érték
DBGrid1 Name DbgRacs
  DataSource adatmodul.dsrrendeles
  Enabled False

A grid-ben azonnal megjelennek az adatok, mivel a rendelés tábla Activate tulajdonsága True.

Ahhoz, hogy mi határozzuk meg, hogy mely mezők jelenjenek meg, be kell hívnunk a mezőszerkesztőt. Kattintsunk 2x az adatmodul ablak tblrendeles ikonján. A mezőszerkesztő ablak most még üres. A jobb gombra megjelenő gyorsmenüből válasszuk ki az Add fields... -t. Ezzel a paranccsal a táblában létező mezőket olvashatjuk be. Jelöljük ki az összes mezőt és OK. Szeretnénk, ha az árukódja mellett látható lenne az áruk táblában lévő, hozzá tartozó árunév, és a vevőkód mellett a vevő neve. Ehhez az egér jobb gombjának lenyomása után válasszuk a New field... parancsot. A megjelenő ablakban a Name: ARUNEV (a származtatott mező nev), Type: string, Size: 20, Field type: Lookup (másik táblából származtattuk), Key Fields: ARUKOD (kapcsolómező az alaptáblából (rendelés)), DATASET: ARUK (a kereső tábla, amiból szeretnénk az adatokat kapni), Loopup Keys: ARUKOD (a kapcsolómező a keresőtáblából), Result Field: ARUNEV (melyik mező értékét veszi át).

Ahhoz, hogy a vevőnév mező is látható legyen, ugyanezt végig kell csinálnunk a megfelelő mezőkkel. Ehhez az egér jobb gombjával kell kattintanunk a mezőszerkesztő ablakán. Megint New field... parancs. A megjelenő ablakban a Name: VEVONEV, Type: string, Size: 25, Field type: Lookup, Key Fields: VEVOKOD, DATASET: VEVOK, Loopup Keys: VEVOKOD, Result Field: VEVONEV.

A Grid-re 2x klikkelve az oszlopszerkesztő töltődik be, ahol kiválaszthatjuk a megjelenítendő oszlopokat és beállíthatjuk azok tulajdonságait.

Az Add All Fields gombra kattintva az összes mező megjelenik a felette levő ablakban, melyből rendre a Delete gomb segítségével törölhetjük azokat, melyekre nincs szükségünk a rácsban. (pl. arukod, vevokod, stb.) A sorrendjük itt módosítható, ha az új helyére húzzuk a kívánt mező nevét.

 

Komponens Jellemző Érték
Button1 Name BtnKilepes
  Caption ‘Kilépés’
     

OnClick eseménye:

Close;

 

ki lehet tenni egy navigátor gombsort is, amivel a teljes karbantartás megoldható.

Komponens Jellemző Érték
Form1 Name frmrendeles
  Caption ‘Rendelések listája’

 

Kérjünk egy új form-ot (File/New Form):

A form unit-jában (pl. unit3) biztosítsuk az utat az adatmodul felé:

 

unit unit3;

...

implementation

 

{$R *.DFM}

 

uses adatok;

...

end.

 

Ezután tegyünk egy Query komponenst az adatmodulra:

Komponens Jellemző Érték
Query1 Name vevolek
  DatabaseName ora5
  SQL select * from "vevok.dbf" where vevonev=:vnev

Aztán egy Datasource komponenst:

Komponens Jellemző Érték
DataSource1 Name dsrvevoker
  DataSet vevolek (query neve, ebből kapja majd az adatokat)

 

A formra egy EditBox-ot a keresett név begépelésére

Komponens Jellemző Érték
Edit1 Name keresettnev

Egy gombot a kereses megindítására:

Komponens Jellemző Érték
Button1 Name BtnKeres
Caption ‘Keresés’

OnClick eseménye:

Adatmodul.Vevolek.close; (mindig be kell zárni, mert a következő keresés nem frissítené az értékeket)

Adatmodul.Vevolek.ParambyName('VNEV').Asstring:=Keresettnev.Text;

Adatmodul.Vevolek.prepare;

Adatmodul.Vevolek.open;

 

És még egy gombot a kilépésre:

Komponens Jellemző Érték
Button2 Name BtnKilepes
Caption ‘Kilépés’

OnClick eseménye:

Close;

 

Egy Grid-et az eredmény megjelenítésére:

Komponens Jellemző Érték
DBGrid1 Name DbgRacs
DataSource dsrvevoker
Enabled False

 

A formnak állítsukbe a tulajdonságait:

Komponens Jellemző Érték
Form2 Name frmvevoadat
  Caption ‘Rendelések listája’

Kérjünk egy új form-ot (File/New Form) és hozzuk létre rajta az előző ablakokat hívó és az alkalmazást befejező menüpontokat:

 

Rendelések Vevő adatai Kilépés

 

Állítsuk be az OnClick eseményeket az egyes menüpontokhoz.

 

frmrendeles.Showmodal;

 

frmvevoadat.Showmodal;

 

Close;

 

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 legelső helyre húzzuk az adatmodult. (különben nem látja a megjelenítő ablak az adatokat)