Adatbázis-kezelés DELPHI-ben

Slides:



Advertisements
Hasonló előadás
10. gyakorlat SQL SELECT.
Advertisements

Tananyag: konzultáció
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Lekérdezések SQL-ben Relációs algebra A SELECT utasítás
MICROSOFT OFFICE ACCESS 2003.
Elmaradás.  0 Számjegy. Ebben a pozícióban egyetlen számjegyet kell megadnia.  9 Számjegy. Ebben a pozícióban egyetlen számjegyet lehet megadni, nem.
Számítógépes ismeretek 5. óra
Adatbázisokat és Adattáblákat kezelő FoxPro parancsok és utasítások Páll Boglárka
Ismétlés. Ismétlés: Adatbázisok megnyitása: OPEN DATABASE adatbázis_név OPEN DATABASE ”adatbázis_név elérési útvonallal” Adattábla megnyitása: USE tábla_név.
Operációs rendszerek Mappa és file-kezelés.
megismerése, mintaadatbázis létrehozása
Táblázat kezelő programok
SQL – DQL (Data Query Language ) adat lekérdezések
Adatbázis-kezelő funkciók
Grafika a programban Készítette: Pető László. Bevezetés Valójában nem a célobjektumra rajzolunk, hanem annak festővászon területére (canvas). Csak olyan.
Adatbázis-kezelés.
A körlevél készítésének menete
Adatbázis-kezelés ACCESS program:
VFP programozása report készítése menü készítése dinamikus elemek
6. előadás: PHP-MySQL Barabás Péter
Access-Űrlapkészítés
Access alapok Táblák, kapcsolatok, űrlapok.
Delphi programozás Delphi programozás SRTNB előadás - Borland Delphi – fontosabb komponensek tárgyalása Nagyváradi Anett.
Adatbázis kezelés Delphiben
Delphi programozás 8. ELŐADÁS ADO ActiveX Data Objects.
Összesítés és csoportosítás lekérdezésekben. Halmazműveletek.
Nézettáblák létrehozása, módosítása és törlése
Microsoft Access Űrlapok tervezése.
Az SQL nyelv alapjai.
Access XP Kifejezés-szerkesztő Összehasonlító operátorok:
Térkép. Mi az adat? Minden információ, amit tárolni kell. Minden információ, amit tárolni kell.  szám  szöveg  dátum  hang  kép, stb.
Statisztika, kutatásmódszertan I.
Adatbáziskezelés Delphi 5 alatt
Többtáblás adatbázisok
Egyéb erőforrás-kezelési képességek Készítette: Szentirmai Róbert (minden jog fenntartva)
Elemzések, jelentések készítése
Microsoft Visual FoxPro 9.0
Készítette: Tóth Ervin
Delphi Készítette: Rummel Szabolcs Elérhetőség:
Készítette: Rummel Szabolcs Elérhetőség:
Visual Basic 2008 Express Edition
Visual Basic 2008 Express Edition
Adatbázis-kezelés Probléma: az excel kezelhetetlen túl sok adat esetén
– SQL 3: SELECT - 1. – Tarcsi Ádám, január 31. Adatbázis gyakorlat.
– SELECT - 2. – Tarcsi Ádám március Adatbázis gyakorlat.
SQL SELECT parancsok Kottyán László. A bemutató mintatáblái.
5. gyakorlat Fleiner Rita.
Webprogramozó tanfolyam
ACCESS Lekérdezések, űrlapok, jelentések
SQL. SQL jellemzői Nem algoritmikus (nem tartalmaz algoritmikus szerkezeteket: ciklus, eljárás, elágazás) Nem rekurzív (önmagát nem hívhatja) Halmazorientált.
Adatbázis-kezelés 3-4. Adatok lekérdezése utasítás általános formája SELECT [ALL/DISTINCT] {*/, …, } FROM [ ], …, [ ] [WHERE GROUP BY, …, HAVING ORDER.
Kördokumentumok 1..
1 Verseny 2000 gyakorlat SQL 2000 Server Portál adatbázis létrehozása.
Gazdasági informatikus - Szövegszerkesztés 1 Hosszú dokumentumok kezelése.
Első lépések a szövegszerkesztő használatában
Táblázatok.
– SELECT - 1. – Tarcsi Ádám január Adatbázis gyakorlat.
Számítógépes grafika I. AUTOCAD alapok
Dokumentum formázása.
Gazdasági informatikus - Szövegszerkesztés 1 Bekezdések formázása 3.
Bekezdések formázása 2..
Gazdasági informatikus - Szövegszerkesztés 1 Bekezdések formázása 2.
A Mozilla magyar nyelvű szerkesztőjének használata
Excel alapok Templom Téri Német Nemzetiségi Általános iskola Pilisvörösvár 2015 A leggyakoribb Excel műveletek, ill. típusfeladatok Készítette: Kárpát.
Számítások az Accessben Számított mező létrehozása Az adatbázisokat érdemes úgy tervezni, hogy ne tároljunk olyan adatokat, amelyek a többiből kiszámíthatók.
Táblák létrehozása és feltöltése adatokkal Rendezés Szűrés.
Lekérdezések Adott tulajdonságú adatok listázásának módja a lekérdezés. A lekérdezések segítségével az adatbázisból megjeleníthetjük, módosíthatjuk, törölhetjük.
Információ és kommunikáció
Az Endnote bibliográfia adatbázis-kezelő szoftver alapvető használata Skultéti Attila
Jelentések Jelentést akkor használunk, ha az adatbázisban letárolt adatokat szeretnénk kinyomtatni. A jelentésben szereplő adatok alapja egy tábla vagy.
Előadás másolata:

Adatbázis-kezelés DELPHI-ben Készítette:Pető László

Adatbázisfájl létrehozása

Adatbázisfájl létrehozása

Adatbázis típus kiválasztása

Mezőtípusok

A szerkezet begépelése

A szerkezet mentése

Adatbázisfájl megnyitása

Az adatbázis feltöltése

Az adatok bevitele

A szerkezet megtekintése Table > Info Structure... A szerkezet módosítása Table > Restructure...

Rekord beszúrása Record > Insert Rekord törlése Record > Delete

Lekérdezések SQL-ben SELECT [Distinct | All] [* | <érték1>[,<érték2>,…,<értékn>]] FROM <táblahivatkozás1>[<táblahivatkozás2,…, <táblahivatkozásn>] [WHERE <keresési feltétel>][GROUP BY <mező1> [Collate egybevetés],…, <mezőn> [Collate egybevetés]] [Having <keresési feltétel>] [Union <keresési feltétel] [Order by <sorrend_lista]

Magyarázat Distinct: az azonos tartalmú mezőket csak egyszer jeleníti meg All: minden adatot figyelembe vesz *: minden mező megjelenítése <érték>: mezők kiválasztása FROM: melyik táblából vegyük az értéket. Több tábla is megadható

Magyarázat Where: szűrési feltétel Group by: csoportokat képez Having: a csoportokra vonatkozó szűrési feltétel Union: egy táblába egyesít Order by : a felsorolt oszlopoknak megfelelően rendez

SQL lekérdezés létrehozása

Lekérdezés Kérdezzük le azokat a tanulókat, akiknek 3 testvérük van! SELECT * from tanulok where testver=3 Futtatás: SQL > Run SQL Mentés: File > Save As Bezárás: File > Close

Lekérdezések Kérdezzük le azon tanulókat, akiknek van testvérük! SELECT * FROM tanulok WHERE testver>0 Kérdezzük le azon tanulók nevét, testvéreinek számát, és hogy kollégisták-e, akik kollégisták, és az átlaguk 4,5-nél rosszabb! SELECT nev,testver,kollegium FROM tanulok WHERE kollegium=true AND atlag<4.5

Lekérdezések Kérdezzük le azon tanulók nevét, akik nem kollégisták! SELECT nev FROM tanulok WHERE kollegium=false

Feladat

Feladat

Feladat Kérdezzük le az összes dolgozó nevét és havi alapbérét SELECT nev,alapber FROM dolgozok Kérdezzük le a dolgozók nevét és éves alapbérét! SELECT nev,alapber*12 FROM dolgozok

Feladat Kérdezzük le a dolgozók nevét és havi járandóságát! SELECT nev,alapber+potlek-levonas FROM dolgozok Kérdezzük le az egyetemet végzett vezető beosztásúak éves járandóságát! SELECT nev,(alapber+potlek-levonas)*12 FROM tanulok WHERE egyetem=true AND vezeto=true

Feladat Kérdezzük le azon dolgozók nevét és havi alapbérét, akik havi alapbére 150000 Ft-nál kevesebb! SELECT nev,alapber FROM dolgozok WHERE alapber<150000

Feladat Kérdezzük le azon dolgozók nevét, akik nem vezető beosztásúak, de havi alapbérük meghaladja a 160000 Ft-ot! SELECT nev FROM dolgozok WHERE vezeto=false AND alapber>160000

Feladat Kérdezzük le azon dolgozók nevét és havi alapbérét, akik betöltötték 23. Életévüket akkor, amikor munkába álltak! SELECT nev,alapber FROM dolgozok WHERE (munka_kezd-szul_datum)/365 >23

SUM Kérdezzük le a dolgozók számára az egész év folyamán kifizetendő teljes pénzösszeget! SELECT SUM(alapber+potlek-levonas)*12 FROM dolgozok

AVG Kérdezzük le a dolgozók éves járandóságának átlagát! SELECT AVG(alapber+potlek-levonas)*12 FROM dolgozok

További SQL függvények MIN MAX COUNT

Indexelés TABLE > RESTRUCTURE... SAVE gomb Eredmény: tanulok.mdx

Adatbeviteli űrlap készítése

Adatbeviteli űrlap készítése File > New… > Data Module DataModule2.Name:=Adatmodul Mentsünk mindent egy új könyvtárba A tanulókat tartalmazó táblát indexestül helyezzük ebbe a könyvtárba DataSource1.DataSet:=Table1 Table1.TableName:=tanulok.dbf Table1.Active:=true

Adatbeviteli űrlap készítése A magyar feliratokhoz a Caption megváltoztatása szükséges!

Adatbeviteli űrlap Kattintsunk duplán a Table1 adatmodulbeli ikonján! A megjelenő fehér ablakra jobb egérgombbal kattintva válasszuk ki a szükséges mezőket! A mezőket húzzuk át a Form megfelelő területére! Engedélyezzük az adatmodul használatát! A felvetődő kérdésre adjunk igenlő választ! Helyezzünk el egy DBNavigatort! DBNavigator.Align:=alBottom DataSource:=Adatmodul.DataSource1

Adatbeviteli űrlap mentése

Az adatbeviteli űrlap fordítása A nyomógomb hatására lefut a program (interpreter), de ezzel párhuzamosan elkészül egy exe állomány (compiler), ami a Delphi nélkül is futtatható. Érdemes így is kipróbálni. EZ AZT JELENTI, HOGY AZ ADATBEVITELHEZ ELEGENDŐ AZ ADATBÁZIS ÉS AZ ELKÉSZÍTETT PROGRAM, NEM KELL A DELPHI! C:\Könyvtárnév\fáljnév.EXE

Lekérdezés a programban Készítsünk egy olyan programot, amely adattáblában mutatja azon tanulókat, akiknek 3 testvérük van!

Lekérdezés a programban Készítsünk egy külön könyvtárat Helyezzük el benne a tanulók táblát indexestül! Kérjünk a projecthez egy adatmodult! Mentsünk mindent! A unit1 implementation részébe írjuk be: Uses unit2;

Lekérdezés Az Adatmodulon helyezzünk el egy DataSource és egy Query komponenst! DataSource1.DataSet:=Query1 Query1.SQL-hez írjuk be a megfelelő kérdést Query1.Active:=True (Hiba esetén elrontottuk a kérdést)

Lekérdezés a programban

Lekérdezés a programban DbGrid1.DataSource:=DataModule2.DataSource1 DbGrid1.Align:=alClient

Lekérdezés mentése

Lekérdezés fordítása A program futtatás közben lefordítódik fáljnév.exe néven, amely a DELPHI nélkül is futtatható.

Jelentés készítése Készítsünk jelentést a hármasnál jobb átlagú tanulók nevéről, születési helyéről és átlagáról!

Jelentés készítése QRBand1.BandType:=rbTitle (Címsor lesz) QRband1.BandType:=rbDetail (Adatait az adatbázisból veszi)

Jelentés Készítsünk egy külön könyvtárat, másoljuk bele a tanulókat tartalmazó adatbázist indexesetül! Kérjünk egy adatmodult, majd mentsünk mindent az adott könyvtárba! Az implementation részbe írjuk be: Uses unit2;

Jelentés készítése Helyezzünk el egy DataSource és egy Query komponenst az adatmodulban! Adjuk meg az SQL parancsot Kapcsoljuk össze a két komponenst! QuickRep1.Dataset:=DataModule2.Query1

Jelentés készítése

Jelentés készítése QRLabel komponensek QRDBText komponensek Dataset:=DataModule2. Query1 Datafield:= a megjelení- tendő mező neve A szöveg formátuma a komponensek Font tulaj- donságánál állíthatók. Jobb gomb > Preview : A nyomtatási kép megtekinthető

Jelentés készítése

Jelentés mentése, futtatása Készítsünk egy nyomógombot, melyre kattintva a következő történjen: Quickrep1.Preview; Hasonlóan történik mentésnél a névadás. A futtatásnál szintén létrejön egy exe állomány.

A futó jelentés

Grafikon Az előző lekérdezés eredményét ábrázoljuk grafikonon!

Grafikon Készítsünk egy külön könyvtárat, másoljuk bele a tanulókat tartalmazó adatbázist indexesetül! Kérjünk egy adatmodult, majd mentsünk mindent az adott könyvtárba! Az implementation részbe írjuk be: Uses unit2;

Grafikon Helyezzünk el egy DataSource és egy Query komponenst az adatmodulban! Adjuk meg az SQL parancsot Kapcsoljuk össze a két komponenst!

Grafikon

Grafikon Align:= Alclient Dupla kattintá!s!

Grafikon

Grafikon

Grafikon

Grafikon

Grafikon

Adattáblák összekapcsolása Készítsünk egy ISMEROS és egy POSTA adatbázist, amelyekben az ISMEROS a vezér, a POSTA a szolga, a kapcsolókifejezés az irányítószám. A szolgát semmiképp ne felejtsük el indexelni a kapcsolókifejezés szerint

Adatbázisok

Adatbázisok összekapcsolása

Az összekapcsolás folyamata Legyen a szolga az aktív MasterSource:=dsismeros + IndexName:=szam Master Field beállítása: Mentés és futtatás a megszokott módon.

Projekt készítése Készítsünk adatbáziskezelő programot egy cég ügyfeleinek, az ehhez kapcsolódó be- és kifizetések nyilvántartására! Táblák: UGYFELEK BEFIZETESEK KIFIZETESEK

UGYFELEK UGYFELKOD UGYFELNEV CIM TELEFON

BEFIZETESEK UGYFELKOD DATUM OSSZEG

KIFIZETESEK UGYFELKOD DATUM OSSZEG

Indextáblák UGYFELEK UGYFELKOD NEV BEFIZETESEK DATUM KIFIZETESEK

Jelentések Lista a befizetésekről Lista a kifizetésekről ugyfelkod, ugyfelnev, datum, osszeg (ugyfelkod szerint rendezve, ugyfelkod szerinti csoportosításban, csoportösszeg és mindösszesen képzésével) Lista a kifizetésekről a fentihez hasonló paraméterekkel

Jelentések Lista az ügyfelekről minden adatot megjelenítve az ügyfél törzsadataiból, ugyfelkod sszerint rendezve

Adatbeviteli űrlapok Minden adattáblához külön-külön. A be- és kifizetéseknél jelenjen meg az ügyfél neve is. (DBLookUpComboBox használata)

Lekérdezés Szerepeljen rajta minden ügyfél, a kódja , a kód szerinti rendezésben. Szerepeljen még az összes, a legnagyobb és a legkisebb befizetés.

Menü Táblázatok Jelentések Lekérdezés Kilépés Ügyfél Befizetések Kifizetések Jelentések Jelentés az ügyfelekről Jelentés a befizetésekről Jelentés a kifizetésekről Lekérdezés Kilépés

1. Adattáblák szerkezetének és indexeinek létrehozása

2. Projekt főablak a menüvel

Kilépés <Form1neve>.close;

2. Képernyők létrehozása Egy-egy új form segítségével

2. Képernyők létrehozása A menüből a <Formnnév>.showmodal; paranccsal hívhatók elő. A befizetéseknél és kifizetéseknél az ügyfél adattáblát is el kell helyezni, a megfelelő reláció kialakításával lehet csak az ügyfelek nevét elhelyezni!!! Az ügyfélnév mező readonly tulajdonsága legyen ezeken true.

3. Jelentés az ügyfelekről SELECT * FROM ugyfelek ORDER BY 1 Nyomtatási kép nyomógomb!!!

4. Jelentés a befizetésekről SELECT ugyfelkod,ugyfelnev,datum,osszeg, sum(osszeg) FROM befizetesek,ugyfelek GROUP BY ugyfelkod A kiíratáshoz a csoportosítás miatt ne Detail QRBrand-et, hanem SubDetail-t kell használni!

5. Jelentés a kifizetésekről Hasonlóan a befizetésekhez.

6. A lekérdezés létrehozása select ugyfelkod, ugyfelnev,sum(osszeg), min(osszeg),max(osszeg) from ugyfelek,befizetesek group by ugyfelkod, ugyfelnev

Befejezés A program exe fájlba is lefordítódik. Az elkészített adatbázis-kezelő program Delphi nélkül is működik.

Feladat Hallgatói nyilvántartás készítése. Mezők: Név , Születési dátum, Szem.ig. szám, tankör, ösztöndíj. Készítsünk egy menüből 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 gombját. Válasszuk ki a New mepüpontot. Válasszuk ki az alias típusát (STANDARD) és nyomjuk meg az ok gombot.

Megoldás Írjuk be az új álnevet (ora4)! 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 gombjá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.

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értehozni. Állítsuk be a munkakönyvtárat a leendő adataink könyvtárára a File/Working Directory menüpont segytségével. Az aliases-nél pedig válasszuk ki az előbb beállított álnevünket (ora4).

Megoldás É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 tipusá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.

Megoldás Field Name Type Size Dec NEV C 25 SZULDAT D SZEMIGSZAM C 8 TANKOR C 10 OSZTONDIJ N 4

Megoldás Indexet állítsuk be a define gomb lenyomásával. 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: hallgatók (az alias megadására is figyeljünk!). Ezután kiléphetünk a Database Desktop-ból.

Megoldás 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 jellemzőket az alábbiak szerint állítsuk be:

Megoldás Komponens Jellemző Érték Table1 Name tblhallgatok DatabaseName ora4 (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

Megoldás A formunk unit-jában biztosítsuk az utat az adatmodul felé: unit unit1; ... implementation {$R *.DFM} uses adatmodul; end.

Megoldás A DataControls palettáról helyezzünk el 5 db DBEdit-et az adatok megjelenítésére, egy DBNavigator-t a karbantartásra, 5 db Label-t a magyarázószövegnek és egy Button-t a kilépéshez.

Megoldás Komponens Jellemző Érték DBEdit1 Name eNev DataSource adatmodul.dsrhallgatok DataField Nev DBEdit2 Name eSzuldat DataField Szuldat DBEdit3 Name eSzemigszam DataField Szemigszam DBEdit4 Name eTankor DataField Tankor DBEdit5 Name eOsztondij DataField Osztondij DBNavigator Name Navigator Button1 Name BtnKilepes Caption ‘Kilépés’ OnClick Close; Form1 Name frmkarbantart Caption ‘Hallgatók adatainak karbantartása’

Megoldás Kérjünk egy új form-ot (File/New Form) és hozzuk létre rajta az előző ablakot hívó és az alkalmazást befejező 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); Close;

Megoldás 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)

