
A mellékelt példaprogram megnyitása előtt az OracleExport.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponenst Query property-jén keresztül kapcsolhatjuk hozzá egy TADOQuery objektumhoz, melynek tartalma bármilyen adatforrásból származhat.
Mielőtt meghívnánk a komponens valamelyik metódusát, az ADOQuery objektum Active property-jének értékét igazra kell állítanunk.
A SaveToTXT metódus a lekérdezés tartalmát egy TEXT formátumú állományba menti el.
function SaveToTXT(FileName: String): Boolean;
A FileName paraméterben a létrehozandó állomány nevét kell megadnunk. A függvény visszatérési értéke csak akkor igaz, ha a TEXT állomány létrehozása sikeres volt.
A lekérdezés eredménytábláját a SaveToExcel metódus meghívásával menthetjük el Excel munkafüzetként.
function SaveToExcel(FileName: String): Boolean;
A FileName paraméterben a létrehozandó állomány nevét kell megadnunk. A függvény visszatérési értéke csak akkor igaz, ha a munkafüzet létrehozása sikeres volt.
Mindkét esetben legelőször a lekérdezésben szereplő adatmezők nevei kerülnek bele az új állományba, fejlécként. Ezután következnek az eredménytábla sorai.
Amikor egy Oracle adatbázishoz csatlakozunk, meg kell adnunk az adatbázis nevét, felhasználói nevünket, valamint jelszavunkat. Az adatbázis neve alapértelmezés szerint ORCL.
A felhasználói nevünkhöz kapcsolt jogok határozzák meg, hogy mely adatbázisokat érhetjük el, valamint hogy milyen műveleteket végezhetünk azokon.
A komponenst a TComponent osztályból származtatjuk.
Azért, hogy a komponenshez kapcsolt TADOQuery objektum eltávolítása ne okozzon hibaüzenetet a Delphi-ben, felül kell írnunk a Notification metódust.
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
Ha komponenseltávolítás történik, az FQuery változó értékét Nil-re kell állítanunk.
if (AComponent=FQuery) and (Operation=opRemove) then
FQuery:=Nil;
Konvertálás TXT állományba
A TEXT állomány létrehozásához egy TextFile típusú változót használunk.
Létrehozzuk a fizikai állományt.
AssignFile(f,FileName);
Rewrite(f);
Az exportálás során végig kell mennünk a lekérdezés eredménytáblájának sorain. Azért, hogy a felhasználó a műveletből semmit ne vegyen észre, kikapcsoljuk az adatbáziskontrolok működését, és feljegyezzük az aktuális könyvjelzőt.
with FQuery do begin
...
DisableControls;
BookMarkStr:=Bookmark;
Egy előzetes feldolgozás segítségével végigmegyünk a tábla sorain, és a ColumnWidths tömbbe feljegyezzük a leghosszabb értékek méretét. Ennek alapján tudni fogjuk, hogy a TXT állományban az egyes értékek után mennyi szóközt kell beírnunk azért, hogy az adatok olvasható formátumban, egymás alatt helyezkedjenek el.
Az első sorba feljegyezzük a mezők neveit, majd ezután a sorokban szereplő értékeket.
A feldolgozás végén visszakapcsoljuk az adatbáziskontrolokat.
BookMark:=BookMarkStr;
EnableControls;
Konvertálás Excel munkafüzetbe
Az Excel programhoz és objektumaihoz OleVariant típusú változók segítségével csatlakozunk. Az OleVariant típus a ComObj unit-ban van implementálva.
Első lépésként a háttérben megnyitjuk az Excel programot.
ExcelApp:=CreateOleObject('Excel.Application');
Létrehozunk egy új munkafüzetet, majd egy Range objektum segítségével hozzáférünk a celláihoz.
ExcelApp.WorkBooks.Add;
Range:=ExcelApp.ActiveWorkBook.ActiveSheet.Cells;
A fejlécet az alábbi algoritmussal menthetjük el:
Row:=1;
for i:=1 to FQuery.FieldCount do begin
Range.Cells[Row,i].Value:=FQuery.Fields[i-1].FieldName;
Range.Cells[Row,i].Font.Bold:=True;
end;
Inc(Row);
A fejléc elmentéséhez hasonlóan végezhetjük el a sorok exportálását is.
A munkafüzetet a SaveAs metódussal menthetjük el.
ExcelApp.ActiveWorkBook.SaveAs(FileName:=FileName);
Az exportálás végén kilépünk az Excel programból.