Sunteți pe pagina 1din 52

“ EVIDENTA TRENURILOR DE CÃLÃTORI INTR-O AGENTIE FEROVIARÃ ”

GENERALITÃTI

Acest proiect acopera principalele caracteristici ale


programului Microsoft Access, produsul Windows pentru
proiectarea si utilizarea bazelor de date.
Access include un mediu de proiectare grafica pentru creearea si
modificarea de tabele, formulare, rapoarte, interogari si
macroinstructiuni. Acest mediu grafic ne permite sa mutam
obiecte dintr-o zona in alta prin tehnica drag-and-drop (deplasare
si inserare), sa asociem doua sau mai multe tabele desenand o
linie intre campurile comune,precum si sa mutam si sa
redimensionam datele in cadrul unui formular sau al unui
raport.Formularele si rapoartele pot contine si imagini – de
exemplu, in cazul nostru, poza cu trenul.Putem, de asemenea,
incopora in inregistrari, obiecte OLE (Object Linking and
Embedding/ Legarea si incapsularea obiectelor), astfel incat un
camp dintr-o inregistrare poate contine sunete, animatie, un
document scris intr-un editor text, o foaie de calcul sau o imagine.
Access ne permite sa lucram cu date existente si sa importam si
exportam date din/in FoxPro, Paradox, text ASCII, foi de calcul si
SQL Server. Putem chiar sa combinam date dintr-o varietate de
surse si formate de fisiere din aceeasi baza de date Access.
Access ofera instrumente puternice de tipul Wizard (Asistent)
care automatizeaza si simplifica procesul de creare a formularelor
si rapoartelor – de la un raport simplu aranjat pe coloane pana la
etichete postale.

1
Barele de instrumente ne permit sa comutam rapid intre
proiectarea unui raport, a unui formular sau a unei tabele, si
vizualizarea rezultatelor.
Puten sa creãm macro-uri pentru a realiza operatii repetitive, sau
sa asocien actiuni a unor butoane pe care le plasam in cadrul
formularelor.
Access ofera, de asemenea, unele facilitati deosebite cum ar fi
integritatea referentialã (controleazã modul in care sunt
mentinute inregistrarile din tabele asociate; aceasta trasatura
previne stergerea unei inregistrari din tabela primara daca aceasta
este conectata la o unregistrare din tabela asociata), auto-asociere
(self-join= reprezinta capacitatea de a cãuta date dintr-un camp in
campul cheie al aceleiasi tabele), precum si expresii si rutine de
validare complexe.

2
“ EVIDENTA TRENURILOR DE CÃLÃTORI INTR-O AGENTIE FEROVIARÃ ”

CAPITOLUL I

PREZENTAREA APLICATIEI

Plecand de la premiza cã pentru noi, absolventi ai


Tehnologiei Informaticii,proiectul de diplomã marcheazã
incheierea unei perioade de trei ani de studiu in domeniul
informaticii ca o activitate orientatã spre exploatarea bazelor de
date, in scopul eficientei unei activitãti, am considerat cã o
aplicatie informaticã mi-ar fi de folos in anii ce vor urma.
Aceastã aplicatie a fost conceputã sã aducã un plus de
calitate activitãtii dintr-o unitate feroviatã. Pentru aceasta ea
realizeazã evidenta trenurilor de cãlãtori pe mai multe rute, cu
opriri in statiile prevãzute in programul CFR Cãlãtori.
Dincolo de utilitatea sa, sistemul este uşor de folosit. El
dispune de un meniu care reflectã fidel cele mai importante
faze din activitatea unui operator de calculator.
Obiectivele pe care aceastã aplicatie le urmãreste sunt
organizarea cat mai eficientã a bazei de date in functie de
specificul activitãtii, precum şi respectarea cu strictete a
regulilor generale ale organizãrii datelor, şi anume:
- timpul de acces la date sã fie minim;
- datele sã aparã o singurã datã in sistem;
- flexibilitatea datelor;
- datele sã respecte pe cat posibil toate legãturile dintre
obiecte;
Pentru realizarea acestor obiective este indicat ca aceastã
aplicatie sã ruleze pe o bazã de date realã putandu-se astfel

3
observa unele aspecte pe care proiectantul nu le-a putut
anticipa in faza de concepere a aplicatiei.
Exploatarea acestui produs nu necesitã cunostinte anterioare de
informaticã, este uşoarã şi foarte aproape de experienta zilnicã
de panã acum a unui operator CFR. Ceea ce este nou, este
simplitatea şi uşurinta cu care se rezolvã totul.
Cerinte minime de instalare:
- sistem de operare Windows ’98 sau o versiune mai noua;
- programul Microsoft Access din pachetul Office ’97 sau mai
nou;
Recomandare: Pachetul Office XP.

