Adatbázis kezelés Delphiben Delphi programozás 6. ELŐADÁS Adatbázis kezelés Delphiben Származtatott mezők
Adatbázis kezelés Komponensek: DataSource – adatforrás Delphi programozás Adatbázis kezelés Komponensek: DataSource – adatforrás Table - helyi tábla gyors eléréséhez Query – lekérdezés DataBese – tranzakció, kapcsolat ellenőrzésére, biztonsági műveletek, távoli adatbázis kapcsolódása, másodneves hivatkozás StoredProc – tárolt eljárás (SQL kiszolgálókkal)
DBGrid tulajdonságok Adatmegjelenítő komponens egyéb tulajdonságai: Delphi programozás DBGrid tulajdonságok Adatmegjelenítő komponens egyéb tulajdonságai: Options Editing RowSelect Etc. Columns
DBGrid - Columns Egy oszlop kiválasztható a szerkesztőablakban Delphi programozás DBGrid - Columns Egy oszlop kiválasztható a szerkesztőablakban Annak tulajdonságlistája megjelenik az ObjectInspectorban, ami szerkeszthető, események rendelhetők hozzá: ReadOnly Width Title Caption PickList (lásd köv. fólia)
DBGrid - Columns - PickList Delphi programozás DBGrid - Columns - PickList PickList szerkesztőablakában felsoroltakat kínálja fel a program,mint mezőérték Megjegyzés: Származtatott mezők esetén más értéket nem vehet fel a lista, egyébként igen.
Táblamező elérése - Field Delphi programozás Táblamező elérése - Field A Field (TField osztály) komponens segítségével lehetséges. Az adatfüggő vezérlők közvetlenül az adatbázis mezőire vonatkozó Field objektumhoz kapcsolódnak A táblák és lekérdezések a mezőket ebben tárolják A következő mezőhivatkozási módok egyenrangúak, tetszőlegesen használhatók: Adatmodulnev.Tablanev.FieldByName(‘Mezonev').AsString Adatmodulnev.Tablanev.Fields[0].AsString Adatmodulnev.Tablanev[‘Mezonev’].AsString
Mezőobjektumok jellemzői Delphi programozás Mezőobjektumok jellemzői Adatmodulnev.Tablanev.FieldByName(‘Mezonev').Value Value – értéket írhatunk, olvashatunk AsString, AsInteger… - leolvashatjuk és típust átállíthatjuk IsNull – lekérdezhető, hogy üres-e az adott mező DisplayLabel – mezőcímke megadása (pl. , magyarosítani szeretnénk) DisplayWidth – mezőszélesség átállítása EditMask – bemeneti maszk állítása (pl. dátumformátumnál, telefonszámnál) MinValue, MaxValue – megengedett értékek megadása Visible – láthatóság ReadOnly – nem szerkeszthető mező
Származtatott mező számítása Delphi programozás Származtatott mező számítása Adatbázisunkban a redundanciát kerüljük de adatmegjelenítéskor célszerű idegen kulcs helyett nevesíteni a felhasználó számára a mezőértékeket. Ez származtatott mezőkkel érhető el. Típusai: Kikeresett mező (Lookup field) – értékét egy másik táblából vesszük Számított mező (Calculated field) – értéke képlet alapján számolandó , az adat nincs egyik táblában sem
Kikeresett mező létrehozása Delphi programozás Kikeresett mező létrehozása Példánkban a személyek végzettségét tároló adatbázist használunk. A végzettséget külön táblában tároljuk (szem_kepesites, szem_kepesites_nev) Szeretnénk megjeleníteni a képesítés azonosító helyett a képesítés megnevezését. szem_kepesites szem_kepesites_nev
Kikeresett mező létrehozása Delphi programozás Kikeresett mező létrehozása Helyezzünk el egy új Table komponenst, melyet a szem_kepesites táblára irányítunk.
Kikeresett mező létrehozása Delphi programozás Kikeresett mező létrehozása Tábla megnyitásával (dupla balegér klikk)a szerkesztőablak segítségével vegyük fel a megjeleníteni kívánt mezőket: Egyrészt az eredeti mezőnevek szerint – Add fields Másrészt a kikeresett mező szerint (lásd köv. fóliák) - New field
Kikeresett mező létrehozása Delphi programozás Kikeresett mező létrehozása New field – szerkesztőablak segítségével megadhatók a származtatott mező paraméterei: Neve Típusa (Data, Calculated, Lookup)
Kikeresett mező létrehozása Delphi programozás Kikeresett mező létrehozása Lookup definition Key field – kapcsolódó mező az adattáblánkból Dataset – Keresőtábla LookupKeys – A kapcsolódó mező a keresőtáblából Result Field – Választott mező érték
Számított mező létrehozása Delphi programozás Számított mező létrehozása Másik típus a számított mező, amikor az új mezőértéket képlet alapján számoljuk. Mező típusa: Calculated
Számított mező létrehozása Delphi programozás Számított mező létrehozása Az új mező számítását a táblakomponens OnCalcFields eseménymezőjében kell megadni. procedure TForm1.Table3CalcFields(DataSet: TDataSet); begin with Dataset Do FieldByName('Szül_év').Value:= 2009 - FieldByName('Életkor').Value; end;
További metódusok Hibakezelés metódusa: Not VarIsNull(mezőnév) Delphi programozás További metódusok Hibakezelés metódusa: Not VarIsNull(mezőnév) Értékkeresés: Lookup
Listakomponensek Ha az adattartalmat adattáblába szeretném vezetni: Delphi programozás Listakomponensek Ha az adattartalmat adattáblába szeretném vezetni: DBListBox, DBComboBox lebomló lista tartalmát nekünk kell megadni DataSource DataField Items with DBComboBox Do begin DataSource := adatforras; DataField := ‘Mezőnév’ Items.Add(‘Informatikus’); end;
Listakomponensek Ha az adattartalmat adattáblába szeretném vezetni: Delphi programozás Listakomponensek Ha az adattartalmat adattáblába szeretném vezetni: DBLookupListBox, DBLookupComboBox a lebomló lista tartalmat is adattáblából vesszük ListSource – mely adatforrásból van az adattartalom ListField – mely mező jelenjen meg KeyField – mely mező értékét írja a DataSource DataField mezőjébe DataSource DataField