Delphi - TIBDataSet komponens

Interbase 8. rész

forráskód letöltése
A sorozat mai részében tekintsük át az IBDataSet komponens tulajdonságait, eseményeit és metódusait. Nézzük meg, hogy milyen szerep juthat a komponensnek az IBTable, az IBQuery és az IBSQL komponensek mellett, hiszen e négy komponensnek igen sok azonos funkciója van. Az IBDataSet komponens legfontosabb feladata az, hogy valamilyen SQL utasítást futtassunk. Ezek általában a SELECT, DELETE, INSERT és az UPDATE, amelyeket külön tulajdonságok segítségével adhatunk meg. A komponens gyakran valamilyen adathalmazt szolgáltat eredményül (SELECT). A komponens a TDataSet-ből származik, így minden gond nélkül együttműködik az adatmegjelenítő komponensekkel.

A TIBDataSet komponens használata
  • Helyezzünk egy komponenst a Form-ra.
  • Állítsuk be a Database tulajdonságot egy TIBDatabase komponens segítségével.
  • Állítsuk be a Transaction tulajdonságot egy TIBTransaction komponens használatával.
  • Írjuk be a kívánt SQL utasítást a komponens megfelelő tulajdonságába (InsertSQL, DeleteSQL, ModifySQL, SelectSQL). A paramétereket állítsuk be a Params tulajdonság használatával.
  • Ha a komponens valamilyen SELECT utasítást használt, akkor a lekérdezés eredményét egy adatmegjelenítő komponens segítségével böngészhetjük.
  • Nyissuk meg a komponenst. Ha a lekérdezés egy eredményhalmazt szolgáltat, akkor az Active tulajdonságot vagy az Open metódust használjuk. Az olyan lekérdezéseket, amelyek csak egy műveletet hajtanak végre egy táblán, de nem adnak vissza eredményt, az ExecSQL metódussal futtathatjuk.
A DataSource tulajdonság felhasználása

Csak a paraméteres lekérdezések esetén van értelme. Ha a paraméter értéke egy adatforrás valamely mezőjéből származik (és nem a felhasználó gépeli be azt), akkor a paraméterérték(ek) megadására használhatjuk a TIBDataSet komponens DataSource tulajdonságát. Ezt arra az adatforrásra kell irányítanunk, amelyikből a paraméter értéke származik. A lekérdezés lefuttatásakor a rendszer kiértékeli, hogy be van-e állítva a DataSource jellemzője, és ha igen, akkor az ott beállított adatforrásban keres egy - a paraméter nevével megegyező nevű - mezőt. Ennek a mezőnek aktuális rekordbeli értéke kerül a lekérdezésbe paraméterértékként. Később, amikor az aktuális rekord megváltozik, tehát a megfelelő mező értéke is más lesz, a rendszer automatikusan frissíti a lekérdezést, újrafuttatja az új paraméterértékkel.


A komponens legfontosabb tulajdonságai:
  • Active: Megmutatja vagy beállíthatjuk segítségével, hogy a táblánk aktív-e vagy sem.
  • AutoCalcFields: A tulajdonság igaz értéke lehetővé teszi, hogy a tábla frissítésekor, megnyitásakor vagy egyéb definiált esetekben automatikusan lefusson az OnCalcFields esemény, amennyiben lekezeltük.
  • BufferChunks: Beállíthatjuk, hogy a buffer mérete mennyivel nőjön (rekordokban), ha betelik.
  • ChachedUpdates: A gyorsítótáras frissítés engedélyezését határozhatjuk meg. Amikor a tulajdonságot igazra állítjuk, a frissítések (módosítások, törlések, új rekord beszúrása) csak a program gyorsítótárában, a kliens gépen lesz eltárolva. Amikor végeztünk minden módosítással, az alkalmazásunk helyben tárolt módosítást elküld egyszerre, egy tranzakció keretében az adatbázishoz.
  • DataSource: Beállíthatjuk, hogy mely adatforrás (TDataSource) alapján épüljön fel egy paraméteres lekérdezés.
SELECT * FROM ORDERS O WHERE (O.CUSTNO = :CUSTNO)