Feladat Hallgatói nyilvántartás karbantartása nyomógombok segítségével. Mezők: Név , Születési dátum, Szem.ig. szám, tankör, ösztöndíj. Készítsünk egy menüből 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 gombját. Válasszuk ki a New menüpontot. Válasszuk ki az alias típusát (STANDARD) és nyomjuk meg az ok gombot.

Megoldás Í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 gombjá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.

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értehozni. Állítsuk be a munkakönyvtárat a leendő adataink könyvtárára a File/Working Directory menüpont segytségével. Az aliases-nél pedig válasszuk ki az előbb beállított álvenünket (ora5). És OK gomb.

Megoldás 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 tipusá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.

Megoldás Field Name Type Size Dec NEV C 25 SZULDAT D SZEMIGSZAM C 8 TANKOR C 10 OSZTONDIJ N 4

Megoldás Indexet állítsuk be a define gomb lenyomásával (NEV, TANKOR). 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: hallgatók (az alias megadására is figyeljünk!). Ezután kiléphetünk a Database Desktop-ból.

Megoldás 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 jellemzőket az alábbiak szerint állítsuk be:

Megoldás 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

Megoldás A form unit-jában (unit1) biztosítsuk az utat az adatmodul felé: unit unit1; ... implementation {$R *.DFM} uses adatok; end.