1.1 Descrierea informalã a temei

Din punct de vedere al utlizãrii de cãtre un operator, fie el


cunoscãtor sau nu de Access, programul propriuzis este foarte
simplu deoarece datele care se introduc sunt minime.
Nu trebuie decat sã alegem localitatea de destinatie dintr-o listã şi
programul va genera automat trenurile care trec prin localitatea
respectivã, fie acestea trenuri personale, accelerate, rapide, expres
sau intercity.
Programul mai calculeazã şi pretul biletului de cãlãtorie cu
posibilitatea de a selecta punctul de plecare respectiv
destinatia.Putem calcula la un loc ori separat pretul cu reducere de
50% , pretul pe loc, pretul de supliment de vitezã pentru tren
accelerat, rapid, intercity şi expres.

4
1.2 Diagrama entitãte – asociatie a bazei de date

Daca sunteti familiarizat cu un sistem de baze de date relational,


atunci stiti ca tabela este componenta de bazã a unui astfel de
sistem. Tabelele sunt organizate pentru a organiza si stoca
informatia, o tabela fiind organizatã la randul ei pe coloane si linii
continand date. Fiecare linie contine un set de „fapte” numite
coloane (campuri) ale tabelei.
Intr-un sistem relational toate valorile datelor trebuie sã fie
atomice, ceea ce inseamna cã fiecare celulã poate contine doar un
singur fapt. Exista insa relatii intre tabele ce compun o bazã de
date. Fiecare astfel de relatie este reprezentata de RDBMS ca o
partajare a una sau mai multe coloane intre doua tabele. Tabelele
care fac parte din modelul fizic alunei baze de date relationale au
drept echivalent logic „entitatea”, iar coloanele sunt identificate
logic ca „atribute” ale entitatii.
Entitatile sunt reprezentate grafic in chenare dreptunghiulare ce
contin numele entitatii. Utilizand in mod constant substantive
pentru identificarea entitatilor, se asigura o „numire/botezare”
standardizata care faciliteaza citirea diagramelor sub forma unor
instructiuni declarative ce caracterizeazã instantele entitatilor.
Relatiile dintre tabele sunt componente vitale ale bazelor de date
relationale. Ele reflectã modul de utilizare a cheilor partajate:
fapte dintr-o tabela care refera, sau sunt asociate cu fapte din alta
tabelã. Statuarea unei relatii intre doua entitati presupune cã
faptele din tabela „parinte” sunt in asociere cu faptele din tabela
„fiu”.

5
Figura 1. Diagrama entitãte – asociatie pentru baza de
date „Mersul Trenurilor”.

6
1.3 Modelul matematic al bazei de date (MMED)

Modelul matematic al unei baze de date presupune traducerea


entitãtilor si atributelor acesteia in termeni matematici. Asta
presupune si translatarea tipurilor de variabile din Access in cele
matematice.
De exemplu:
- In Access, campul „ID” se declarã ca fiind de tip
„AutoNumber”.
- In MMED, „ID” va fi de tipul „NAT”(Natural).
Traducerea bazei noastre de date „Mersul trenurilor” este
urmãtoarea:

Localitãti:
ID ↔ NAT(99999)
Localitãti ↔ CHAR(50), total
C1: Key „Localitãti” – fãrã duplicate;

7
Trenuri
ID ↔ NAT(9999)
Nr ↔ NAT(9999)
Ruta ↔ CHAR(50), total
Tip ↔ CHAR(10),total
C2: Key „Nr” – fãrã duplicate;

Mers = (Localitãti, Trenuri)  Localitãti  Trenuri


ID ↔ NAT(999999999)
Nr tren ↔ NAT(999999)
Localitate ↔ CHAR(50), total
Ora ↔ DATA, total
Km ↔ NAT(9999),total
C3: Key „Nr Tren” – fãrã duplicate;
C4: ( x € Mers)(Mers(x) > 0);

8
Supliment
ID ↔ NAT(9)
Tip ↔ CHAR(10),total
PretS ↔ NAT(9999999),total
C5: Key „Tip” – fãrã duplicate;

9
Tichet
ID ↔ NAT(99)
Interval ↔ NAT(9999),total
PretT ↔ NAT(9999999),total
C6: Key „Interval” – fãrã duplicate;

Tipuri
ID ↔ NAT(9)
Tip ↔ CHAR(10), total
C7: Key „Tip” – fãrã duplicate;

10
Altele
ID ↔ NAT(9)
CII ↔NAT(9), total

C1,C2,C3,C4,C5,C6,C7 reprezinta constrangerile din tabele.


