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).