Megoldás 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.

Megoldás Komponens Jellemző Érték DBEdit1 Name eNev DataSource adatmodul.dsrhallgatok DataField Nev Enabled False DBEdit2 Name eSzuldat DataField Szuldat DBEdit3 Name eSzemigszam DataField Szemigszam DBEdit4 Name eTankor DataField Tankor DBEdit5 Name eOsztondij DataField Osztondij

Megoldás 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;

Megoldás Button1 Name BtnElso Caption << Első OnClick eseménye: procedure TForm1.BtnelsoClick(Sender: TObject); begin with adatmodul.tblhallgatok do Begin first; end; If BtnUtolso.Enabled=false then BtnUtolso.Enabled:=true; BtnKovetkezo.Enabled:=true; BtnElso.enabled:=false; BtnElozo.enabled:=false;

Megoldás Button2 Name BtnElozo Caption < Előző OnClick eseménye: procedure TForm1.BtnelozoClick(Sender: TObject); begin with adatmodul.tblhallgatok do Begin prior; if bof then BtnElso.enabled:=false; BtnElozo.enabled:=false; end; If BtnUtolso.Enabled=false then BtnUtolso.Enabled:=true; BtnKovetkezo.Enabled:=true;

Megoldás Button3 Name Btnkovetkezo Caption Következő > OnClick eseménye: procedure TForm1.BtnkovetkezoClick(Sender: TObject); begin with adatmodul.tblhallgatok do Begin next; If Eof then BtnUtolso.Enabled:=false; BtnKovetkezo.Enabled:=false; End; end; if BtnElso.enabled=false then BtnElso.enabled:=true; BtnElozo.enabled:=true;

