Delphi - TQuery paraméterezése forráskód nélkül

forráskód letöltése
Adott két adatbázis. Van mindegyikben egy olyan mező, mely a másikban is megtalálható. Jelen példában név szerint ez a KOD mező. A feladat az lenne, hogy TQuery komponenssel készítsünk olyan lekérdezést, ahol a második adatbázisból az eredményben csak azok a rekordok látszódjanak, amelyeknél a KOD mező értéke megegyezik az első adatbázis KOD mezőjének értékével.

Ehhez biztos, hogy olyan SQL select-et kell megfogalmaznunk, amely paramétert is tartalmaz. Majd programból mindig beállítjuk ezt a paramétert a leválogatás futtatása előtt, az alapján, hogy az első adatbázisban mi az aktuális rekord KOD mezőjének tartalma.

Ez így tökéletesen működik, de minek leprogramozni a paraméter érték adást, ha ezt anélkül is megoldhatnánk... Adott két adatbázis. Van mindegyikben egy olyan mező, mely a másikban is megtalálható. Jelen példában név szerint ez a KOD mező. A feladat az lenne, hogy TQuery komponenssel készítsünk olyan lekérdezést, ahol a második adatbázisból az eredményben csak azok a rekordok látszódjanak, amelyeknél a KOD mező értéke megegyezik az első adatbázis KOD mezőjének értékével.

Ehhez biztos, hogy olyan SQL select-et kell megfogalmaznunk, amely paramétert is tartalmaz. Majd programból mindig beállítjuk ezt a paramétert a leválogatás futtatása előtt, az alapján, hogy az első adatbázisban mi az aktuális rekord KOD mezőjének tartalma.

Ez így tökéletesen működik, de minek leprogramozni a paraméter érték adást, ha ezt anélkül is megoldhatnánk...

A mellékelt példában egy TPageControl-on helyeztük el a kétféle megoldást. Az első lapon látható a hagyományos megoldás. Itt ha a felhasználó rákattint a Lekérdezés gombra, akkor a Query1 komponens egyetlen paraméterének értéket adunk, majd futtatjuk a lekérdezést az TQuery megnyitásával. Ha változik az első adatbázisban az aktuális rekord pozíciója, akkor egy ismételt gomb lenyomással újra paraméterezzük az SQL select-et és ismét leválogatjuk a megfelelő rekordokat.

Nézzük most viszont a másik lapon lévő megoldást.

Itt azt mondjuk, hogy az SQL select-et úgy készítjük el, hogy a benne megadott paraméter neve a KOD legyen. Tehát pontosan az, mint az első adatbázisban lévő mező, ahonnan a paraméter mindenkori értékét vesszük a lekérdezés során. Második lépésként pedig a Query2 komponens DataSource property-jét beállítjuk az első adatbázisra, ahol a szükséges KOD mező található.

Ha ez megvan, akkor már csak futtatni kell a programot és minden forráskód gépelése nélkül működni fog a lekérdezés. Ráadásul, ha változik az első adatbázisban az aktuális rekord, akkor a lekérdezés automatikusan újra lefut az új paraméter értékkel.