HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Adatbázis tábla szerkezetének automatikus dokumentálása Word-ben


Példaprogram letöltése

10223 bájt

Ha nagyobb adatbázisokkal dolgozunk, akkor célszerű ezek szerkezetét valamilyen módon dokumentálni. Ez nagyban megkönnyítheti a munkát, hiszen a kinyomtatott dokumentáció folyamatosan előttünk lehet miközben dolgozunk, illetve az adatbázis szerkezet dokumentálása fontos része az egész project leírásának. Ebben a példában egy olyan komponenst készítünk, amely egy adatbázis táblájának szerkezetéből elkészít egy Word dokumentumot. Ez tartalmazni fogja a tábla mezőinek és indexeinek tulajdonságait, formázott szövegként.

A mellékelt példaprogram megnyitása előtt a DBStructToWord.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponenst a TComponent osztályból származtatjuk. Ahhoz, hogy egy adatbázis táblát egyértelműen azonosítani tudjunk, szükség lesz az adatbázis és a tábla nevére. Az adatbázis nevét a DatabaseName, a tábla nevét pedig a TableName property-ben adhatjuk meg. Az adatbázis nevét nem szükséges megadni, de ekkor a tábla nevét a teljes elérési útvonallal együtt kell megadni.
A Visible property-vel állíthatjuk, hogy a művelet közben látjuk-e a dokumentum készítését, vagy minden a háttérben történik. Ha a Visible property értéke hamis, akkor a Word nem jelenik meg, és a dokumentum elkészülte után be is záródik. Ha a property értéke igaz, akkor a Word megjelenik, látni fogjuk a dokumentumot, és ez a művelet végén nem lesz bezárva.
A FileName property-ben megadhatjuk az elkészült dokumentum fájlnevét. Ha megadjuk, akkor a komponens elmenti a dokumentumot ebbe a fájlba, ellenkező esetben nem. A fájl nevét kiterjesztés nélkül ajánlott megadni.
A művelet az Execute metódus meghívásával indul. Ebben létrehozunk egy TTable típusú objektumot (Table), majd átadjuk a megfelelő property-knek a DatabaseName és TableName property-k értékét. Ezután meghívjuk a Table FieldDefs és IndexDefs objektumának Update metódusát, melyekkel a mezők és indexek adatait töltjük be.
Ezután kapcsolódunk a Word alkalmazáshoz, és ha ez sikerült, akkor létrehozunk egy új dokumentumot. Ezután beállítjuk az új dokumentum margóinak méretét 1,5 cm-re. A margók méreteit a Document objektum (WordDoc) PageSetup objektumában tudjuk beállítani. Az értékeket pontban kell megadni, ezért az 1,5 cm-t át kell számítani pontba. Ehhez az értéket meg kell szorozni 28,35-tel.
var
  margin: single;
...
  margin:=1.5*28.35;
  WordDoc.PageSetup.LeftMargin:=margin;
  WordDoc.PageSetup.TopMargin:=margin;
  WordDoc.PageSetup.RightMargin:=margin;
  WordDoc.PageSetup.BottomMargin:=margin;
Ha ez megvan, akkor beállítjuk a stílust „Címsor 1”-re, és beírjuk az adatbázis és a tábla nevét. A „Címsor 1” stílust a wdStyleHeading1 konstanssal állíthatjuk be:
  WordDoc.Range.Style:=wdStyleHeading1;
  WordDoc.Range.Text:=FDatabaseName+' / '+FTableName;
Ezután létrehozunk egy új bekezdést, amelybe beírjuk az STR_FIELDDEFS konstans értékét, és a stílusát beállítjuk „Címsor 2”-re. A feliratokat konstansokban helyeztük el, hogy programból egyszerűen lehessen módosítani őket, amennyiben ez szükséges.
A felirat alá beszúrunk egy táblázatot, amelynek 5 oszlopa lesz, és a tábla mezőnek számánál egyel több sora. Az öt oszlopban a következő adatokat fogjuk megjeleníteni: mező neve, típusa, hossza, a törtszámok tizedes jegyeinek száma, a mezőt kötelezően ki kell-e tölteni (Required tulajdonság). Ezeket az adatokat a Table objektum FieldDefs property-jéből tudhatjuk meg. A FieldDefs property tartalmazza a tábla mezőinek TFieldDef típusú objektumait. A TFieldDef osztály Name property-je a mező nevét, a Size a mező méretét (pl. sztring típus esetén a sztring maximális hosszát), a Precision a törtszámok tizedes jegyeinek számát (nem minden esetben), a Required pedig megadja, hogy a mezőt kötelezően ki kell-e tölteni, vagyis lehet-e NULL értéke. Ha ez utóbbi property értéke igaz, akkor a mező nem tartalmazhat NULL értéket. A mező típusát a DataType property-ből tudhatjuk meg.
Egy ciklusban beolvassuk a mezők adatait, és beírjuk azokat a táblázat megfelelő celláiba.
A következő feladat az indexek adatainak megjelenítése. Az nem biztos, hogy tartozik a táblához index, ezért ellenőrizzük az IndexDefs objektum Count property-jének értékét. Ez tartalmazza a táblához tartozó indexek számát, beleértve az elsődleges kulcs indexet is. AZ indexek adatait egy-egy táblázatban fogjuk megjeleníteni, egymás alatt. A táblázat fölé az index nevét helyezzük, kivéve az elsődleges kulcs indexet, mivel ennek nincs neve (STR_PRIMARYKEY). Az IndexDefs property az egy-egy indexhez tartozó TIndexDefs típusú objektumokat tartalmazza, amelyekből kiolvashatjuk az adott indexhez tartozó adatokat. A Name property-ből tudhatjuk meg az index nevét, a Fields-ből pedig az indexben szereplő mezők neveit. A CaseInsFields property tartalmazza azoknak a mezőknek a neveit, amelyek a rendezéskor érzékenyek a kis- és nagybetűkre. Ez a property nem feltétlenül tartalmaz adatot, csak néhány speciális esetben, például amikor az index tartalmaz olyan mezőket is, amelyek megkülönböztetik a kis- és nagybetűket, és olyanokat is, amelyek nem. A DescFields azokat a mezőket tartalmazza, amelyek szerint csökkenő sorrendben kell rendezni az adatokat. Az Expression dBase táblák esetén az index kifejezést tartalmazzák, ha az index nem egyszerű mezőkből áll. dBase esetén az index fájl neve. Az Options property különböző kapcsolókat tartalmaz, amelyek az index egyes tulajdonságát határozzák meg (pl. egyedi index, elsődleges kulcs, kifejezés, stb.).
Mivel nem biztos, hogy minden property tartalmaz adatot, ezért ezt figyeljük, és csak az érvényes adatokat tartalmazó property-ket szúrjuk be a dokumentumba. Ehhez egy belső eljárást is készítünk (AddIndexProperty), ami beszúrja a táblázatba az adott sort, és a property adatait olvashatóbb formába alakítja (pl. a mezőket elválasztó karaktereket új sor karakterekre cseréli).
Ha elkészült a dokumentum, akkor ellenőrizzük, hogy a FileName property-ben van-e megadva fájlnév. Ha van, akkor elmentjük a dokumentumot a megadott néven. Ezután ellenőrizzük a Visible property értékét is. Ha ez hamis, akkor bezárjuk a dokumentumot, és a Word-öt is, de csak abban az esetben, ha már nincs megnyitott dokumentum.

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