Megoldás 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 BtnElso.enabled:=true; BtnElozo.enabled:=true;

Megoldás Button5 Name BtnFelvesz Caption Felvesz OnClick eseménye:procedure TForm1.BtnFelveszClick(Sender: TObject); begin with adatmodul.tblhallgatok do 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;

Megoldás Button6 Name BtnTorol Caption Töröl OnClick eseménye: procedure TForm1.BtnTorolClick(Sender: TObject); begin with adatmodul.tblhallgatok do delete; end;

BitBtn1 Name BtnOk Kind BkOk Enabled False OnClick eseménye: procedure TForm1.BtnOkClick(Sender: TObject); begin with adatmodul.tblhallgatok do 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;

BitBtn2 Name BtnCancel Kind BkCancel Enabled False OnClick eseménye: procedure TForm1.BtnCancelClick(Sender: TObject); begin with adatmodul.tblhallgatok do 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;

Megoldás Button7 Name BtnKilepes Caption ‘Kilépés’ OnClick eseménye: Close; Form1 Name frmkarbantart Caption ‘Hallgatók adatainak karbantartása’

Megoldás Kérjünk egy új form-ot (File/New Form) és hozzuk létre rajta az előző ablakot hívó és az alkalmazást befejező 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); Close;

Megoldás 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)

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 Hozzunk létre egy új aliast ora6 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értehozni. Á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 (ora5). És OK gomb.

Megoldás 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 tipusát a szóközre kinyíló listából választhatjuk ki, a hosszát kell még megadnunk, s a tizedesjegyek számát.

Megoldás Áruk tábla szerkezete: Field Name Type Size Dec ARUKOD N 4 ARUNEV C 20 EGYSEGAR N 6 2 AFAKOD N 2

Megoldás 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:

Megoldás 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.

Megoldás 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.

Megoldás 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:

Megoldás Komponens Jellemző Érték Table1 Name tblaruk DatabaseName ora6 TableName aruk Active True (ilyenkor tervezés közben is látszanak az adatok) IndexName arukod DataSource1 Name dsraruk DataSet tblaruk

Megoldás Table2 Name tblvevok DatabaseName ora6 TableName vevok Active True (ilyenkor tervezés közben is látszanak az adatok) IndexName vevokod DataSource2 Name dsrvwvok DataSet tblvevok

Megoldás Table3 Name tblrendeles DatabaseName ora6 TableName rendeles Active True (ilyenkor tervezés közben is látszanak az adatok) IndexName rendkod DataSource3 Name dsrrendeles DataSet tblrendeles

Megoldás A form unit-jában (unit1) biztosítsuk az utat az adatmodul felé: unit unit1; ... implementation {$R *.DFM} uses adatok; end.

Megoldás 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

Megoldás 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.

Megoldás 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).

Megoldás 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.

Megoldás 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.

Megoldás 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ó. Form1 Name frmkarbantart Caption ‘Rendelések listája’

Megoldás Kérjünk egy új form-ot (File/New Form): A form unit-jában (unit3) biztosítsuk az utat az adatmodul felé: unit unit3; ... implementation {$R *.DFM} uses adatok; end.

Megoldás Ezután tegyünk egy Query komponenst az adatmodulra: Query1 Name vevolek DatabaseName ora6 SQL select * from "vevok.dbf" where vevonev=:vnev Aztán egy Datasource komponenst: DataSource1 Name dsrvevoker DataSet vevolek (query neve, ebből kapja majd az adatokat)

Megoldás A formra egy EditBox-ot a keresett név begépelésére Edit1 Name keresettnev Egy gombot a kereses megindítására: 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;

Megoldás És egyet a kilépésre: Button2 Name BtnKilepes Caption ‘Kilépés’ OnClick eseménye: Close; Egy Grid-et az eredmény megjelenítésére: DBGrid1 Name DbgRacs DataSource dsrvevoker Enabled False

Megoldás 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. frmrendeles.Showmodal; frmvevoadat.Showmodal; Close;

Megoldás 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)

Feladat 1. Az adott vevő rendelései legyenek láthatók egy gridben, mely tartalma frissítődjön a vevők táblában való lépegetés alkalmával. 2. Egy rendelés Gridben legyen látható az áru, vevő neve mellett az érték is ,ami a darab*egységár képlet alapján számítható ki (Kikeresett és számított mezők használata) 3. Egy adott dátumra vonatkozó rendeléseket kell egy grid-ben megjelenítenünk. A dátumot kérjük be, és ellenőrizzük le, hogy jó formátumban gépelték-e be. Készítsük el a menüből hívható formokat.

Megoldás A táblák már létre vannak hozva. Ha hiányzik valamelyik, akkor hozzuk létre. Típus:dBASE IV. A rendelés táblát bővítsük ki egy DATUM dátum típusú mezővel (Database Desktop-ban a Table/Restructure menüponttal lehetséges) és töltsük is ki (Table/Edit Table).

Megoldás Áruk tábla szerkezete: Field Name Type Size Dec ARUKOD N 4 ARUNEV C 20 EGYSEGAR N 6 2 AFAKOD N 2 Index:Arukod

Megoldás 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.

Megoldás Rendelés tábla szerkezete: Field Name Type Size Dec RENDKOD N 6 VEVOKOD N 4 ARUKOD N 4 DARAB N 4 DATUM D 8 Index: Rendkod szerint.

Megoldás 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 adatok2 néven. Helyezzünk el rajta a Data Access palettáról 3 Table, 4 Data Source és 1 Query komponenst, majd a jellemzőket az alábbiak szerint állítsuk be:

Megoldás Komponens Jellemző Érték Table1 Name tblaruk DatabaseName ora6 TableName aruk Active True (ilyenkor tervezés közben is látszanak az adatok) IndexName arukod DataSource1 Name dsraruk DataSet tblaruk

Megoldás Table2 Name tblvevok DatabaseName ora6 TableName vevok Active True IndexName vevokod DataSource2 Name dsrvevok DataSet tblvevok

Megoldás Table3 Name tblrendeles DatabaseName ora6 TableName rendeles Active True IndexName rendkod DataSource3 Name dsrrendeles DataSet tblrendeles

Megoldás Query1 Name vevorend DatabaseName ora6 SQL select * from rendeles where vevokod=:vkod (*azokat vegye ki, ahol a rendelésbeli vevőkód megegyezik a vevők táblában éppen aktuális rekord vevőkódjával*) DataSource4 Name dsrvevorend DataSet vevorend (query neve, ebből kapja majd az adatokat)

