2.37k likes | 2.54k Views
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.
E N D
Adatbázis-kezelés DELPHI-ben Készítette:Pető László
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
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 • 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 • 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
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ÍTETTPROGRAM, 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 DbGrid1.DataSource:=DataModule2.DataSource1 DbGrid1.Align:=alClient
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 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ő