Cuvãntul „total”, se atribuie unui camp numai dacã acesta nu
ignorã nulurile (>0).

1.4 Modelul relational al bazei de date (MRD)

Primul pas in construirea unui model logic este dezvoltarea


diagramei entitate-relatie. O astfel de diagrama este compusa din
trei blocuri constructive principale: entitati, atribute şi relatii.
Sugestia este sa privim aceastã diagrama ca fiind un limbaj grafic
cu ajutorul cãruia reprezentam vizual propozitii ce descriu
activitatile esentiale ale afacerii pe care o modelam.
Acesta va arãta astfel:

Localitãti( ID, Localitate) ø ı— Localitãti;

ID Localitate
1 Bucureşti Nord
2 Bucureşti Obor

11
Tipuri(ID, Tip) ø ı— Tipuri;

ID Tip
1 Personal
2 Accelerat

Supliment(ID, Tip, PretS);

ID Tip PretS
1 Personal 0
2 Accelerat 115

ø ı— Tip;
Tip  ID(Tip);

Trenuri(ID, Nr, Ruta, Tip);

ID Nr Ruta Tip
1 1981 Bucureşti Obor - Mangalia Accelerat
2 858 Feteşti - Constanta Rapid

ø ı— Nr;
ø ı— Ruta;
Tip  ID(Tip);
]
Mers(ID, Nr tren, Ora, Km, Localitate);

ID Nr tren Localitate Ora Km

12
1 1981 Bucureşti Obor 00:30 0
2 1981 Mangalia 02:09 126

Localitãti  ID(Localitãti);
Nr tren  ID(Trenuri);
ø ı— Ora;

“ EVIDENTA TRENURILOR DE CÃLÃTORI INTR-O AGENTIE FEROVIARÃ ”

CAPITOLUL II

MANUAL DE UTILIZARE A PROGRAMULUI


„MERSUL TRENURILOR”

Pentru a utiliza programul „Mersul trenurilor” , operatorul nu


trebuie sã aibã cunoştinte de baze de date sau alte specializãri din
domeniul informaticii. Trebuie doar sã aibã cunoştinte minime de
operare PC.

La pornirea programului va apãrea un meniu organizat grafic pe


baza unei imagini ce marcheazã domeniul de activitate din care
face parte baza de date.
Meniul contine cinci butoane. Doua dintre acestea sunt plasate in
partea de dreapta sus şi anume:
- butonul „Plecãri”

13
- butonul „Bilete”

Celelalte trei sunt plasate in partea de jos, la baza ecranului


monitorului dumneavoastrã.Acestea sunt :
- butonul „Introducere/Modificare/Stergere Rute”
- butonul „Introducere/Modificare/Stergere Variabile”
- butonul „Ieşire”

Cele cinci butoane pot fi uşor de apelat cu sãgeata mouse-ului,


dand click cu butonul din dreapta sau prin simpla tastare a
urmãtoarelor taste :

 tasta „p” pentru butonul: „Plecãri”


 tasta „b” pentru butonul: „Bilete”
 tasta „r” pentru butonul:
„Introducere/Modificare/Stergere Rute”
 tasta „v” pentru butonul:
„Introducere/Modificare/Stergere Variabile”
 tasta „i” pentru butonul: „Ieşire”

2.1 Butonul „Plecãri”.


La actionarea butonului „Plecãri” va apãrea urmãtoarea fereastrã.

Exemplul 1. Videoformatul „Plecari”.

14
Prin apãsarea butonului marcat prin litera „A” va apãrea o
micã ferastrã din care vom alege localitatea de plecare.
La efectuarea acestei operatii in tabelã va apãrea lista de
trenuri ce opresc in localitatea respectivã.
Prin apãsarea butonului marcat prin litera „B”, care aste de
fapt semnul „+”, va apare o altã ferastrã ce va contine
intrega rutã cat şi tipul trenului respectiv.
Din aceastã fereastrã va trebui sã retinem neaparat numãrul
trenului dorit deoarece vom avea nevoie in fereastra
ulterioarã.
La inchiderea acestei ferestre, automat, programul va
deschide fereastra „Bilete”, care mai poate fi deschisã prin
apãsarea tastei „B”, sau dand click pe butonul „Bilete” din
meniu. Va apãrea o fereastrã impartitã in doua. Acesta aratã
astfel:

2.2 Butonul „Bilete”.

15
Exemplul 2. Videoformatul „Trenuri”

Mergem şi dãm click pe butonul marcat cu numãrul „1”, din