Megoldás A képernyőn lévő form unit-jában (unit1) biztosítsuk az utat az adatmodul felé: unit unit1; ... implementation {$R *.DFM} uses adatok; end.

Megoldás A Data Controls palettáról helyezzünk el 5 db DbEdit-et a vevők adatainak, 1 db DbGrid-et az rendelés adatainak megjelenítésére, a Standard palettáról 3 db Button-t a a lépégetéshez a vevők táblában és a kilépéshez. Komponens Jellemző Érték DBEdit1 DataSource adatmodul.dsrvevok DataField Vevokod

Megoldás OnChange eseménye: procedure Tfrmvevorend.DBEdit1Change(Sender: TObject); begin adatmodul. vevorend.close; adatmodul. vevorend.parambyname('vkod').asInteger:=StrtoInt(dbedit1.text); adatmodul. vevorend.prepare; adatmodul. vevorend.open; end;

Megoldás DBEdit2 DataSource adatmodul.dsrvevok DataField Vevonev DataField Irszam DBEdit4 DataSource adatmodul.dsrvevok DataField Varos DBEdit5 DataSource adatmodul.dsrvevok DataField Utca

Megoldás DBGrid1 Name DbgRendeles DataSource adatmodul.dsrvevorend Enabled True Button1 Name BtnKilepes Caption ‘Kilépés’ OnClick eseménye: Close;

Megoldás Button2 Name BtnElozo Caption ‘Előző’ OnClick eseménye: procedure TForm1.BtnelozoClick(Sender: TObject); begin with adatmodul.tblvevok do Begin prior; if bof then BtnElozo.enabled:=false; end; If BtnKovetkezo.Enabled=false then BtnKovetkezo.Enabled:=true;

Megoldás Button3 Name BtnKovetkezo Caption ‘Következő’ OnClick eseménye: procedure TForm1.BtnkovetkezoClick(Sender: TObject); begin with adatmodul.tblvevok do Begin next; If Eof then BtnKovetkezo.Enabled:=false; End; end; if BtnElozo.enabled=false then BtnElozo.enabled:=true;

Megoldás Form1 Name frmvevorend Caption ‘Vevő rendelései’ 2. Kérjünk egy új form-ot (File/New Form) és biztosítsuk az utat az adatmodul felé: unit unit3; ... implementation {$R *.DFM} uses adatok; end.

Megoldás Tegyünk ki rá egy Grid-et a Data Controls palettáról és egy gombot a Standard palettáról a kilépésnek. DBGrid1 Name Dbgrendel DataSource adatmodul.dsrrendeles Enabled True

Megoldás 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.

Megoldás 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).

Megoldás 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.

Megoldás Most már csak a számított mező van hátra, ami a darab és az egységár szorzatát adja. Ehhez az egér jobb gombjával kell kattintanunk a mezőszerkesztő ablakán. Megint New field... parancs. A megjelenő ablakban a Name: AR, Type: Currency, Size: Nincs kitöltve, Field type: Calculated,

Megoldás Az ar számított mező értékét a rendelés tábla OnCalcFields metódusában kell kiszámolni a következőképpen: procedure Tadatmodul.tblrendelesCalcFields(DataSet: TDataSet); var egysar:variant; begin with dataset do egysar:=adatmodul.tblaruk.lookup('arukod', fieldbyname('arukod').value, 'egysegar'); if not VarIsNull(egysar) then fieldbyname('ar').value:=fieldbyname('darab').value*egysar; end;

Megoldás Az OnCalcFields metódus minden egyes megjelenítendő rekord esetén meghívódik. A lookup metódus megkeresi az első feltételnek megfelelő rekordot és annak megadott mezőjének értékével tér vissza. Lookup(‘az mező, amiben keresünk’, ‘az érték, amit keresünk’, ‘a mező, melynek értéke érdekel’). Az eredmény variant típusú. Ezért meg kell hívni az adatmodulban a variants unitot.

Megoldás 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.

Megoldás A kilépés gombjáról se feledkezzetek meg!!! Form2 Name frmrendeles Caption ‘Rendelések listája’

Megoldás Az adatmodulra tegyünk ki egy Query-t és egy Datasource-t. Query1 Name renddatum DatabaseName ora6 SQL select * from rendeles where datum=:renddat DataSource1 Name dsrrenddatum DataSet renddatum (query neve, ebből kapja majd az adatokat)

Megoldás Kérjünk egy új form-ot (File/New Form) és biztosítsuk az utat az adatmodul felé: unit unit4; ... implementation {$R *.DFM} uses adatok2; end.

Megoldás Tegyünk ki rá egy Grid-et a Data Controls palettáról, 1 EditBox-ot a dátumnak, 2 gombot a kigyűjtésnek és a kilépésnek a Standard palettáról. DBGrid1 Name Dbgrenddatum DataSource adatmodul.dsrrenddatum Enabled True

Megoldás A Grid-en 2x kattintva beállíthajuk, hogy mely oszlopokat kívánjuk megjeleníteni. (Ezt mindenki a saját elképzelése szerint tegye meg). Edit1 Name Edatum Text üres Button1 Name BtnKigyujt Caption Kigyűjt

Megoldás OnClick eseménye: procedure TFrmrenddatum.btnkigyujtClick(Sender: TObject); begin with adatmodul.renddatum do Try close; parambyname('renddat').AsDate:=StrToDate(EDatum.text); prepare; open; Except on EConvertError do ShowMessage('A dátum formátuma nem megfelelő!'+#13#10+ 'Például: '+DateToStr(Date)); end; End;

Megoldás A Try után beírt utasításokat hajtja végre. Ha valami miatt nem sikerül, akkor az Except részben megnézi a Dephi, hogy az a jellegű hiba le van-e kezelve (pl. EConvertError konverziós hiba). Ha igen, akkor végrehajtódnak az ott megadott utasítások, ha nem, akkor a saját kivételkezelője fut le a Deplhi-nek. Ahhoz, hogy a kivételkezelő lefusson, és a program ne álljon le, a Tools/Options/Preferences ablakban a Break on exception-nak nem szabad kijelölve lennie.

Megoldás kilépés gomb... Form1 Name frmrenddatum Caption ‘Adott dátumú megrendelések’

Megoldás 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: Vevő rendelései|Rendelések listája|Kilépés Adott dátumú megrendelések Rendelések számított mezővel

Megoldás Állítsuk be az OnClick eseményeket. frmrendeles.Showmodal; frmvevorend.Showmodal; frmrenddatum.Showmodal; Close;

Megoldás 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)

