paraméteres lekérdezések

Components IBDataSet, IBQuery IBSQL és végre mind a statikus és a dinamikus SQL. A dinamikus SQL különbözik a jelenléte a statikus paraméterek. Egy példa a statikus SQL:

select * from tábla

ahol mező> 5

Ha ehelyett a 5. számú kellene használni a kapott értéket az adatok a felhasználó által bevitt, szükséges, hogy egy paraméteres kérelmet (ParamCheck: = True):

select * from tábla

ahol mező>: param

Colon vagy a „?” Szimbólummal azt jelzik, hogy a kérelem magában foglalja a megbízás paramétert. Ez úgy történik, az alábbiak szerint:

IBQuery.SQL.Clear; // tiszta szöveget sql

IBQuery.SQL.Add (select * from tábla, ahol a mező>: param '); // állítsa a lekérdezés szövegét

IBQuery.Prepare; // elküldi a kérést a szervernek, ellenőrizze annak helyességét, stb

. IBQuery.ParamByName ( 'param') asInteger: = 5; // állítsa a paraméter értékét

IBQuery.Open; // vagy IBQuery.ExecSQL

Készítsük el a hívást nem szükséges statikus lekérdezések - a komponens maga végzi el automatikusan, ha Készítsünk nem hívott.

Megjegyzés. Készítsünk után akkor lehet alkalmazni, az ingatlan-terv, mint Készítsünk csak miután a szerver közli a lekérdezés végrehajtási terve.

Készítsünk nagyon kényelmes közben ismételt végrehajtása ugyanazon lekérdezés különböző paraméterek értékeit. Készítsünk egy időben az úgynevezett egyszer és beállítási paraméterek és a hívás ExecQuery végre, ahányszor szükséges. Leggyakrabban ezt a módszert alkalmazzák a Beszúrás és frissítés kéri.

Paraméter neveket kizárólag támogatott kliens könyvtár. Azaz, a szerver megérti a paraméterek csak abban a formában a karakter „?”. Ha az összetevők képesek kezelni paramétereket is, azok elküldése előtt a kérést a szerver „cut” őket kérelmet küldenek a típus

select * from tábla

Néhány komponens könyvtár nem támogatják, vagy helytelenül kezelik kéri, hogy két vagy több paraméter az azonos nevet.

szűrő

Talán a BDE vagy azt, hogy lehet beállítani IBX komponens az adatbázis eléréséhez aktívan alkalmazza a szűrési bejegyzéseket. Általában szűrés IBX működik ugyanúgy, mint a BDE.

Ez az összetevő a Filter tulajdonság kell leírni szűrési feltételek ha felveszi a WHERE a szokásos kérés SQL. IBTable összeállít egy lekérdezést egy előre meghatározott TableName tábla nevét, hozzáadja a szűrési feltétel, ha mindkét szűrő, és hozzá struktúra ORDER BY hacsak „válogatás” az eredmény beállított tulajdonságok vagy IndexFieldNames IndexNév. Ezért a szűrő szöveget kell megadni az összes funkcióját InterBase szintaktikai vagy Firelbird. például

Ennek eredményeként, a kérést a szerver, akkor a következő formát

válasszuk az id, Vezetéknév, Keresztnév.

ahol LastName, mint a 'A%'

IbDataSet, ibQuery

Ezek a komponensek végre egy lekérdezést, amely pontosan meghatározza SelectSQL vagy SQL tulajdonságait. Ezért további szűrési csak úgy lehetséges, OnFilterRecord.

OnFilterRecord

Components IBTable, IBDataSet IBQuery és lehetővé teszi, hogy használja ezt az eseményt, hogy kiszűrje rekordokat. Ellentétben IBTable, ahol a szűrő ingatlan, megadhat további szűrési feltételeket a lekérdezést, amely fut a szerver, OnFilterRecord határozza meg a „látás” rekord már elfogadott DataSet-edik szerver. A módszer két paramétert - a DataSet, azaz a komponens igényelt szűrőt (hogy képes adatokat letölteni az „aktuális” record), az elfogadás, amely meghatározza, hogy megmutassa ezt a rekordot adatforrás összefüggő komponens, vagy sem. Annak érdekében, hogy szimulálják a szűrőt, amint az a fenti példában az IBTable, a OnFilterRecord kell írni valami ilyesmit:

Elfogadás: = (DataSet.FieldByName (Vezetéknév) asString> = 'A'). És

(DataSet.FieldByName ( 'LastName'). AsString <'B');

Ne feledje, hogy a szűrést végeznek a helyi puffer már megtett bejegyzések szerver. Azaz, ha a program állítólag néhány szűrési lehetőségek, érdemes lehet csökkenteni a terheket az ügyfél része és ha változik a szűrő kialakítása iránti kérelmet SelectSQL szükséges feltétele, ahol (ahogy ez nem IBTable, csak a vonal, ahol kikötés akkor adjunk a lekérdezés szövegét is).

Kapcsolódó cikkek