partea stangã, alegem numãrul trenului pe care l-am retinut
anterior.
Prin aceastã operatie :
- in tabela de mai jos ne va apãrea lista cu localitãtile in care
are oprire trenul precum şi ora şi distanta parcursa din
punctul de plecare;
- in fereastra din dreapta ne va apãrea tipul trenului, numãrul
acestuia şi ruta.

Selectãm localitatea de destinatie din tabela din stanga şi


dãm click pe butonul marcat cu numãrul „3” , apoi selectãm
localitatea de plecare şi dãm click pe butonul marcat cu
numãrul „2”.

16
Implicit, programul va afişa in ce interval de distantã se
incadreazã cãlãtoria precum şi pretul tichetului.

Dacã vrem sã vedem totalul de platã va trebui sã dãm click


pe butonul marcat cu numãrul „4”.

Pretul rezultat este unul brut, adicã este pentru clasa a-II-a,
fãrã loc şi fãrã reducere. Acestea pot fi inserate prin bifarea
cãsutelor din dreptul fiecãreia apoi reefectuand operatia de
calcul total.

Programul mai permite introducerea de variabile şi


introducerea de noi trenuri.
Introducerea de varibile se poate face prin apãsarea tastei
„v” sau printr-un ckick pe butonul
„Introducere/Modificare/Stergere Variabile”.La executarea
acestei comanzi ne va apãrea urmãtoarea fereastrã:

2.3 Introducerea / Modificarea / Stergerea variabilelor.

Exemplul 3. Videoformatele „Localitãti”, „Supliment”, „Altele”


şi ”Tichet”.

17
In aceastã fereastrã vom putea sã modificãm sau sã adãugãm
localitãti, sã reactualizãm procentul pentru suplimentul de
vitezã pentru trenurile: accelerat, rapid, intercity şi expres,
pretul pe loc cat şi pretul pe intervalele kilometrice definite.

Intervalele sunt :
1. 0 – 10
2. 11 – 20

18
3. 21 – 30
4. 31 – 40
5. 41 – 50
6. 51 – 60
7. 61 – 70
8. 71 – 80
9. 81 – 90
10. 91 – 100
11. 101 – 120
12. 121 – 140
13. 141 – 160
14. 161 – 180
15. 181 – 200
16. 201 – 250
17. 251 – 300
18. 301 – 350
19. 351 – 400
20. 401 – 500
21. 501 – 600
22. 601 – 700
23. 701 – 800
24. 801 – 900
25. 901 – 1000

2.4 Introducerea / Modificarea / Stergerea Rutelor.

19
 Operatorul mai poate efectua trei operatii şi acelea sunt:
adãugarea, modificarea şi ştergerea de rute. Aceste
lucruri se pot face prin apãsarea tastei „r” sau dand click
pe butonul „Introducere/Modificare/Stergere Rute” din
meniu. La efectuarea acestei operatii va apãrea
urmãtoarea fereastrã:

Exemplul 4. Videoformatul „Rute”.

Pentru a vizualiza un tren declarat anterior vom folosi butoanele


marcate de cifrele „1” şi respectiv „2”.
Pentru a gãsi un tren declarat anterior vom folosi butonul marcat
de cifra „3”.

Pentru a adãuga un nou tren pe o rutã vom folosi butonul marcat


de cifra „4”.

20
Pentru a şterge un tren, oricare ar fi acesta vom folosi comanda
marcatã de cifra „5”.

Pentru a inchide aplicatia va trebui sã apãsati tasta „i” sau sa dati


click pe butonul „Ieşire” din partea dreaptã jos a ecranului
monitorului..

“ EVIDENTA TRENURILOR DE CÃLÃTORI INTR-O AGENTIE FEROVIARÃ ”

21
CAPITOLUL III

STRUCTURA BAZEI DE DATE

Pentru a intra in baza de date propriuzisã va trebui sã mergem cu


sãgeata mouse-ului in partea de susu a ecranului monitorului
dumneavoastrã, ã inserãm textul „Mersul trenurilor” şi apoi sã
tastãm cuvantul „debug”.

O altã modalitate de a intra in Access pentru a vizualiza tabelele


cu relatiile dintre ele şi videoformatele este urmãtoarea:
- tinem apãsatã tasta „Shift” in timp ce deschidem baza de date.

Dupã efectuaea uneia dintre operatii, vom putea vizualiza


structura bazei de date, care este construitã pe bazã de tabele,
videoformate şi cod VBA.

Programul contine 7 tabele, dintre care numai 5 sunt in relatie:

şi 17 videoformate dintre care unul este meniu.,

22
iar 7 sunt subformulare.

Acestea sunt:

- Mers Subform
- Mers Subform1
- Mers Subform2
- Supliment Subform
- Tichet Subform
- Trenuri Subform1
- Trenuri Subform.