Feladat a, Keresés indexelt táblában; b,feltételnek megfelelő adatok szűrése; c, keresés index nélküli táblában.

Megoldás A táblák már létre vannak hozva. Ha hiányzik valamelyik, akkor hozzuk létre. Típus:dBASE IV, és töltsük is ki (Table/Edit Table).

Megoldás Áruk tábla szerkezete: Field Name Type Size Dec ARUKOD N 4 ARUNEV C 20 EGYSEGAR N 6 2 AFAKOD N 2 Index:Arukod

Megoldás 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.

Megoldás Rendelés tábla szerkezete: Field Name Type Size Dec RENDKOD N 6 VEVOKOD N 4 ARUKOD N 4 DARAB N 4 DATUM D 8 Index: Rendkod szerint.

Megoldás Hozzunk létre egy adatmodult, ha nem lenne meg a múltkori (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 adatok2 néven. Helyezzünk el rajta a Data Access palettáról 3 Table, 3 Data Source komponenst, majd a jellemzőket az alábbiak szerint állítsuk be:

Megoldás Komponens Jellemző Érték Table1 Name tblaruk DatabaseName ora6 TableName aruk Active True (ilyenkor tervezés közben is látszanak az adatok) IndexName arukod DataSource1 Name dsraruk DataSet tblaruk

Megoldás Table2 Name tblvevok DatabaseName ora6 TableName vevok Active True IndexName vevokod DataSource2 Name dsrvevok DataSet tblvevok

Megoldás Table3 Name tblrendeles DatabaseName ora6 TableName rendeles Active True IndexName rendkod DataSource3 Name dsrrendeles DataSet tblrendeles

Megoldás A képernyőn lévő form unit-jában (unit1) biztosítsuk az utat az adatmodul felé: unit unit1; ... implementation {$R *.DFM} uses adatok2; end.

Megoldás A Data Controls palettáról helyezzünk el 5 db DbEdit-et a vevők adatainak, a Standard palettáról 1 EditBox-ot a keresési feltétel megadásához, 2 db Button-t a kereséshez a vevők táblában és a kilépéshez. Komponens Jellemző Érték DBEdit1 DataSource adatmodul.dsrvevok DataField Vevokod Enabled false

Megoldás DBEdit2 DataSource adatmodul.dsrvevok DataField Vevonev Enabled false DBEdit3 DataSource adatmodul.dsrvevok DataField Irszam

Megoldás DBEdit4 DataSource adatmodul.dsrvevok DataField Varos Enabled false DBEdit5 DataSource adatmodul.dsrvevok DataField Utca

Megoldás Edit1 Name Ekeres Text üres Button1 Name BtnKilepes Caption ‘Kilépés’ OnClick eseménye: Close;

Megoldás Button2 Name Btnkeres Caption ‘Keresés’ OnClick eseménye: procedure TForm1.btnkeresClick(Sender: TObject); begin with adatmodul.tblvevok do indexFieldnames:='vevonev'; if not FindKey([ekeres.text]) then showmessage('Nem találtam ilyen nevű vevőt!'); end;

Megoldás FindKey: Az aktuális index oszlopában (ha összetett az index akkor oszlopaiban) keres rá egy adott rekordra. Ha megtalálta, akkor a rekordmutatót erre a rekordra helyezi. Logikai értéket ad vissza, ami jelzi a keresés sikerességét. Form1 Name frmvevokeres Caption ‘Vevő névszerinti keresése’

Megoldás Kérjünk egy új form-ot (File/New Form) és biztosítsuk az utat az adatmodul felé: unit unit3; ... implementation {$R *.DFM} uses adatok2; end.

Megoldás Tegyünk ki rá egy Grid-et a Data Controls palettáról, a Standard palettáról 1 EditBox-ot a szűrési feltétel megadásához, 1 gombot a kilépésnek és 1-et a szűrés végrehajtására. DBGrid1 Name Dbgvevok DataSource adatmodul.dsrvevok Enabled True Edit1 Name ESzures Text üres

Megoldás Button1 Name BtnSzures Caption ‘Szűrés’ OnClick eseménye: procedure Tfrmszures.btnszuresClick(Sender: TObject); begin with adatmodul.tblvevok do FilterOptions:=FilterOptions-[foNoPartialCompare]+[foCaseInSensitive]; filter:=ESzures.text; filtered:=true; end;

Megoldás foNoPartialCompare opciót ha levesszük, akkor használhatjuk a Joker karaktert (*) is a szűrés feltételének megadásánál, foCaseInSensitive opció hozzáadásával a kis és nagy betűk egyezőségének vizsgálatát tiltjuk le. Ezekhez használatba kell venni a DB unitot! Feltétel megadás az EditBox-ban: vevonev=’vevő neve’ (működéskor!!!)

Megoldás Button2 Name BtnKilepes Caption ‘Kilépés’ OnClick eseménye: Close; Form2 Name frmszures Caption ‘Vevők szűrése’

Megoldás Kérjünk egy új form-ot (File/New Form) és biztosítsuk az utat az adatmodul felé: unit unit4; ... implementation {$R *.DFM} uses adatok2; end

Megoldás A Data Controls palettáról helyezzünk el 5 db DbEdit-et a vevők adatainak, a Standard palettáról 2 EditBox-ot a keresési feltételek megadásához, 2 db Button-t a kereséshez a vevők táblában és a kilépéshez. Komponens Jellemző Érték DBEdit1 DataSource adatmodul.dsrvevok DataField Vevokod Enabled false

Megoldás DBEdit2 DataSource adatmodul.dsrvevok DataField Vevonev Enabled false DBEdit3 DataSource adatmodul.dsrvevok DataField Irszam

Megoldás DBEdit4 DataSource adatmodul.dsrvevok DataField Varos Enabled false DBEdit5 DataSource adatmodul.dsrvevok DataField Utca

Megoldás Edit1 Name Emezo Text üres Edit2 Name Ekeres Button1 Name BtnKilepes Caption ‘Kilépés’ OnClick eseménye: Close;

Megoldás Button2 Name Btnkeres Caption ‘Keresés’ OnClick eseménye: procedure Tfrmkeres2.btnkeresClick(Sender: TObject); begin with adatmodul.tblvevok do if not Locate(emezo.text,ekeres.text,[]) then showmessage('Nem találtam ilyen rekordot!'); end;

Megoldás Locate: index nélküli táblában képes megkeresni az első, feltételnek megfelelt rekordot. Ha van index a keresett mezőnél definiálva, akkor automatikusan felhasználja. Logikai értékként a keresés sikerességét adja vissza. Pl: Locate(‘vevokod’,edit.text,[]); Form3 Name frmvevokeres2 Caption ‘Keresés rendezetlen táblában’

Megoldás 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: Vevő keresés név szerint Kilépés Vevő tábla szűrése Vevő keresés bármely adata szerint

Megoldás Állítsuk be az OnClick eseményeket. frmvevokeres.Showmodal; frmszures.Showmodal; frmvevokeres2.Showmodal; Close;

Megoldás 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)