Ez a formula egy olyan eredményhalmazt ad, ahol az ORDERS tábla eredményei a TDataSource komponens által meghatározott adatbázistól függenek a WHERE záradékban megadottak szerint.
  • DeleteSQL: Adatok törlésekor használt SQL utasítást adhatunk meg.
  • InsertSQL: Adatok beszúrásakor használt SQL utasítást adhatunk meg.
  • ModifySQL: Adatok módosításakor használt SQL utasítást adhatunk meg.
  • ParamCheck: Beállíthatjuk, hogy ha futási időben változnak a lekérdezés paraméterei, újra kell-e azokat generálni. Akkor hasznos számunkra ez a tulajdonság, ha DDL utasítást futtatunk. Tárolt eljárások futtatása esetén többnyire hamis értékűre szokták állítani.
  • Params: A lekérdezéshez szükséges paramétereket adhatjuk meg.
  • Prepared: Jelzi, ha a lekérdezés már elő van készítve.
  • RefreshSQL: Frissítéskor használt SQL utasítást adhatunk meg.
  • SelectSQL: Adatok kiválogatásakor, lekérdezésekor használt SQL utasítást adhatunk meg.
  • StatamentType: A lekérdezés típusával tér vissza. Lehetséges értékei: SQLUnknown, SQLSelect, SQLInsert, SQLDelete, SQLUpdate, SQLDDL, SQLGetSegment, SQLPutSegment, SQLExecProcedure, SQLStartTransaction, SQLCommit, SQLRollback, SQLSelectForUpdate, SQLSetGenerator.
  • UniDirectional: Beállíthatjuk, hogy a kétirányú kurzorok engedélyezettek legyenek-e a tábla számára.
  • UpdateObject: Itt egy kapcsolódást adhatunk meg egy TIBUpdateSQL komponens felé, amelyet akkor használ az alkalmazás, ha frissíteni kell az eredményeket. Ezzel a lehetőséggel a 11. részben foglalkozunk behatóbban.
Események:
Nagyon sok, például a Tquery vagy TTable komponensnél már megismert tulajdonsággal találkozhatunk. Itt csak az újabbakkal ismerkednénk meg.
  • AfterDatabaseDisconnect: Az esemény akkor aktiválódik, miután az adatbázissal megszakadt a kapcsolatunk.
  • BeforeDatabaseDisconnect: A kapcsolat megszakadása előtt váltódik ki ez az esemény.
  • DatabaseFree: Az esemény bekövetkezik, amint az adatbázis által használt memória felszabadul.
  • AfterTransactionEnd: Egy tranzakció befejezése után aktiválódó esemény.
  • BeforeTransactionEnd: A tranzakció befejezése előtt következik be ez az esemény.
  • TransactionFree: Az esemény akkor váltódik ki, miután a tranzakció által használt memória felszabadul.
Metódusok:
  • BatchInput: Futtathatunk egy paraméterezett SQL utasítást (általában INSERT) úgy, hogy az adatokat egy fájlból töltjük be az adatbázisba.
  • BatchOutput: Az aktuális lekérdezés eredményét menti egy megadott fájlba.
  • ExecSQL: Olyan SQL utasítások futtatására használhatjuk, amelyek nem adnak vissza eredményhalmazt.
  • Prepare: Arra használhatjuk ezt az eljárást, hogy a lekérdezés számára erőforrást foglaljunk le, és az optimalizálása megtörténhessen. Ezáltal ha többször is meghívjuk a lekérdezést, akkor az gyorsabban fog lefutni. A Delphi rendszer automatikusan optimalizálja a lekérdezést a futtatása előtt, ha mi ezt nem tettük meg, majd a futás után felszabadítja az erőforrásokat. Ezt annyiszor teszi meg, ahányszor az adott lekérdezés lefut.
  • Unprepare: Felszabadítja az utoljára meghívott Prepare metódus által lefoglalt erőforrásokat, mind a kliens, mind a szerver oldalán.
  • Open: A lekérdezés megnyitása, ha eredményhalmazzal tér vissza.
  • Close: A lekérdezés bezárása.
Természetesen több eseménnyel, tulajdonsággal és metódussal is rendelkezik a komponens, de ezek például egy egyszerű TTable komponensnél is megtalálhatóak és használhatóak.

Ha a komponensen a jobb egérgombbal kattintunk, és a megjelenő helyi menüből a Dataset Editor… pontot választjuk, akkor egy kis ablak nyílik meg, amelyben könnyedén el tudjuk végezni a tulajdonságok beállítását. Az ablak első oldalán lehetőségünk van az adott paraméterek segítségével SQL utasítást generálni, míg a második oldalon mi szerkeszthetjük a parancsokat.

Interbase cikksorozat