23
3.1 Prezentarea tabelelor in mod „Design”:

 Tabela „Localitãti” ce contine campurile:


ID (AutoNumber)(cheie primarã) – Cheia surogat;
Localitãti (Text);

 Tabela „Mers” ce contine campurile:

ID (AutoNumber)(cheie primarã) – Cheia surogat;


Nr Tren (Number);
Localitate (Number);
Ora (Date/Time);
Km (Number);

24
şi urmãtorii indecşi:

 Tabela „Supliment” ce contine campurile:

ID (AutoNumber)(cheie primarã) – Cheia surogat;


Tip (Number);
PretS (Number);

25
şi urmãtorii indecşi:

 Tabela „Tichet” cu campurile:

ID (AutoNumber)(cheie primarã) – Cheia surogat;


Interval (Number);
PretT (Number);

26
şi cu urmãtorii indecşi:

 Tabela „Tipuri” care contine campurile:

ID (AutoNumber)(cheie primarã) – Cheia surogat;


Tip (Text);

27
 Tabela „Altele” ce contine campurile:

PretL (Number)- cheie primara


CII (Number);

 Tabela „Trenuri” care contine campurile:

ID (AutoNumber)(cheie primarã) – Cheia surogat;


Nr (Number);

28
Ruta (Text);
Tip (Number);

şi cu urmãtorii indecşi:

3.2 Schema relationalã a bazei de date (Relationships)

Pentru functionarea corectã a programului nu este nevoie doar


de tabele ci şi de o legãturã intre acestea (o relatie). Relatiile

29
trebuiesc sã fie bine definite deoarece chiar şi o singurã relatie
realizatã incorect poate duce la erori foarte mari. Dupã ce am
realizat o relatie intre doua tabele trebuie sã o şi „personalizãm”,
adicã sã stabilim tipul de Join şi Integritatea Referntialã .Pentru a
realiza aceste operatii dam dublu click pe relatie şi bifãm
variantele corespunzãtoare.

In cazul nostru „Schema relationalã” a bazei de date „Mersul


Trenurilor” este:

Pentru „Relatia 1” avem:

- integritate referentialã:

30
- Join de tipul:

„Relatia 2” şi „Relatia 3” au aceleaşi proprietãti ca „Relatia1”

Pentru „Relatia 4” diferenta apare la integritatea referentialã,


care nu existã

31
:

3.3 Prezentarea videoformatelor in mod „Design”.

 Formularul „Localitãti”:

 Formularul „Plecãri”:

32
 Formularul „Rute”:

 Formularul „Supliment”

33
 Formularul „Tichet”

 Formularul „Trenuri”

 Formularul „Variabile”

34
 Formularul „Altele”
 Formularul „Meniu”
 Subformularul „Altele Subform”
 Subformularul „Mers Subform”
 Subformularul „Mers Subform1”
 Subformularul „Mers Subform2”
 Subformularul „Supliment Subform”
 Subformularul „Tichet Subform”
 Subformularul „Trenuri Subform”
 Subformularul „Trenuri Subform1”

“ EVIDENTA TRENURILOR DE CÃLÃTORI INTR-O AGENTIE FEROVIARÃ ”

35
ANEXA

PREZENTAREA CODULUI VBA

- Formularul „Meniu”:

Option Compare Database

Private Sub debug_Change()


If ([debug].Text = "debug") Then
DoCmd.Close
End If
End Sub

Private Sub introrute_Click()


On Error GoTo Err_introrute_Click

Dim stDocName As String


Dim stLinkCriteria As String

stDocName = "Rute"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_introrute_Click:
Exit Sub

Err_introrute_Click:
MsgBox Err.Description
Resume Exit_introrute_Click

End Sub
Private Sub introvar_Click()

36
On Error GoTo Err_introvar_Click

Dim stDocName As String


Dim stLinkCriteria As String

stDocName = "Variabile"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_introvar_Click:
Exit Sub

Err_introvar_Click:
MsgBox Err.Description
Resume Exit_introvar_Click

End Sub
Private Sub plecari_Click()
On Error GoTo Err_plecari_Click

Dim stDocName As String


Dim stLinkCriteria As String

stDocName = "Plecari"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_plecari_Click:
Exit Sub

Err_plecari_Click:
MsgBox Err.Description
Resume Exit_plecari_Click

End Sub
Private Sub bilete_Click()
On Error GoTo Err_bilete_Click

37
Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "Trenuri"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_bilete_Click:
Exit Sub

Err_bilete_Click:
MsgBox Err.Description
Resume Exit_bilete_Click

End Sub
Private Sub iesire_Click()
On Error GoTo Err_iesire_Click

DoCmd.Quit