Feladat 1. A rendelés táblába adatfelvitel TDBLookupListBox és TDBLookupComboBox segítségével. 2. Adott vevő rendeléseinek eddigi összege.

Megoldás A táblák már létre vannak hozva. Ha hiányzik valamelyik, akkor hozzuk létre. Típus:dBASE IV, és töltsük is ki (Table/Edit Table).

Megoldás Áruk tábla szerkezete: Field Name Type Size Dec ARUKOD N 4 ARUNEV C 20 EGYSEGAR N 6 2 AFAKOD N 2 Index:Arukod, Arunev

Megoldás 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.

Megoldás Rendelés tábla szerkezete: Field Name Type Size Dec RENDKOD N 6 VEVOKOD N 4 ARUKOD N 4 DARAB N 4 DATUM D 8 Index: Rendkod szerint.

Megoldás Hozzunk létre egy adatmodult, ha nem lenne meg a múltkori (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, 3 Data Source komponenst, majd a jellemzőket az alábbiak szerint állítsuk be:

Megoldás Komponens Jellemző Érték Table1 Name tblaruk DatabaseName ora6 TableName aruk Active True (ilyenkor tervezés közben is látszanak az adatok) IndexName arukod DataSource1 Name dsraruk DataSet tblaruk

Megoldás Table2 Name tblvevok DatabaseName ora6 TableName vevok Active True IndexName vevokod DataSource2 Name dsrvevok DataSet tblvevok

Megoldás Table3 Name tblrendeles DatabaseName ora6 TableName rendeles Active True IndexName rendkod DataSource3 Name dsrrendeles DataSet tblrendeles

Megoldás A képernyőn lévő form unit-jában (unit1) biztosítsuk az utat az adatmodul felé: unit unit1; ... implementation {$R *.DFM} uses adatok2; end.

Megoldás A Data Controls palettáról helyezzünk el 5 db DbEdit-et a rendelés adatainak, egy DBLookupListBox-ot a vevő nevének és címének kiiratására, 1 DBLookupComboBox-ot az áruk nevének és egységárának, a Standard palettáról 3 db Button-t az új rekord felviteléhez, az adatok rögzítéséhez a rendelés táblában és a kilépéshez.

Megoldás Komponens Jellemző Érték DBEdit1 DataSource adatmodul.dsrrendeles DataField Rendkod Enabled true

Megoldás DBEdit2 DataSource adatmodul.dsrrendeles DataField Vevokod Enabled false DBEdit3 DataSource adatmodul.dsrrendeles DataField Arukod

Megoldás DBEdit4 DataSource adatmodul.dsrrendeles DataField darab Enabled True DBEdit5 DataSource adatmodul.dsrrendeles DataField Datum

Megoldás DBLookupListBox ListSource adatmodul.dsrvevok (melyik táblából vesszük a tartalmát) ListField vevonev;varos;utca (mely mezőket szeretnénk látni ‘;’) DataSource adatmodul.dsrrendeles DataField Vevokod KeyField vevokod (a kiválasztott rekord melyik mezőjének értékét írja be a DataSource adatforrás DataField mezőjébe) A listában megjelenő adatok közül az első oszlop keresett értékének gépélése esetén a beírt értékű rekordra keres rá elég gyors billentyűkattogtatás esetén.

Megoldás DBLookupComboBox ListSource adatmodul.dsraruk ListField arunev;egysegar (több mező esetén ; kell közéjük DataSource adatmodul.dsrrendeles DataField Arukod KeyField Arukod

Megoldás Button1 Name BtnKilepes Caption ‘Kilépés’ OnClick eseménye: Close;

Megoldás Button2 Name Btnrogzit Caption ‘Rögzít’ OnClick eseménye: procedure Tfrmrendfelv.btnrogzitClick(Sender: TObject); begin with adatmodul.tblrendeles do post; end;

Megoldás Button3 Name Btnuj Caption ‘Új adat’ OnClick eseménye: procedure Tfrmrendfelv.BtnujClick(Sender: TObject); begin with adatmodul.tblrendeles do append; edit; end;

Megoldás Ezek után előállítjuk, hogy futtatáskor a Tabulátor gombbal való lépegetésnél milyen sorrendben járjuk be az adatokat (Edit/Tab Order). A megjelenő ablakban egyszerűen csak a helyére húzzuk az objektumot az egér segítségével.

VÉGE