HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Lekérdezés exportálása Oracle-ből TEXT és XLS formátumokba


Példaprogram letöltése

5928 bájt

Készítünk egy komponenst, amely segítségével egy lekérdezés eredménytábláját elmenthetjük TXT és Excel munkafüzet formátumokba. A komponens bármilyen ADOQuery objektum tartalmát képes elmenteni. A mellékelt példában ORACLE adatbázishoz kapcsolódunk.

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.
var
  f: TextFile;
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.
ExcelApp.Quit;

Cikksorozat

#IDKategóriaCikk címeSorozat
4397Windows.NET Framework konfigurálása az operációs rendszerben1. rész
4446Windows.NET Framework konfigurációs snap-in2. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 679. 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 |