Exit_iesire_Click:
Exit Sub

Err_iesire_Click:
MsgBox Err.Description
Resume Exit_iesire_Click

End Sub

38
- Formularul „Plecãri”:

Private Sub Form_Close()


DoCmd.OpenForm "Trenuri"
End Sub

- Formularul „Rute”:

Option Compare Database

Private Sub anterior_Click()


On Error GoTo Err_anterior_Click
DoCmd.GoToRecord , , acPrevious
Exit_anterior_Click:
Exit Sub
Err_anterior_Click:
If (Err.Number = 2105) Then
MsgBox "Nu mai sunt inregistrari!", vbInformation,
"Eroare"
Else
MsgBox Err.Description
End If
Resume Exit_anterior_Click
End Sub

Private Sub urmator_Click()


On Error GoTo Err_urmator_Click
DoCmd.GoToRecord , , acNext
Exit_urmator_Click:
Exit Sub
Err_urmator_Click:
If (Err.Number = 2105) Then
MsgBox "Nu mai sunt inregistrari!", vbInformation,
"Eroare"

39
Else
MsgBox Err.Description
End If
Resume Exit_urmator_Click
End Sub

Private Sub gaseste_Click()


On Error GoTo Err_gaseste_Click
Screen.PreviousControl.SetFocus
DoCmd.DoMenuItem acFormBar, acEditMenu, 10, ,
acMenuVer70
Exit_gaseste_Click:
Exit Sub
Err_gaseste_Click:
MsgBox Err.Description
Resume Exit_gaseste_Click
End Sub

Private Sub adauga_Click()


On Error GoTo Err_adauga_Click
DoCmd.GoToRecord , , acNewRec
Exit_adauga_Click:
Exit Sub
Err_adauga_Click:
MsgBox Err.Description
Resume Exit_adauga_Click
End Sub

Private Sub sterge_Click()


On Error GoTo Err_sterge_Click
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, ,
acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, ,
acMenuVer70
Exit_sterge_Click:
Exit Sub

40
Err_sterge_Click:
If (Err.Number = 3200) Then
MsgBox "Stergeti inainte localitatile!", vbInformation,
"Erore"
Else
MsgBox Err.Description
End If
Resume Exit_sterge_Click
End Sub

- Formularul „Trenuri”:

Private Sub Calcul_Click()


Nr.SetFocus
If (Nr.Text = "") Then
MsgBox "Selectati un tren", vbCritical, "Eroare"
Exit Sub
End If
Distanta.SetFocus
If (Distanta.Text = "") Then
MsgBox "Selectati o ruta", vbCritical, "Eroare"
Exit Sub
End If
Forms!Trenuri![Tichet subform]!PretT.SetFocus
valoare_tichet = Forms!Trenuri![Tichet subform]!PretT.Text
valoare_tichetr = 0
Reducere.SetFocus
If (Reducere.Value = -1) Then
valoare_tichetr = valoare_tichet / 2
End If
supliment_clasa = 0
ClasaI.SetFocus
If (ClasaI.Value = -1) Then
Forms!Trenuri![Altele SubForm]!ClI.SetFocus
prcl = Forms!Trenuri![Altele SubForm]!ClI.Text

41
supliment_clasa = (valoare_tichet * prcl) / 100
End If
valoare_loc = 0
loc.SetFocus
If (loc.Value = -1) Then
Forms!Trenuri![Altele SubForm]!PretL.SetFocus
valoare_loc = Forms!Trenuri![Altele SubForm]!
PretL.Text
End If
valoare_supliment = 0
Forms!Trenuri![Trenuri subfoerm1].SetFocus
Forms!Trenuri![Trenuri subfoerm1]![Supliment
subform].SetFocus
Forms!Trenuri![Trenuri subfoerm1]![Supliment subform]!
PretS.SetFocus
suvi = Forms!Trenuri![Trenuri subfoerm1]![Supliment
subform]!PretS.Text
valoare_supliment = (valoare_tichet * suvi) / 100
valoare_total = (valoare_tichet - valoare_tichetr) +
supliment_clasa + valoare_loc + valoare_supliment
Total.SetFocus
Total.Text = valoare_total
End Sub

Private Sub ip_Click()


Nr.SetFocus
If (Nr.Text = "") Then
MsgBox "Selectati un tren", vbCritical, "Eroare"
Exit Sub
End If
Forms!Trenuri![Trenuri subfoerm1].SetFocus
Forms!Trenuri![Trenuri subfoerm1]![Mers
Subform1].SetFocus
Forms!Trenuri![Trenuri subfoerm1]![Mers Subform1]!
Localitate.SetFocus

42
local1text = Forms!Trenuri![Trenuri subfoerm1]![Mers
Subform1]!Localitate.Text
dela.SetFocus
dela.Text = local1text
Forms!Trenuri![Trenuri subfoerm1].SetFocus
Forms!Trenuri![Trenuri subfoerm1]![Mers
Subform1].SetFocus
Forms!Trenuri![Trenuri subfoerm1]![Mers Subform1]!
Ora.SetFocus
ora1text = Forms!Trenuri![Trenuri subfoerm1]![Mers
Subform1]!Ora.Text
oarap.SetFocus
oarap.Text = ora1text
Forms!Trenuri![Trenuri subfoerm1].SetFocus
Forms!Trenuri![Trenuri subfoerm1]![Mers
Subform1].SetFocus
Forms!Trenuri![Trenuri subfoerm1]![Mers Subform1]!
Km.SetFocus
km1text = Forms!Trenuri![Trenuri subfoerm1]![Mers
Subform1]!Km.Text
kmp.Visible = True
kmp.SetFocus
kmp.Text = km1text
Tip.SetFocus
kmp.Visible = False
kms.Visible = True
kms.SetFocus
km2text = kms.Text
Tip.SetFocus
kms.Visible = False
If (km2text = "") Then
km2text = 99999
End If
km1text = km1text * 1
km2text = km2text * 1
If (km2text <= km1text) Then

43
MsgBox "Ati gresit sensul", vbCritical, "Eroare"
dela.SetFocus
dela.Text = ""
oarap.SetFocus
oarap.Text = ""
kmp.Visible = True
kmp.SetFocus
kmp.Text = ""
Tip.SetFocus
kmp.Visible = False
ElseIf (km2text < 99999) Then
distval = km2text - km1text
If ((distval > 0) And (distval <= 10)) Then
distval = 10
End If
If ((distval > 10) And (distval <= 20)) Then
distval = 20
End If
If ((distval > 20) And (distval <= 30)) Then
distval = 30
End If
If ((distval > 30) And (distval <= 40)) Then
distval = 40
End If
If ((distval > 40) And (distval <= 50)) Then
distval = 50
End If
If ((distval > 50) And (distval <= 60)) Then
distval = 60
End If
If ((distval > 60) And (distval <= 70)) Then
distval = 70
End If
If ((distval > 70) And (distval <= 80)) Then
distval = 80
End If

44
If ((distval > 80) And (distval <= 90)) Then
distval = 90
End If
If ((distval > 90) And (distval <= 100)) Then
distval = 100
End If
If ((distval > 100) And (distval <= 120)) Then
distval = 120
End If
If ((distval > 120) And (distval <= 140)) Then
distval = 140
End If
If ((distval > 140) And (distval <= 160)) Then
distval = 160
End If
If ((distval > 160) And (distval <= 180)) Then
distval = 180
End If
If ((distval > 180) And (distval <= 200)) Then
distval = 200
End If
If ((distval > 200) And (distval <= 250)) Then
distval = 250
End If
If ((distval > 250) And (distval <= 300)) Then
distval = 300
End If
If ((distval > 300) And (distval <= 350)) Then
distval = 350
End If
If ((distval > 350) And (distval <= 400)) Then
distval = 400
End If
If ((distval > 400) And (distval <= 500)) Then
distval = 500
End If

45
If ((distval > 500) And (distval <= 600)) Then
distval = 600
End If
If ((distval > 600) And (distval <= 700)) Then
distval = 700
End If
If ((distval > 700) And (distval <= 800)) Then
distval = 800
End If
If ((distval > 800) And (distval <= 900)) Then
distval = 900
End If
If ((distval > 900) And (distval <= 1000)) Then
distval = 1000
End If
If (distval > 1000) Then
distval = 1001
End If
Distanta.SetFocus
Distanta.Text = distval
End If
End Sub

Private Sub is_Click()


Nr.SetFocus
If (Nr.Text = "") Then
MsgBox "Selectati un tren", vbCritical, "Eroare"
Exit Sub
End If
Forms!Trenuri![Trenuri subfoerm1].SetFocus
Forms!Trenuri![Trenuri subfoerm1]![Mers
Subform1].SetFocus
Forms!Trenuri![Trenuri subfoerm1]![Mers Subform1]!
Localitate.SetFocus
local2text = Forms!Trenuri![Trenuri subfoerm1]![Mers
Subform1]!Localitate.Text

46
panala.SetFocus
panala.Text = local2text
Forms!Trenuri![Trenuri subfoerm1].SetFocus
Forms!Trenuri![Trenuri subfoerm1]![Mers
Subform1].SetFocus
Forms!Trenuri![Trenuri subfoerm1]![Mers Subform1]!
Ora.SetFocus
ora2text = Forms!Trenuri![Trenuri subfoerm1]![Mers
Subform1]!Ora.Text
oras.SetFocus
oras.Text = ora2text
Forms!Trenuri![Trenuri subfoerm1].SetFocus
Forms!Trenuri![Trenuri subfoerm1]![Mers
Subform1].SetFocus
Forms!Trenuri![Trenuri subfoerm1]![Mers Subform1]!
Km.SetFocus
km2text = Forms!Trenuri![Trenuri subfoerm1]![Mers
Subform1]!Km.Text
kms.Visible = True
kms.SetFocus
kms.Text = km2text
Tip.SetFocus
kms.Visible = False
kmp.Visible = True
kmp.SetFocus
km1text = kmp.Text
Tip.SetFocus
kmp.Visible = False
If (km1text = "") Then
km1text = -1
End If
km1text = km1text * 1
km2text = km2text * 1
If (km2text <= km1text) Then
MsgBox "Ati gresit sensul", vbCritical, "Eroare"
panala.SetFocus

47
panala.Text = ""
oras.SetFocus
oras.Text = ""
kms.Visible = True
kms.SetFocus
kms.Text = ""
Tip.SetFocus
kms.Visible = False
ElseIf (km1text > -1) Then
distval = km2text - km1text
If ((distval > 0) And (distval <= 10)) Then
distval = 10
End If
If ((distval > 10) And (distval <= 20)) Then
distval = 20
End If
If ((distval > 20) And (distval <= 30)) Then
distval = 30
End If
If ((distval > 30) And (distval <= 40)) Then
distval = 40
End If
If ((distval > 40) And (distval <= 50)) Then
distval = 50
End If
If ((distval > 50) And (distval <= 60)) Then
distval = 60
End If
If ((distval > 60) And (distval <= 70)) Then
distval = 70
End If
If ((distval > 70) And (distval <= 80)) Then
distval = 80
End If
If ((distval > 80) And (distval <= 90)) Then
distval = 90

48
End If
If ((distval > 90) And (distval <= 100)) Then
distval = 100
End If
If ((distval > 100) And (distval <= 120)) Then
distval = 120
End If
If ((distval > 120) And (distval <= 140)) Then
distval = 140
End If
If ((distval > 140) And (distval <= 160)) Then
distval = 160
End If
If ((distval > 160) And (distval <= 180)) Then
distval = 180
End If
If ((distval > 180) And (distval <= 200)) Then
distval = 200
End If
If ((distval > 200) And (distval <= 250)) Then
distval = 250
End If
If ((distval > 250) And (distval <= 300)) Then
distval = 300
End If
If ((distval > 300) And (distval <= 350)) Then
distval = 350
End If
If ((distval > 350) And (distval <= 400)) Then
distval = 400
End If
If ((distval > 400) And (distval <= 500)) Then
distval = 500
End If
If ((distval > 500) And (distval <= 600)) Then
distval = 600

49
End If
If ((distval > 600) And (distval <= 700)) Then
distval = 700
End If
If ((distval > 700) And (distval <= 800)) Then
distval = 800
End If
If ((distval > 800) And (distval <= 900)) Then
distval = 900
End If
If ((distval > 900) And (distval <= 1000)) Then
distval = 1000
End If
If (distval > 1000) Then
distval = 1001
End If
Distanta.SetFocus
Distanta.Text = distval
End If
End Sub

Private Sub Nr_Change()


Nr.SetFocus
trentext = Nr.Text
Tren.SetFocus
Tren.Text = trentext
Forms!Trenuri![Trenuri subfoerm1].SetFocus
Forms!Trenuri![Trenuri subfoerm1]!Ruta.SetFocus
rutatext = Forms!Trenuri![Trenuri subfoerm1]!Ruta.Text
Ruta.SetFocus
Ruta.Text = rutatext
Forms!Trenuri![Trenuri subfoerm1]!Tip.SetFocus
tiptext = Forms!Trenuri![Trenuri subfoerm1]!Tip.Text
Tip.SetFocus
Tip.Text = tiptext
dela.SetFocus

50
dela.Text = ""
oarap.SetFocus
oarap.Text = ""
kmp.Visible = True
kmp.SetFocus
kmp.Text = ""
Tip.SetFocus
kmp.Visible = False
panala.SetFocus
panala.Text = ""
oras.SetFocus
oras.Text = ""
kms.Visible = True
kms.SetFocus
kms.Text = ""
Tip.SetFocus
kms.Visible = False
Distanta.SetFocus
Distanta.Text = ""
Total.SetFocus
Total.Text = ""
End Sub

51
52

S-ar putea să vă placă și