A Microsoft Office programcsalád elterjedtsége miatt gyakran lehet szükség arra, hogy bizonyos összetevőit Delphi programból elérjük. Kétrészes sorozatommal a szándékom annak bemutatása, hogy miként lehet egyszerűen és viszonylag könnyen elérni és saját céljainkra felhasználni a Microsoft Office programcsalád elemeit.
A Microsoft Office programcsalád elterjedtsége miatt gyakran lehet szükség arra, hogy bizonyos összetevőit Delphi programból elérjük. Ezzel a cikkel az a szándékom, hogy bemutassam, miként lehet egyszerűen és viszonylag könnyen elérni a Microsoft Office programcsalád elemeit. Nem célom az Office programok összes lehetőségének bemutatása, csupán egy kezdő lökés megadása, melyet felhasználva később már könnyebben tud a cikk olvasója bonyolultabb programokat is létrehozni. A cikk írásánál feltételezem, hogy az olvasó már rendelkezik a Delphi-vel fejlesztői környezetének, a Delphi adatkezelési modelljének, és a BDE komponensek megfelelő ismeretével.
A cikkhez tartozó példaprogramban a következőket fogjuk megvalósítani:
Access adatbázisban tárolt tábla elérése ADO-n keresztül,
Access tábla mezőnkénti exportálása Excel-be OLE Automatizmuson keresztül,
Outlook-ban HTML levél létrehozása OLE Automatizmuson keresztül,
végezetül Word-ben létrehozunk egy új dokumentumot (szintén OLE Automatizmus), s mintegy "állatorvosi lóként" a leggyakrabban előforduló formázási műveletekkel ellátjuk.
A cikkhez mellékelt program működéséhez szükségesek az alábbi Microsoft Office programok feltelepítése:
Microsoft Access,
Microsoft Excel,
Microsoft Outlook (nem Outlook Express!),
Microsoft Word.
Ahhoz, hogy eredményesen tudjunk kommunikálni az Office programjaival szükséges két fogalom ismerete:
ADO (ActiveX Data Object)
Type Library
Az ADO, és az ADO komponensek Delphi-ben
Az ADO a Microsoft OLE DB technológiájára épül, melyet a 1996-ban jelentetett meg OLE DB SDK néven. Az OLE DB bármely táblázatos adatszolgáltató (provider) számára COM felületet biztosít. Az OLE DB hasonló az ODBC API-hoz, azonban néhány eltérést felfedezhetünk közöttük. Például az OLE DB is közvetlenül kommunikál az adatforrással, akárcsak az ODBC, azonban ehhez az adatforrásnak rendelkeznie kell egy providerrel (OLE DB provider). Szerencsére azonban a Microsoft az ODBC-hez is elkészítette az OLE DB providert MSDASQL néven, így bármilyen ODBC adatforrás elérhető OLE DB-vel.
Az OLE DB sok előnye mellett meg kell említeni azt a többletmunkát is, amelyet egy-egy alkalmazás implementálásába kell befektetni. Ennek kivédésére készítette el a Microsoft az OLE DB SDK-hoz mellékelt ADO felületet. Az ADO a felületet biztosítja a programozók számára az OLE DB réteg eléréséhez, mely segítségével egységes felületen keresztül férhetnek hozzá különböző relációs és nem relációs adatbáziskezelőktől kezdve akár file-rendszerekhez is. Az ADO segítségével bármely olyan fejlesztőrendszer - vagy akár egy egyszerű script-nyelv is - amely támogatja az ActiveX technológiát, felhasználhatja a Microsoft OLE DB adatelérési technológiáját. Az ADO több lépcsős fejlődése révén mára már kiforrottsága miatt valós ellenfelévé vált a DAO-nak és az RDO-nak.
Miért is jó az ADO?
Mivel COM serverként DLL-ből töltődik be, így a kliens alkalmazás címterében futhat, ez teljesítmény szempontjából kifejezetten előnyös.
Saját automation interface-e segítségével könnyen elérhető bármilyen alkalmazásból.
Támogatja a OLE-t és a COM-ot (Type Library-n keresztüli elérést).
Az esetek döntő többségében nem szükséges a telepítése, így elkerülhetjük a BDE alkalmazásoknál tapasztalt, kezdő programozók számára nagy bosszúságot okozó telepítőkészlet-összeállítást.
Segítségével többrétegű alkalmazásoknál jelentősen csökkenthetjük az adatforgalmat a BDE-hez képest.
Az ADO beszerzése több helyről is lehetséges. Egyrészt a Windows NT óta az operációs rendszer része az éppen aktuális verzió, másrészt az Office programcsalád telepítőjének is részét képezi, harmadrészt pedig a Microsoft web oldaláról is ingyenesen letölthető a legújabb verziója. (http://www.microsoft.com/data)
Ahhoz, hogy ADO-val dolgozzunk Delphi fejlesztőrendszer alatt Professional vagy nagyobb verziójú Delphi-vel kell rendelkeznünk. A Personal verziónak nem részei az ADO eléréséhez szükséges komponensek. A Delphi-hez adott ADO komponensek remekül illeszkednek a Delphi adatkezelési modelljébe, megtalálhatók közöttük a BDE alapú Database, Table, Query, és StoredProc komponensek ADO megfelelői, mivel mindannyian a TDataset osztály leszármazottjai. E miatt egy vizuális komponens (DBEdit, DBGrid) egy DataSource komponensen keresztül ugyanúgy csatlakozhat egy ADO komponensre, mint BDE-s megfelelőjére.
ADO komponensek, és feladatuk:
ADOConnection: Adatbáziskapcsolat felépítése data providerekkel, a kapcsolódási karakterlánc segítségével. Kapcsolódáskor a felhasználó azonosítását is könnyen elvégezhetjük segítségével. BDE megfelelője a TDatabase.
ADOCommand: Közvetlen SQL parancsok kiadására az ADO data providerek számára, eredményhalmaz nélkül (Insert, Update, stb.) BDE megfelelője a TDatabase.Execute vagy a TQuery.ExecSQL metódus.
ADODataset: Általános adatelérési komponens ADO táblák eléréséhez, BDE megfelelője nincs.
ADOTable: ADO táblák elérésére szolgáló komponens, BDE megfelelője a TTable.
ADOQuery: Egy vagy több tábla adatainak elérésére szolgáló komponens, BDE megfelelője a TQuery.
ADOStoredProc: Tárolt eljárások végrehajtására szolgáló komponens, BDE megfelelője a TStoredProc.
RDSConnection: Többrétegű alkalmazások fejlesztésénél az eredményhalmaz mozgatását végzi különböző folyamatok vagy számítógépek között. BDE megfelelője nincs.