HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Rekordok törlése, gyorsan


Példaprogram letöltése

6691 bájt

Készítünk egy komponenst, amely segítségével egy tetszőleges adatbázis, tetszőleges táblájából törölhetünk ki megadott rekordokat. A törlés végrehajtását feltételhez kötjük. Meg kell adnunk egy mezőt, amelynek az értékeit figyelni akarjuk, valamint egy lista segítségével azokat az értékeket, amelyeket törölni akarunk. A komponens végignézi a tábla összes sorát, és a listában felsorolt értékekkel rendelkező rekordokat törli.

A mellékelt példaprogram megnyitása előtt az SQLDelete.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A példaprogram működéséhez szükséges SQL adatbázis létrehozásához futtassa a mellékelt Run_script.cmd programot.
Amennyiben az SQL adatbázis eléréséhez szükséges, ADOConnection1 objektum ConnectionString értéke az Ön beállításainak nem megfelelő, módosítsa annak értékét, hogy az SQL szerver Proba adatbázisa elérhetővé váljon.
Ahhoz, hogy az SQL szerverhez csatlakozzunk, szükséges egy TADOConnection komponens, amelyhez komponensünk Connection property-jén keresztül csatlakozhatunk.
A TableName property-ben adhatjuk meg az SQL tábla nevét, a KeyColumn-ban pedig annak a mezőnek a nevét, amelynek az értékeit ellenőrizni szeretnénk.
A törlendő értékek listáját a RemoveList, TStringList típusú property-ben adhatjuk meg.
A törlő algoritmus az Execute metódus meghívásával kezdődik.
A komponenst a TComponent osztályból származtatjuk.
Ahhoz, hogy egy ADOConnection objektumot tudjunk használni, a Connection property-t az alábbi módon kell deklarálnunk.
property Connection: TADOConnection read FConnection write SetConnection;
Ha felhasználjuk a komponenst, hozzárendelünk egy ADOConnection objektumot, amelyet utána törlünk, akkor a Delphi hibaüzenetet fog adni. Ennek elkerülésére, implementálnunk kell egy eseményt, amelyben ezt a lehetőséget lekezelhetjük.
procedure TSQLDelete.Notification(AComponent: TComponent; Operation: TOperation);
begin
  inherited;
  if (AComponent=FConnection) and (Operation=opRemove) then
    FConnection:=Nil;
end;
A komponens lényege az Execute metódusban található. Az adatbázishoz, egy TADOTable segítségével csatlakozunk. Végig kell néznünk az adattábla összes sorát. A törlés miatt, a sorok végignézését a tábla végéről célszerű elkezdeni visszafelé.
Last;
while not Bof do begin
  for i:=0 to FRemoveList.Count-1 do
    if TrimRight(TrimLeft(FieldByName(KeyColumn).AsString))=FRemoveList[i] then
      Delete;
    if not Bof then
      Prior;
end;
Minden egyes beolvasott rekord esetén végig kell néznünk a RemoveList-ben megadott értékeket. Ha az adott érték megegyezik a KeyColumn mezőben szereplő értékkel, akkor azt a rekordot töröljük.
A TrimRight és TrimLeft függvények használatára a Char típusú SQL mezők miatt van szükség. Ezeket a szerver szóközökkel egészíti ki a megadott mezőméretre.

Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 245. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |