HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Internetes számlázó program készítése: az adatbázisok


Internetes számlázó 1. rész

Példaprogram letöltése

156237 bájt


Most induló, 10 részes cikksorozatunk a következő feladat megvalósítását tűzi ki célul: hozzunk létre egy olyan alkalmazást, melyet az interneten, illetve intraneten keresztül használva bárki – akinek jogosultsága van – képes legyen egy böngészőn keresztül számlát létrehozni annak minden szükséges adatával együtt, majd nyomtatni ezt a számlát.
Így létrejön egy olyan számlázó program, melyhez a kliens gépére semmit nem kell telepítenünk, hanem csak használnunk azt. Persze azért az nem árt, ha operációs rendszer és egy internetes böngésző van a gépen.
A Delphi-vel készülő internetes alkalmazás fejlesztésének e cikksorozat keretén belül bárki neki állhat nyugodtan, még az is, aki eddig nem foglalkozott a szoftverfejlesztés területén e témával, mivel sorozatunk minden szükséges lépést ismertet a megvalósításhoz, egyedül némi HTML és a Delphi alapszintű ismerete szükséges.
A programot úgy készítjük, hogy az egyaránt működjön MS SQL vagy Dbase adatbázisokkal is.

A megvalósításhoz a Delphi5 vagy ennél magasabb verzió szükséges. Ha azonban megelégszünk a Dbase adatbázissal a rendszerhez, akkor a közreadott példa akár Delphi 4-el is használható. Ez esetben persze el kell távolítani az MS SQL-el kapcsolatos részeket. Delphi 5 esetében ajánlatos a Update #1 és az ADO Update telepítés, mivel az SQL szerver eléréshez ADO-t használunk, amit viszont a Delphi hibásan kezel a javítócsomagok nélkül.
A készítendő rendszerhez minimálisan az Internet Explorer 5 verzióját javasoljuk. A rendszer IE6 alatt készült és nem lett tesztelve más típusú böngészővel.

A rendszer fejlesztéséhez feltételezzük, hogy adott egy olyan számítógép (akár helyi, akár a hálózaton elérhető), melyen működőképes az Internet Information Server, esetleg a Personal Web Server. Ezek telepítésével és konfigurációjával kapcsolatban részletesebb információ található az alább hivatkozott cikkeinkben.
Szükség lesz egy gépre, melyen fut az MS SQL szerver valamely változata. Ezek lehetnek akár egy gépen is, de akár a hálózatban több gépre is elosztva. A Dbase kezeléséhez a Delphi BDE-jét használjuk, így erre is szükség van az adott gépen.

Sorozatunk első részében az adatbázisok tervezésével és létrehozásával foglalkozunk. A rendszert a számlakészítéshez elengedhetetlen funkciókkal fogjuk felruházni, így csak az alapvető adatok tárolására lesz szükség. Tárolnunk kell tehát a vevők adatait (customers tábla), szükség lesz a termékek adataira (products tábla), létrehozunk egy felhasználói táblát (userdata tábla), melyben a rendszert használható személyek neve, jelszava kap helyet és végül szükség lesz egy táblára, mely a számlák fejrész adatait tárolja (invoice tábla) és egyre, mely a számlák tételeit tárolja (invoicedetail tábla).

Nézzük sorra a táblákat, melyeket az MS SQL-ben hozunk létre, majd onnan exportáljuk Dbase-be, így a két adatbázis rendszert valójában csak egyszer kell létrehoznunk.
A létrehozáshoz az MS SQL Enterprise Manager-t használjuk. A mellékelt SQLData könyvtárban lévő adatbázist feltelepíthetjük a rendszerbe, ha a Database elemen jobb gombbal kattintunk és az All task – Attach Database menüpontot választjuk. Nézzük miként is jött létre ez az adatbázis:

Létrehozunk egy adatbázist NetInvoice névvel, majd felvesszük az alábbi táblákat.

Customers tábla

CustomerID int – egyedi azonosító a vevők részére, az Identity 1, 1
CustomerName varchar(80) – vevő neve
ContactName varchar(50) – kapcsolat tartó személy neve
PostalCode char(4) - irányítószám
City varchar(50) – település neve
Address varchar(80) – utca, hsz.
Phone varchar(50) – telefonszám

E táblában kapnak helyet a vevők adatai. Amikor számlát készítünk, akkor majd egy listából választhatjuk ki a vevőt név és cím alapján. A számla táblájába átmásoljuk a CustomerName, PostalCode, City, Address mezők tartalmát, hogy a számla adatait egy esetleges módosítás ne érintse a jövőben. Erre szükség van, hiszen a vevőnk címe megváltozhat idővel és ha a számla táblában csak a vevő kódjával hivatkoznánk a Customer táblára, akkor egy régebbi számlának is megváltoznának az adatai, ami nem biztos, hogy egy jó megoldás lenne.


Products tábla

ProductID int – egyedi azonosító a termékek részére, az Identity 1, 1
ProductName varchar(50) – a termék megnevezése
KSH varchar(20) – KSH besorolás, esetleg ITJ, SZJ
Unit varchar(10) – mennyiségi egység
UnitPrice int – nettó egységár
VAT int – áfa kulcs

A Products táblában találhatók a termékek adatai. A számla készítéskor majd egy listából választhatunk a termékek közül név alapján.


UserData tábla

UserID int – egyedi azonosító a felhasználók részére, az Identity 1, 1
UserName varchar(50) – felhasználói név
Password varchar(20) – felhasználói jelszó

A felhasználók adatait tároljuk itt. Egy valós alkalmazás esetén természetesen e tábla még bővülhet adatokkal, mint például a személy neve, jogai a rendszer funkció felett, stb.


Invoice tábla

InvoiceID int – egyedi azonosító a felhasználók részére, az Identity 1, 1
InvoiceNumber varchar(20) – számla száma
InvoiceDate datetime – a számla kiállításának dátuma
FulfillmentDate varchar(20) – a teljesítés időpontja. Itt nem használhatunk datetime típust, hiszen a teljesítés időpontja lehet szöveges is, pl.: 2001. március
PaymentDate datetime – fizetési határidő
PaymentMode smallint – fizetési mód kódja (0 – átutalás, 1 – készpénz, 2 – postai utánvét)
CustomerID int – hivatkozás a Customers tábla CustomerId mezőjére
CustomerName varchar(80) – a Customers tábla CustomerName mezőjének a számla készítésekor aktuális értéke
PostalCode char(4) – a Customers tábla PostalCode mezőjének a számla készítésekor aktuális értéke
City varchar(50) – a Customers tábla City mezőjének a számla készítésekor aktuális értéke
Address varchar(80) – a Customers tábla Address mezőjének a számla készítésekor aktuális értéke

A számlák fejrészére kerülő adatokat az Invoice táblában tároljuk. Itt helyezzük el a hivatkozást is a Customers táblára, hogy melyik vevőnek készült a számla, így könnyen kikereshetjük mondjuk az aktuális telefonszámát a vevőnek, viszont a számlára kerülő adatait átmásoljuk, hogy azok már ne változhassanak a számlán.

InvoiceDetail tábla

InvoiceId int – létrehozunk egy relációs kapcsolatot az Invoice táblával
ProductId int – a termék kódja, mellyel hivatkozhatunk a Products tábla ProductId mezőjére
ProductName varchar(50) - a Products tábla ProductName mezőjének a számla készítésekor aktuális értéke
KSH varchar(20) - a Products tábla KSH mezőjének a számla készítésekor aktuális értéke
Unit varchar(10) - a Products tábla Unit mezőjének a számla készítésekor aktuális értéke
UnitPrice int - a Products tábla UnitPrice mezőjének a számla készítésekor aktuális értéke
VAT int - a Products tábla VAT mezőjének a számla készítésekor aktuális értéke
ProductCount int – a termék mennyisége

Itt tároljuk a számlához tartozó tételeket. Az Invoice és az InvoiceDetail táblák között relációs viszonyt kell kialakítanunk. Erre nyilván azért van szükség, mert egy-egy számla fejrészhez tetszőleges számú tétel tartozhat.

A táblák létrehozása után a Data Transformation Service-t használva exportáljuk az összes táblát Dbase típusba. Ha ez megtörtént, akkor szükség van némi utómunkálatra a Dbase táblákon. Ilyen például az, hogy a *Id mezőkhöz létrehozzunk indexet. Az int típusokat olyan számmá konvertálja a Data Transformation Service, hogy azok húsz karakter hosszúságúak és öt karakternyi törtrészt tartalmazhassanak. Ezt megváltoztatjuk öt hosszúságú tárolásra, nulla tört résszel.

Fontos megjegyeznünk, hogy a Dbase-ben a mezőnevek hossza igen rövidre van szabva, így hosszabb megnevezéseink csonkulnak. Ezt a későbbi programfejlesztés során nem szabad elfelejtenünk.

Az adatszerkezet kialakításával végeztünk is, a következő részben lerakjuk a programunk alapjait.





Cikksorozat

#IDKategóriaCikk címeSorozat
3916WindowsA javascript nyelv bemutatása1. rész
3946WindowsJavascript változók és operátorok2. rész
3975WindowsKódvezérlés JScript-ben3. rész
4004WindowsFüggvények és objektumok4. rész
4036WindowsFejlett funkciók a JavaScript nyelvben5. rész
4066WindowsFejlett funkciók a JavaScript nyelvben - folytatás6. rész
4116WindowsReguláris kifejezések7. rész
4145WindowsReguláris kifejezések - folytatás8. rész


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