Informatīvā sistēma - Klubs


Latvijas Universitāte
Fizikas un matemātikas fakultāte,
Datorzinātnes nodaļa





Tēmas nosaukums:
 Informatīvā sistēma - Klubs



Kursa darbs









Izstrādāja:
__________
E.Grosvalds
DatZ - 96010
1.kurss, Dz-2

Pieņēma:
________







1998
























Anotācija
Anotācija

Kursa projekta mērķis ir nodrošināt kluba pasākumu, dalībnieku uzskaiti.

Aplikācija nodrošina šādas galvenās funkcijas:
·         kluba pasākumu, personu pievienošanu, dzēšanu, redigēšanu, apskati, meklēšanu,
·         pasākuma dalībnieku pievienošanu, izmešanu kluba pasākumiem,
·         klasifikatoru – Telpas, Tēmas, Tiesības apstrādi,
·         personu piedalīšanos pasākumos arhīvu,
·         pasākumu tiesību un personu tiesību uzskaiti,
·         personu tiesību piedalīšanos pasākumos kontroli.

Anotation



The aim of this course project is provide follow-up of club` events and participators.
Apliccation provide such main functions:
·         events of club, participators adding, deleting, editing, viewing, seraching.
·         adding, deleting participators from event of club,
·         classificators – rooms, topics, rights proccesing,
·         archive of person participation in club events,
·         manage rights of events, rights of persons,
·         checking person`s rights in participating in events.

Анотация


Цель курсавовой работы – обеспечить учот мероприятий и участников клуба.

В апликации реализованы следующие главные функции:
·         вод, удаление, модификация, просмотр и поиск мероприятий клуба,
·         вод и удаление участников конкретного мероприятия,
·         обработка классификаторов,
·         архивация данных об участии
·         учот прав участников клуба и мероприятий,
·         контроль прав участников конкретного мероприятия.












Satura rādītājs

1.1.1  Ievads............................................................................................................ 8
2     Uzdevuma neformāls apraksts................................................................................. 9
3     Tehnikas un programmatūras prasības................................................................... 10
3.1     Tehnikas izvēle................................................................................................ 10
3.2     Papildus programmatūra................................................................................. 10
4     Lietotāja instrukcija............................................................................................... 11
4.1     Programmas uzstādīšana................................................................................. 11
4.2     Aplikāciju izvēlnēs un logos lietoto pogu apraksts......................................... 11
5     Kluba Informatīvā sistēma.................................................................................... 12
5.1     Personas.......................................................................................................... 15
5.2     Telpas (klasifikators)....................................................................................... 17
5.3     Tēmas (klasifikators)....................................................................................... 18
5.4     Tiesības (klasifikators)..................................................................................... 19
5.5     Pasākumu meklēšana....................................................................................... 20
5.6     Personu meklēšana.......................................................................................... 21
6     Programmas apraksts............................................................................................. 22
6.1     Datu plūsmu modelis...................................................................................... 22
6.2     ER modelis...................................................................................................... 23
6.3     Datu modeļa apraksts...................................................................................... 24
6.4     Datu moduļa pieprasījumi............................................................................... 25
6.5     Datu moduļa funkciju apraksts....................................................................... 26
6.6     Pasākumi......................................................................................................... 27
6.7     Personas.......................................................................................................... 28
6.8     Pasākumu meklēšana....................................................................................... 29
6.9     Personu meklēšana.......................................................................................... 30
7     Moduļu kodi.......................................................................................................... 33
7.1     Modulis – “Datu modulis”.............................................................................. 33
7.2     Pasākumi......................................................................................................... 35
7.3     Personas.......................................................................................................... 38
7.4     Pasākumu meklēšana....................................................................................... 41
7.5     Personu meklēšana.......................................................................................... 43
7.6     Trigeris “TRG_DALIBNIEKI_IU”............................................................... 44
8     Tabulu struktūras................................................................................................... 45
8.1     Pasākumi......................................................................................................... 45
8.2     Personas.......................................................................................................... 45
8.3     Dalībnieki........................................................................................................ 46
8.4     Pasākumu tiesības........................................................................................... 46
8.5     Personas tiesības.............................................................................................. 47
8.6     Personas tiesības.............................................................................................. 47
8.7     Telpas.............................................................................................................. 48
8.8     Tēmas.............................................................................................................. 48
9     Datu bāzes objektu skripti..................................................................................... 49
9.1     Tabulu ģenerācijas skripts “KLUBS.TAB”.................................................... 49
9.2     Primāro, ārējo atslēgu ģenerācijas skripts “KLUBS.CON”............................ 51
9.3     Indeksu ģenerācijas  skripts “KLUBS.IND”.................................................. 54







Attēlu saraksts

Attēls 1 Pieslēgšānās Oracle datu bāzei....................................................................... 12
Attēls 2 Kluba informatīvā sistēma.............................................................................. 13
Attēls 3 Kluba informatīvā sistēma(lapiņa tiesības)..................................................... 14
Attēls 4 Personas(lapiņa - Tiesības).............................................................................. 15
Attēls 5 Personas(lapiņa - Apmeklētie pasākumi)........................................................ 16
Attēls 6. Telpas............................................................................................................. 17
Attēls 7 Tēmas.............................................................................................................. 18
Attēls 8 Tiesības........................................................................................................... 19
Attēls 9 Pasākumu meklēšana...................................................................................... 20
Attēls 10 Personu meklēšana........................................................................................ 21
Attēls 11 ER modelis................................................................................................... 23
Attēls 12 Aplikācijas Datu modelis meklēšana............................................................ 24
Attēls 13 Tabulas “Pasākumi” struktūra....................................................................... 45
Attēls 14 Tabulas “Personas” struktūra........................................................................ 45
Attēls 15 Tabulas “Dalībnieki” struktūra..................................................................... 46
Attēls 16 Tabulas “Pasākumu tiesības” struktūra......................................................... 46
Attēls 17 Tabulas “Personas tiesības” struktūra........................................................... 47
Attēls 18 Tabulas “Tiesības” struktūra......................................................................... 47
Attēls 19 Tabulas “Telpas” struktūra............................................................................ 48
Attēls 20 Tabulas “Tēmas” struktūra............................................................................ 48



1.1.1        Ievads



Kursa darbs uzdevums ir izveidot aplikāciju, uzrakstīt dokumentāciju par informatīvo sistēmu Klubs.
Aplikācijas izveidošanas nepieciešamība bija tā, ka pasākumu organizators gribēja paaugstināt uzņēmuma efektivitāti:
-          saīsinot laiku meklējot informāciju, kas attiecas uz pasākumu reģistrēšanu,
-           uzņēmums vēlējās saglabāt informāciju par pasākumu dalībniekiem, lai turpmāk piedāvātu saviem klientiem savus pakalpojumus.
Aplikācija ir izveidota programmēšanas valodā Delphi 2.0. Izvēlēta šī valoda vairāku iemeslu dēļ.
-                                  ļoti loģiska aplikācijas struktūra un pilnībā objektorientēta.
-                                  aplikācija pilnībā nodrošina datu apstrādi, sasaisti no
vairākām tabulām, automātiski aizpildot ārējās atslēgas,
-                                  logu un kontroles elementu izskats atbilst mūsdienu prasībām,
-                                  ir nodrošināta optimāla sasaiste ar Oracle datu bāzi,
-                                  valoda ir pilnībā objekt-orientēta, kas palīdz ietaupīt lauku programmējot,
-                                  ērta aplikācijas izstrāde, raugoties no programmētāja viedokļa.
Ņemot vērā šīs priekšrocības programmēšanas valoda Delphi ir ļoti piemērota sarežģītu procesu realizēšanai.
Par datu bāzi tika ņemta Oracle, sekojošu iemeslu dēļ:
-                                  dotais uzdevums prasa, lai tiktu kontrolēta personu reģistrācija, db. "Oracle"
trigeri nodrošina tabulas līmenī kontrolēt datu pievienošanu.
-                                  ER modelis ir ērti izveidojams ar vizuāliem rīkiem –Oracle Designer 2000.
-                                  datu aizsardzību un atjaunošana,
-                                  mūsdienās datu bāzu sistēmas Oracle popularitāte pieaug, un Oracle kļūst par vadošo datu bāzu sistēmu pasaulē.

Aplikācija korekti strādā un uzņēmums veiksmīgi strāda ar aplikāciju.

2  
Uzdevuma neformāls apraksts



Kursa darbā tiek izstrādāta un apskatīta kluba pasakumu apstrādes programma.
Aplikācija nodrošina šādas galvenās funkcijas:
·         kluba pasākumu, personu pievienošanu, dzēšanu, redigēšanu, apskati, meklēšanu,
·         pasākuma dalībnieku pievienošanu, izmešanu kluba pasākumiem,
·         klasifikatoru – Telpas, Tēmas, Tiesības apstrādi,
·         personu piedalīšanos pasākumos arhīvu,
·         pasākumu tiesību un personu tiesību uzskaiti,
·         personu tiesību piedalīšanos pasākumos kontroli.
Izsaucot aplikāciju, tiek parādīta logs, kurā var reģistrēt, dzēst pasākumus. Katram pasākumam var ierakstīt nosaukumu, tēmu,  kāda tiks apskatīta pasākumā, datumu, kad pasākums notiek, laiku, cikos pasākums sākās, pasākuma ilgumu, cik ilgi norisināsies pasākums, norādīt kādā telpā notiks pasākums.
Kad ir izveidots pasākums, var pasākumam pierakstīt dalībniekus. To izvēlās no brīvo personu saraksta.
Ja pasākums ir domāts noteiktai laužu grupai, un nav vēlams pierakastīt svešas personas, tad var uzlikt pasākumam tiesību. Un šī tiesība ir jāiedod tām personām, kuras drīkst apmeklēt pasākumu. Tad šīs personas var tikt pievienotas pasākumam. Programmas skatās, vai pasākuma tiesība ir personai, ja personai nav tādas tiesības, tad lietotājs nevar pievienot pasākumam šo personu, un izlec paziņojuma logs, ka dotai personai nav tiesības piedalīties pasākumā.
Ja lietotāju interesē, kādos pasākumos persona ir pierakstīta, tad to var redzēt Personu formā, lapiņā “Apmeklētie pasākumi”.
Ja lietotāju interesē, kādi pasākumi ir notikuši pēc izvēlētās tēmas, vai dotajā telpā, tad to var atrast formā “Pasākumu meklēšana”. Meklēšanas formā ir vēl daži parametri pēc kuriem var tikt sameklēti pasākumi – Laiks, Ilgums, Datums, Pasākuma nosaukums. Visi atrastie pasākumi tiek parādīti sarakstā “Pasākumi”, ja divreiz noklikšķina uz atrasto pasākumu, tad sākotnējā formā – “Pasākumi”, tiek atspoguļots izvēlētais pasākums.
Image 1

Lai uzzinātu informāciju par aplikāciju, tad jaizvēlās Izvēlne – “Par programmu” “Pasākumu” formā.

3  
Tehnikas un programmatūras prasības




3.1  Tehnikas izvēle


Minimālās prasības datoram ir PC486DX, 12Mb RAM, 5Mb vietas uz HDD, pele.
Ieteicamās prasības datoram ir PC Pentium, 16 Mb RAM, 5 Mb vietas uz HDD, drukas iekārta , pele.

3.2  Papildus programmatūra


Operētājsistēma Windows 95 vai Windows NT
Oracle Client 7.2
Borland Database  Engine (BDE)
Latviskošanas programma.
Fonti - RimTimes, RimHelvetica. MS Sans Serif.

4  
Lietotāja instrukcija


Šī lietotāja instrukcija paredzēta, lai atvieglotu lietotāja darbu ar aplikāciju un palīdzētu risināt  iespējamās problēmas.

4.1  Programmas uzstādīšana.

-                                  jābūt uzinstalētam Oracle Client 7.2 un izveidots datu bāzes “alias”
-                                  jāinstalē aplikācijas “Klubs” instalācijas programma - setup.exe,
Programma tiks instalēta - C:\ROGRAM FILES\SD60010\KLUBS\Klubs.exe

4.2  Aplikāciju izvēlnēs un logos lietoto pogu apraksts


Spiedpogas atrodas īpašā izvēlnē, kurā novietotas visbiežāk lietojamo darbību atbilstošās spiedpogas. Tās var aktivizēt ar klaviatūras un peles palīdzību, noklikšķinot uz nepieciešamās ikonas.
IMAGE2
Pievienot jaunu ierakstu.
IMAGE3
Izdzēst ierakstu.
 IMAGE4                                             
Beigt darbu.
IMAGE5
Apstiprināt izmaiņas.
 IMAGE6
Atcelt  veiktās darbības.
 
Informācijas meklēšana pēc noteiktiem parametriem.

5  
Kluba Informatīvā sistēma



IMAGE7

Palaižot Klubs.exe parādās Pieslēgšanās Oracle datu bāzei:

Attēls 1 Pieslēgšānās Oracle datu bāzei


IMAGE8

Ja parametri nav pareizi ievadīti, tad tiek izvadīts kļūdas paziņojums


Citādi tiek palaista aplikācija.

Šī ekrāna forma paredzēta kluba pasākumu uzskaitei.. Formā “Informatīvā
sistēma Klubs” obligāti aizpildāmi lauki: datums No, datums Līdz, Laiks, Telpa, Ilgums Laiks, Nosaukums
IMAGE9


Attēls 2 Kluba informatīvā sistēma

Apakšējā datu ievades logā ir divas lapiņas:
-                                  Dalībnieki, satur informāciju par pasākuma dalībniekiem uz tekošo pasākumu.
No personu saraksta ar pogas <= palīdzību Jūs varat pasākumam pievienot personu
No dalībnieku saraksta ar pogas => palīdzību Jūs varat izmest no pasākuma personu
Ja personai nav neviena no pasākumam piešķirtām tiesībām, tad persona netiek pierakstīta pasākumā, tiek izvadīts paziņojuma logs.
IMAGE10


IMAGE11


Attēls 3 Kluba informatīvā sistēma(lapiņa tiesības)
-                                  Tiesības, satur informāciju par tiesībām uz tekošo pasākumu. Ja Jūs gribat pasākumam pievienot personu kurai nav tiesības uz minēto pasākumu, tad izlec, kļūdas paziņojums un persona netiek pierakstīta uz pasākumu. Tas ir nepieciešams, lai uz pasākumu nepierakstītu nepiederošas personas.

No tiesību  saraksta ar pogas <= palīdzību Jūs varat pasākumam pievienot jaunu tiesību
No tiesību  saraksta ar pogas => palīdzību Jūs varat pasākumam izmest tiesību no pasākuma.


No šīs ekrāna formas var izsaukt:
Menu
Moduļi – Personas
Personu reģistrācijas modeli “Personas
Moduļi – Klasifikatori
Klasifikatorus
Moduļi – Klasifikatori - Telpass
pasākumu telpu modeli “Telpas
Moduļi – Klasifikatori – Tēmass
tēmu modeli “Tēmass
Moduļi – Klasifikatori – Tiesības
tiesību modeli “Tiesības
Moduļi – Meklēšana – Pasākumi
Pasākumu meklēšanas moduli
Moduļi – Meklēšana – Personas
Personas meklēšanas moduli

·       Darba beigšanas pogu “Darba beigas”. Poga nodrošina iespēju iziet  no visas sistēmas.

5.1 
Personas


Šī ekrāna forma paredzēta fizisko personu uzskaitei. Formā “Personas” obligāti aizpildāms lauks: Uzvārds.


Attēls 4 Personas(lapiņa - Tiesības)


Apakšējā datu ievades logā ir divas lapiņas.
- Tiesības
No saraksta “Brīvās tiesības” ar pogas <= palīdzību Jūs varat personai pievienot tiesību.
No saraksta “Piešķirtās tiesības” ar pogas => palīdzību Jūs varat atņemt personai tiesību.
Piez. Ja Jūs nevarat pievienot pasākumam personu, tad jāiedod personai pasākuma tiesība. To var izdarīt apakšējā datu  ievades logā.

IMAGE13


Attēls 5 Personas(lapiņa - Apmeklētie pasākumi)

- Apmeklētie pasākumi:
            Jūs varat redzēt visu pasākumu sarakstu, kurās ir pierakstīta dotā persona. Divreiz noklikšķinot uz tabulu Apmeklētie pasākumi, tiek nostādināts kursors uz izvēlēto pasākumu formā, kurā tiek atspoguļoti visi pasākumi.
  No saraksta “Brīvās tiesības” ar pogas <= palīdzību Jūs varat personai pievienot tiesību.
  No saraksta “Piešķirtās tiesības” ar pogas => palīdzību Jūs varat atņemt personai tiesību.

5.2 
Telpas (klasifikators)



Šī ekrāna forma paredzēta telpu, kurās notiek pasākumi,  uzskaitei.. Formā “Telpas” obligāti aizpildāmi lauki: Kods, Numurs, Vietu skaits.

IMAGE14



Attēls 6. Telpas

5.3 
Tēmas (klasifikators)



Šī ekrāna forma paredzēta pasākumu tēmu ievadei. Formā “Tēmas” obligāti aizpildāmi lauki: Kods, Tēma.


IMAGE15


Attēls 7 Tēmas

5.4 
Tiesības (klasifikators)



Šī ekrāna forma paredzēta Tiesību uzskaitei. Formā “Tiesības” obligāti aizpildāms lauki: Kods, Nosaukums.

IMAGE16


Attēls 8 Tiesības

5.5 
Pasākumu meklēšana.



Šī ekrāna forma paredzēta Pasākumu meklēšanai. Pasākumus var meklēt pēc parametriem: Nosaukums, Tēma, No kura datuma pasākums sākas, beidzas, pasākuma ilgums, sākuma laiks, kurā telpā norisinājies.
Atlasītos pasākumus var drukāt ar vai bez dalībniekiem.
IMAGE17


Attēls 9 Pasākumu meklēšana





5.6 
Personu meklēšana.



IMAGE18

Šī ekrāna forma paredzēta Personu meklēšanai. Personas var meklēt pēc parametriem: Uzvārds, Vārds, Adrese, Tālruņa nr.

Attēls 10 Personu meklēšana

6  
Programmas apraksts.



6.1  Datu plūsmu modelis.





6.2  ER modelis.


ER modelis tika veidots, izmantojot Oracle Designer 2000 apakšprogrammu DataDiagrammer. Katra kaste ir viena tabula. Tabulas nosaukums ir kastē virs svītras, pēc zīmes “@” seko datu bāzes nosaukums – EDII. Katrai kastei ir atribūti(lauki).
Ja pirms lauka ir simbols “*”, tad tas nozīmē, ka lauks ir obligāti jāaizpilda, 0 – var neaizpildīt. Simbols “#”nozīmē, ka laukam ir primārā atslēga.
Tabulas(entītes) ir savā starpā veido relācijas.
Šī zīme nozīmē, ka Tabula1 veido relāciju  ar Tabulu2 “1” pret daudziem, pieraksta 1:n.

 



 
Tabula1                 Tabula2
Attēls 11 ER modelis

6.3 
Datu modeļa apraksts.


Visas saites ar datu bāzes datiem tiek speciāli izdalītas datu modelī. Šīs saites var būt:
-                                  datu bāze,
-                                  tabulas,
-                                  pieprasījumi,
IMAGE19


Attēls 12 Aplikācijas Datu modelis meklēšana


Tā kā aplikācijas tabulas dati atrodas Orākla datu bāzē, tad lai vērstos pie Orākla datu bāzes, mēs izmantojam Delphi komponenti tDatabase, kurā kā parametrus nodod
SERVER NAME=orae
USER NAME=klubs
PASSWORD=kluba_parole

Lai strādātu ar konkrētām tabulām, izmantojam komponenti tTable. Piemēram tabula tPasākumi ir tTable komponente, atsevišķi komponentei var noradīt kādas kolonas, kādā formātā attēlot un pat uzlikt filtra nosacījumu.

Ja mums ir vajadzīgs pieprasījums no vairākām tabulām vai no abstraktās "Dual" tabulas, tad izmanto komponenti "tQuery".
Piemēram, lai nolasītu katreiz unikālu vērtību no Orākla sistēmas tabulas, izveidojam "tQuery" komponenti "qGetSeq", kurā “Sql” teksts  - “Select kluba_seq from dual”, tad katreiz atverot šo pieprasījumu tiks nolasīta Orākla sekvence.
Piez. Visām pieprasījuma un tabulu komponentēm tiek norādīta tDatabase komponente.

6.4 
Datu moduļa pieprasījumi.


Tālāk tiek apskatīti pieprasījumi, kurus izmanto gridi (lauku kopa, kura attēlo datus).

Pieprasījuma komponentes vārds
Pieprasījuma teksts
Paskaidrojums
Kurā gridā, forma "Pasākumi"
qPerBri
SELECT
 PER.PERSONA_ID,
 UZVARDS||' '||VARDS As Persona

FROM K_PERSONAS PER

WHERE
  PERSONA_ID NOT IN
     ( SELECT PERSONA_FK
       FROM K_DALIBNIEKI
        WHERE
               K_DALIBNIEKI.PASAKUMS_FK=
              :PASAKUMS_ID)

ORDER BY Persona

Atlasa tās personas, kuras nav pierakstītas pasākumam (pasākumu identificē parametrs :PASAKUMS_ID)
Personu saraksts
qPerTieBri
TIESIBA_ID,
 :PERSONA_ID AS PERSONA_ID

FROM
  K_TIESIBAS

WHERE
  TIESIBA_ID NOT IN
     ( SELECT TIESIBA_FK FROM K_PERSONAS_TIES
        WHERE PERSONA_FK=:PERSONA_ID)

ORDER BY NOSAUKUMS

Atlasa tās tiesības, kuras vēl nav piešķirtas personai(personu identificē parametrs :PERSONA_ID)
Atlikušās tiesības(forma Personas)
qPasTies
SELECT
  T.NOSAUKUMS,
  P_T.PAS_TIES_ID,
  P_T.TIESIBA_FK,
  P_T.PASAKUMS_FK

FROM
 K_PASAKUMI_TIES P_T,K_TIESIBAS T

WHERE
  P_T.PASAKUMS_FK = :PASAKUMS_ID
  AND T.TIESIBA_ID = P_T.TIESIBA_FK
  AND TIESIBA_FK IN
   (SELECT TIESIBA_FK
    FROM K_PASAKUMI_TIES
    WHERE
     PASAKUMS_FK = :PASAKUMS_ID)

Atlasa pasākumam(pasākumu identificē parametrs :PASAKUMS_ID) piešķirtās tiesības
Piešķirtās tiesības
qPasTieBri
SELECT
  T.NOSAUKUMS,
  T.TIESIBA_ID

FROM
 K_TIESIBAS T

WHERE
  T.TIESIBA_ID NOT IN
   (SELECT TIESIBA_FK
    FROM K_PASAKUMI_TIES
    WHERE
     PASAKUMS_FK = :PASAKUMS_ID)

ORDER BY T.NOSAUKUMS

Atlasa tās tiesības, kuras nav piešķirtas tekošajam pasākumam (pasākumu identificē parametrs :PASAKUMS_ID)
Atlikušās tiesības

6.5 
Datu moduļa funkciju apraksts.



Funkcija
Ko dara
Sequence
Atgriež unikālu vērtību
FillKd
Aizpilda klasifikatoru tabulas identifikatoru ar unikālu vērtību
TPersonasNewRecord
Aizpilda Personas identifikatoru ar f-jas Sequence rezultātu
TTelpasNewRecord
Aizpilda Telpas identifikatoru ar f-jas Sequence rezultātu
TTemasKlNewRecord
Aizpilda Tēmas identifikatoru ar f-jas Sequence rezultātu
TPasakumiNewRecord
Aizpilda Pasākuma identifikatoru ar f-jas Sequence rezultātu
TPasPerNewRecord
Aizpilda identifikatoru ar f-jas Sequence rezultātu
TTiesibasNewRecord

Aizpilda Tiesības identifikatoru ar f-jas Sequence rezultātu
TPasPerAfterPost
Atjauno Brīvo personu pieprasījumu, jo ir manījies dalībnieku sastāvs
TPerTieAfterPost
Atjauno Personu tiesību pieprasījumu, jo ir manījušas personas tiesības

TPerTieAfterPost

Atjauno Personu tiesību pieprasījumu, jo ir manījušas personas tiesības
DMCreate
Atver tabulas
TpasakumiILGUMSGetText
Atgriež no datuma tipa tikai laiku
TpasakumiILGUMSSetText
Ieraksta datuma tipa laukā laiku
TpersonasAfterPost
Atjauno visus pieprasījumus, kuri saistīti ar Personu tabulu


6.6 
Pasākumi


Informatīvā sistēmas galvenā forma “Klubs” ir nepieciešama priekš jaunu pasākumu ievadīšanas un esošo pasākumu labošanas, kā arī tiesību piešķiršanu pasākumiem un tiesību dzēšanu.
 No galvenās formas var izsaukt palīgformas – Personas, Telpas, Tēmas, Tiesības, Personu meklēšana, Pasākumu meklēšana.

Funkcijas
aaa
Funkcijas nosaukums
Ko dara
BpasTieAddClick
pievieno pasākumam izvēlēto personu
PersonasFindClick
izsauc Personu meklēšanas formu
BDalVesClick
Izsauc personu formu, un iestāda lapu – Dalībnieku vēsture
ParProgrammu1Click
parāda palīdzības formu
PersonasClick
izsauc personu formu
BPasTieAddClick
pievieno pasākumam jaunu tiesību
bPasTieDelClick
izmet pasākuma tiesību
PasFinClick
izsauc pasākumu meklēšana formu
BtnDzestClick
izmet tekošo pasākumu
BtnPievienotClick
pievieno jaunu pasākumu
FormClose
aizver Kluba aplikāciju
BtnApstipClick
nosūta pasākumu tabulas izmaiņas uz datu bāzi
BtnAtceltClick
atsauc pasākumu tabulas izmaiņas
Telpas2Click
izsauc Telpu formu
Tmas1Click
izsauc Tēmu  formu
Tiesbas1Click
izsauc Tiesību formu
DBGPasDalClick
nostājas personu tabulā uz to personu, kura ir izvēlēta
BtnLemMekClick
Izsauc pasākumu meklēšanas formu
sPasakumiStateChange
atkarībā no pasākumu tabulas stāvokļa, izspīdina pogas

6.7 
Personas


Personu modelis ir nepieciešams priekš jaunu personu reģistrēšanas, esošo personu datu izmainīšanas. Šajā modulī var definēt personas tiesības un redzēt personas piedalīšanos pasākumos.


Funkcijas

Funkcijas nosaukums
Ko dara
SpersonasStateChange
Atkarībā no tabulas stāvokļu maina pogu stāvokļus
BtnDzestClick
Izmet tekošo ierakstu no Personu tabulas
BtnBeigtClick
Aizver Personu formu
BtnApstipClick
Nosūta personu tabulas izmaiņas uz datu bāzi.
BtnAtceltClick
Atsauc personu tabulas izmaiņas
FormClose
Piedāvā lietotājam saglabāt izmaiņas
DbgPersonasEnter
atzīmē, kura ir tekošā tabula
DbgPersonasTiesEnter
Atzīmē, kura ir tekošā tabula
SperTieStateChange
Atkarībā no Personu Tiesību tabulas stāvokļa
SperTieStateChange
Atkarībā no Personu Tiesību tabulas stāvokļa
BperTieAdd
Aizpilda Personu tiesību tabulu
BperTieDelClick
Izmet personas tekošo tiesību
BtnLemMekClick
Izsauc Personu meklēšanas logu
DBGPasakumiDblClick
nostājās Pasākumu tabulā uz izvēlēto pasākumu



6.8  Pasākumu meklēšana


Kad lietotājs ir aizpildījis kontroles laukus un nospiedis pogu “Kārtot tad tiek aizpildīti pieprasījuma parametri un izpildīts pieprasījums(izvadīts uz ekrāna “gridos” – Pasākumi, Dalībnieki”). Pieprasījums – Dalībnieki ir details” attiecībā pret Pasākumiem, to definē pieprasījuma īpašībā.

Funkcijas

Funkcijas nosaukums
Ko dara
BtnMekletClick
Atlasa pasākumus un dalībniekus
BdrukatClick
Izsauc reportu – Pasākumi
BdruDalClick
Izsauc reportu – Pasākumi un dalībnieki






6.9 
Personu meklēšana


Atlasa personas pēc atlases parametriem – “Uzvārds”, “Vārds”, “Adrese”, Telefons. Piez. Divreiz noklikšķinot uz Personu "gridu", var nostāties personu tabulā uz izvēlēto personu.

Funkcijas

Funkcijas nosaukums
Ko dara
FindPers
atlasa datus no Personu tabulas pēc uzdotiem kritērijiem
DbgPersonasFindDblClick
nostājas personu tabulā uz izvēlēto personu




Secinājumi
               

Kursa darba izpildes laikā apguvu:
-                                  programmēšanas valodu – Delphi 2.0,
-                                  datu bāzu sistēmu Oracle.
Iemācījos patstāvīgi risināt jautājumus saistītus ar uzdoto darbu.
Secinu, ka izvēlētā programmēšanas valoda atbilst mūsdienu prasībām, un aplikācija pilnībā veic dotā kursa projekta uzdevumu.


Izmantotās literatūras saraksts
               

1.       User`s guide for Borland Delphi.
(Borland International, Inc.)
2.       Object Pascal Language Guide.
(Borland International, Inc.)
3.       Client/Server strategies, David Vaskevitch.
(IDG Books Worlwide, Inc)
4.       SQL Plus Users Guide and Reference, Version 3.1, Frank Rovitto
(Oracle Corporation)
5.       Oracle Designer/2000, S,Chatwin, Helen Symington, Leon McArdle
(Oracle Corporation).





Pielikums

7   Moduļu kodi.



7.1  Modulis – “Datu modulis”.


function TDM.Sequence : integer;
// Atgriež unikālu vērtību. Izmanto, aizpildot ieraksta unikālo atslēgu
begin
   DM.qGetSeq.Close;
   DM.qGetSeq.Open;
   Result := DM.qGetSeq['NEXTVAL'];
end;

procedure TDM.FillKd(DataSet: TDataSet);
// Aizpilda klasifikatoru tabulas unikālo atslēgu
var
   vKd_New : String[4];
begin
  // Aprēķiniem izmanto tabulas komonenti – qTemp
   DM.qTemp.Close;
   DM.qTemp.SQL.Clear;
// Atrod maksimālo atslēgas lauka vērtību un pieskaita 5
   DM.qTemp.SQL.Add('SELECT MAX(' + DataSet.Fields[0].FieldName + ') FROM ' +
      (DataSet as TTable).TableName);
   Dm.qTemp.Open;
   if DM.qTemp.Fields[0].Value = Null
      then vKd_New := '0005'
      else vKd_New := IntToStr(StrToInt( DM.qTemp.Fields[0].Value ) + 5);
   vKd_New := Copy('000',1,4-Length(vKd_New)) + vKd_New;
   DataSet.Fields[0].Value := vKd_New;
end;

procedure TDM.tPersonasNewRecord(DataSet: TDataSet);
// Aizpilda tabulas Persona unikālo atslēgu
begin
DataSet['PERSONA_ID'] := Sequence;
end;

procedure TDM.tTelpasNewRecord(DataSet: TDataSet);
// Aizpilda tabulas Telpas unikālo atslēgu
begin
DataSet['TELPA_ID'] := Sequence;
end;

procedure TDM.tTemasKlNewRecord(DataSet: TDataSet);
// Aizpilda tabulas Telpas unikālo atslēgu
begin
FillKd( DataSet );
end;

procedure TDM.tPasakumiNewRecord(DataSet: TDataSet);
// Aizpilda tabulas Telpas unikālo atslēgu
begin
DataSet['PASAKUMS_ID'] := Sequence;
end;

procedure TDM.tPasPerNewRecord(DataSet: TDataSet);
// Aizpilda tabulas Dalībnieki unikālo atslēgu
begin
DataSet['DALIBNIEKS_ID'] := Sequence;
end;

procedure TDM.tTiesibasNewRecord(DataSet: TDataSet);
// Aizpilda tabulas Tiesības unikālo atslēgu
begin
DataSet['TIESIBA_ID'] := Sequence;
end;

procedure TDM.tPasPerAfterPost(DataSet: TDataSet);
// Atjauno Brīvo personu pieprasījumu, jo ir manījies dalībnieku sastāvs
begin
qPerBri.Close;
qPerBri.Open;
end;

procedure TDM.tPerTieAfterPost(DataSet: TDataSet);
// Atjauno Personu tiesību pieprasījumu, jo ir manījušas personas tiesības
begin
qPerTie.Close;
qPerTieBri.Close;
qPerTie.Open;
qPerTieBri.Open;
end;

procedure TDM.tPasTiesAfterPost(DataSet: TDataSet);
// Atjauno Pasākumu tiesību un brīvo tiesību pieprasījumu, jo ir mainījušās pasākuma tiesības
begin
qPasTies.Close;qPasTieBri.Close;qPasTies.Open;qPasTieBri.Open;
end;

procedure TDM.DMCreate(Sender: TObject);
begin
// Atver tabulas
tPasakumi.Open;tPasPer.Open;tPerPas.Open;tPersonas.Open;tPerTie.Open;
tPasTies.Open;tPerTie.Open;tTemasKl.Open;tTelpas.Open;tTiesibas.Open;
// Atver visus pieprasījumus
qPasTies.Open;qPasTieBri.Open;qPer.Open;qPerBri.Open;qPerTie.Open;qPerTieBri.Open;
end;

procedure TDM.tPasakumiILGUMSGetText(Sender: TField; var Text: string;
  DisplayText: Boolean);
// Uz ekrāna izvada pasākuma laiku formātā HH:MM
begin
Text := copy((Sender as tDateTimeField).asString,10,5);
end;

procedure TDM.tPasakumiILGUMSSetText(Sender: TField; const Text: string);
// Ieraksta tabulā Pasākumi laiku formātā HH:MM
begin
(Sender as tDateTimeField).asDateTime := strToDateTime('01.01.01 '+text);
end;

procedure TDM.tPersonasAfterPost(DataSet: TDataSet);
// Atver visus pieprasījumus, kas saistīti ar Personu tabulu
begin
qPer.Close;qPer.Open;
qPerBri.Close;qPerBri.Open;
qPerTie.Close;qPerTie.Open;
qPerTieBri.Close;qPerTieBri.Open;
end;

7.2 
Pasākumi


procedure TfPasakumi.bPasTieAddClick(Sender: TObject);
// pievieno pasākumam izvēlēto personu
var
    vPasId, vPerId: integer;
begin

   vPerId := DM.qPerBri.FieldByName('PERSONA_ID').asInteger;
   vPasId := DM.tPasakumi.FieldByName('PASAKUMS_ID').asInteger;
   DM.tPasPer.Append;
   DM.tPasPer['PERSONA_FK'] := vPerId;
   DM.tPasPer['PASAKUMS_FK'] := vPasId;
   DM.tPasPer.Post;
   dm.tPerPas.Refresh;
end;

procedure TfPasakumi.PersonasFindClick(Sender: TObject);
// izsauc Personu meklēšanas formu
begin
fPersonasFind.ShowModal;
end;

procedure TfPasakumi.bDalVesClick(Sender: TObject);
// Izsauc personu formu, un iestāda lapu – Dalībnieku vēsture
begin
fPersonas.Show;
fPersonas.pages.activePage := fPersonas.pages.Pages[1];
end;

procedure TfPasakumi.ParProgrammu1Click(Sender: TObject);
// parāda palīdzības formu
begin
   fParProgzi.Show;
end;

procedure TfPasakumi.PersonasClick(Sender: TObject);
// izsauc personu formu
begin
fPersonas.Show;
fPersonas.pages.activePage := fPersonas.pages.Pages[0];
end;

procedure TfPasakumi.bPasTieAddClick(Sender: TObject);
// pievieno pasākumam jaunu tiesību
var
    vPasId, vTieId: integer;
begin
vPasId := DM.tPasakumi.FieldByName('PASAKUMS_ID').asInteger;
vTieId := DM.qPasTieBri.FieldByName('TIESIBA_ID').asInteger;

DM.tPasTies.Append;
DM.tPasTies['PAS_TIES_ID'] := DM.sequence;
DM.tPasTies['PASAKUMS_FK'] := vPasId;
DM.tPasTies['TIESIBA_FK'] := vTieId;
DM.tPasTies.Post;
end;

procedure TfPasakumi.bPasTieDelClick(Sender: TObject);
// izmet pasākuma tiesību
var vSql: string;
begin
if DM.tPasTies.FindKey([DM.qPasTies.FieldByName('PAS_TIES_ID').asString]) then
   DM.tPasTies.Delete;
end;

procedure TfPasakumi.PasFinClick(Sender: TObject);
// izsauc pasākumu meklēšana formu
begin
fPasFin.ShowModal;
end;

procedure TfPasakumi.BtnDzestClick(Sender: TObject);
// imzet tekošo pasākumu
begin
  DM.tPasakumi.Delete;
end;

procedure TfPasakumi.BtnPievienotClick(Sender: TObject);
// pievieno jaunu pasākumu
begin
  DM.tPasakumi.Append;
end;

procedure TfPasakumi.FormClose(Sender: TObject; var Action: TCloseAction);
// aizver Kluba aplikāciju
begin
Application.Terminate;
end;

procedure TfPasakumi.BtnApstipClick(Sender: TObject);
// nosūta pasākumu tabulas izmaiņas uz datu bāzi
begin
DM.tPasakumi.Post
end;

procedure TfPasakumi.BtnAtceltClick(Sender: TObject);
// atsauc pasākumu tabulas izmaiņas
begin
DM.tPasakumi.Cancel;
end;

procedure TfPasakumi.Telpas2Click(Sender: TObject);
// izsauc Telpu formu
begin
fTelpas.Show;
end;

procedure TfPasakumi.Tmas1Click(Sender: TObject);
// izsauc Tēmu  formu
begin
fTemas.Show;
end;

procedure TfPasakumi.Tiesbas1Click(Sender: TObject);
// izsauc Tiesību formu
begin
fTiesibas.Show;
end;

procedure TfPasakumi.DBGPasDalClick(Sender: TObject);
// nostājas personu tabulā uz to personu, kura ir izvēlēta
begin
DM.tPersonas.Locate('PERSONA_ID',DM.tPasPer.FieldByName('PERSONA_FK').asInteger,[]);
end;

procedure TfPasakumi.BtnLemMekClick(Sender: TObject);
// Izsauc pasākumu meklēšanas formu
begin
fPasFin.ShowModal;
end;

procedure TfPasakumi.sPasakumiStateChange(Sender: TObject);
// atkarībā no pasākumu tabulas stāvokļa, izspīdina pogas
var
   Statuss : TDataSetState;
begin
   Statuss := sPasakumi.State;
   case Statuss of
      dsInactive :
         begin
            btnPievienot.Enabled := FALSE;
            btnDzest.Enabled     := FALSE;
            btnApstip.Enabled    := FALSE;
            btnAtcelt.Enabled    := FALSE;
         end;
      dsBrowse   :
         begin
            btnPievienot.Enabled := TRUE;
            btnDzest.Enabled     := TRUE;
            btnApstip.Enabled    := FALSE;
            btnAtcelt.Enabled    := FALSE;
         end;
      dsInsert   :
         begin
            btnPievienot.Enabled := FALSE;
            btnDzest.Enabled     := FALSE;
            btnApstip.Enabled    := TRUE;
            btnAtcelt.Enabled    := TRUE;
         end;
      dsEdit     :
         begin
            btnPievienot.Enabled := FALSE;
            btnDzest.Enabled     := FALSE;
            btnApstip.Enabled    := TRUE;
            btnAtcelt.Enabled    := TRUE;
         end;
   end;
end;



7.3       
Personas



procedure TfPersonas.sPersonasStateChange(Sender: TObject);
// Atkarībā no tabulas stāvokļu maina pogu stāvokļus
var
   Statuss : TDataSetState;
begin
   Statuss := sPersonas.State;
   case Statuss of
      dsInactive :
         begin
            btnPievienot.Enabled := FALSE;
            btnDzest.Enabled     := FALSE;
            btnApstip.Enabled    := FALSE;
            btnAtcelt.Enabled    := FALSE;
         end;
      dsBrowse   :
         begin
            btnPievienot.Enabled := TRUE;
            btnDzest.Enabled     := TRUE;
            btnApstip.Enabled    := FALSE;
            btnAtcelt.Enabled    := FALSE;
         end;
      dsInsert   :
         begin
            btnPievienot.Enabled := FALSE;
            btnDzest.Enabled     := FALSE;
            btnApstip.Enabled    := TRUE;
            btnAtcelt.Enabled    := TRUE;
         end;
      dsEdit     :
         begin
            btnPievienot.Enabled := FALSE;
            btnDzest.Enabled     := FALSE;
            btnApstip.Enabled    := TRUE;
            btnAtcelt.Enabled    := TRUE;
         end;
   end;
end;

procedure TfPersonas.BtnPievienotClick(Sender: TObject);
// Pievieno jaunu ierakstu tabulās - Personas vai Personas tiesības.
begin
// Ja aktīvā tabula ir tabula “Personas”
if fPersonas.Tag = 1 then begin
   DM.tPersonas.Append;
   dbgPersonas.SetFocus
   end
else begin
   DM.tPerTie.Append;
   dbgPersonasTies.SetFocus;
end;
end;

procedure TfPersonas.BtnDzestClick(Sender: TObject);
// Izmet tekošo ierakstu no Personu tabulas
begin
   DM.tPersonas.Delete;
   dbgPersonas.SetFocus;
end;

procedure TfPersonas.BtnBeigtClick(Sender: TObject);
// Aizver personu formu
begin
   Close;
end;

procedure TfPersonas.BtnApstipClick(Sender: TObject);
// Nosūta personu tabulas izmaiņas uz datu bāzi.
begin
   DM.tPersonas.Post;
   dbgPersonas.SetFocus;
end;

procedure TfPersonas.BtnAtceltClick(Sender: TObject);
// Atsauc personu tabulas izmaiņas
begin
   DM.tPersonas.Cancel;
   dbgPersonas.SetFocus;
end;

procedure TfPersonas.FormClose(Sender: TObject; var Action: TCloseAction);
// Ja izmaiņas nav aizsūtītas uz datu bāzi, tad izlec logs, lai lietotājs
// apstiprina izmaiņas.
var
   Statuss : TDataSetState;
begin
   Statuss := sPersonas.State;
   if ( Statuss = dsInsert ) or ( Statuss = dsEdit ) then
      case MessageDlg('Vai saglabāt izmaiņas ?',mtConfirmation,[mbYes,mbNo,mbCancel],0 ) of
      mrYes    : DM.tPersonas.Post;
      mrNo     : DM.tPersonas.Cancel;
      mrCancel :
         begin
            dbgPersonas.SetFocus;
            Abort;
         end;
      end;
end;

procedure TfPersonas.dbgPersonasEnter(Sender: TObject);
// Piešķir formas mainīgajam vērtību 1, tas nozīmē, ka aktīvā
// tabula ir Personu tabula
begin
fPersonas.Tag := 1;
end;

procedure TfPersonas.dbgPersonasTiesEnter(Sender: TObject);
// atzīmē, kura ir tekošā tabula
begin
// Piešķir formas mainīgajam vērtību 1, tas nozīmē, ka aktīvā
// tabula nav Personu tabula
fPersonas.Tag := 2;
end;

procedure TfPersonas.sPerTieStateChange(Sender: TObject);
// Atkarībā no Personu Tiesību tabulas stāvokļa
// izspīdina pogas
var
   Statuss : TDataSetState;
begin
   Statuss := sPerTie.State;
   case Statuss of
      dsInactive :
         begin
            btnPievienot.Enabled := FALSE;
            btnDzest.Enabled     := FALSE;
            btnApstip.Enabled    := FALSE;
            btnAtcelt.Enabled    := FALSE;
         end;
      dsBrowse   :
         begin
            btnPievienot.Enabled := TRUE;
            btnDzest.Enabled     := TRUE;
            btnApstip.Enabled    := FALSE;
            btnAtcelt.Enabled    := FALSE;
         end;
      dsInsert   :
         begin
            btnPievienot.Enabled := FALSE;
            btnDzest.Enabled     := FALSE;
            btnApstip.Enabled    := TRUE;
            btnAtcelt.Enabled    := TRUE;
         end;
      dsEdit     :
         begin
            btnPievienot.Enabled := FALSE;
            btnDzest.Enabled     := FALSE;
            btnApstip.Enabled    := TRUE;
            btnAtcelt.Enabled    := TRUE;
         end;
   end;
end;

procedure TfPersonas.bPerTieAdd(Sender: TObject);
// aizpilda Personu tiesību tabulu
var
    vPerId, vTieId: integer;
begin
// saglabā tekošās personas identifikatoru,
vPerId := DM.qPerTieBri.FieldByName('PERSONA_ID').asInteger;

// saglabā tās tiesības identifikatora vērtību,
// kura ir tekošā brīvo tiesību “gridā”
vTieId := DM.qPerTieBri.FieldByName('TIESIBA_ID').asInteger;

// Pievieno izvēlēto tiesību Personu Tiesību tabulā
DM.tPerTie.Append;
   DM.tPerTie['PERSONA_FK'] := vPerId;
   DM.tPerTie['TIESIBA_FK'] := vTieId;
DM.tPerTie.Post;
end;

procedure TfPersonas.bPerTieDelClick(Sender: TObject);
begin
// Izmet personas tekošo tiesību
DM.tPerTie.Delete;
end;

procedure TfPersonas.BtnLemMekClick(Sender: TObject);
begin
// Izsauc Personu meklēšanas logu
fPersonasFind.Show;
end;

procedure TfPersonas.DBGPasakumiDblClick(Sender: TObject);
// nostājās Pasākumu tabulā uz izvēlēto pasākumu
begin
DM.tPasakumi.Locate('PASAKUMS_ID',DM.tPerPas.FieldByName('PASAKUMS_FK').asInteger,[]);
end;

7.4 
Pasākumu meklēšana



procedure TfPasFin.BtnMekletClick(Sender: TObject);
// Aizpilda pieprasījuma parametrus, atkarībā, kādus lietotājs kontroles laukus ir aizpildījis, un parāda uz ekrāna atlasītos datus(pasākumus, pasākuma dalībniekus)
begin
   // Tiek aizpildīts pieprasījuma parametrs: Pasākuma nosaukums         
   qPasFin.ParamByName('NOSAUKUMS').Value := eNosaukums.Text;

   // Tiek aizpildīts pieprasījuma parametrs: Tēmas ārējā atslēga              
   if cbTema.KeyValue = Null then
      qPasFin.ParamByName('TEMA_FK').Value := 0 // Nozīmē, ka atlasē netiek ņemta vērā Tēma
   else
      qPasFin.ParamByName('TEMA_FK').Value := cbTema.KeyValue;


   // atlase pēc Datuma No apakšējās robežas
   if eDatNoMin.Text = '  .  .  ' then
      // ‘’  Nozīmē, ka atlasē netiek ņemts vērā pasākuma notikšanas Datums
      qPasFin.ParamByName('DATNO_MIN').Value := ''
   else
       qPasFin.ParamByName('DATNO_MIN').asDateTime := strToDateTime(eDatNoMin.Text);

// atlase pēc Datuma No augšējās robežas
   if eDatNoMax.Text = '  .  .  ' then
      qPasFin.ParamByName('DATNO_MAX').Value := ''
   else
       qPasFin.ParamByName('DATNO_MAX').asDateTime := strToDateTime(eDatNoMax.Text);

// atlase pēc Datuma Līdz apakšējās robežas
   if eDatLidzMin.Text = '  .  .  ' then
      qPasFin.ParamByName('DATLIDZ_MIN').Value := ''
   else
       qPasFin.ParamByName('DATLIDZ_MIN').asDateTime := strToDateTime(eDatLidzMin.Text);

// atlase pēc Datuma Līdz augšējās robežas
   if eDatLidzMax.Text = '  .  .  ' then
      qPasFin.ParamByName('DATLIDZ_MAX').Value := ''
   else
       qPasFin.ParamByName('DATLIDZ_MAX').asDateTime := strToDateTime(eDatLidzMax.Text);

   // Ilguma apaksējā atlases robeža
   if eIlgumsMin.Text = '  :  ' then
      qPasFin.ParamByName('ILGUMS_MIN').asString := '0'
   else
       qPasFin.ParamByName('ILGUMS_MIN').asString := eIlgumsMin.Text;

   // Ilguma augšējā atlases robeža
   if eIlgumsMax.Text = '  :  ' then
      qPasFin.ParamByName('ILGUMS_MAX').asString := '0'
   else
       qPasFin.ParamByName('ILGUMS_MAX').asString := eIlgumsMax.Text;

   // atlase pēc Telpas ārējās atslēgas
   if cbTelpa.KeyValue = null then
     qPasFin.ParamByName('TELPA_FK').Value := 0
   else
     qPasFin.ParamByName('TELPA_FK').Value := cbTelpa.KeyValue;

   qPasFinDal.Close;
   qPasFin.Close;

// Izdara pieprasījumu Pasākumu tabulā pēc jaunām parametru vērtībām(Master pieprasījums)
   qPasFin.Open;
// Izdara pieprasījumu Dalībnieku tabulā pēc jaunām parametru vērtībām(Detail pieprasījums)
   qPasFinDal.Open;

end;

procedure TfPasFin.bDrukatClick(Sender: TObject);
// Izsauc Atlasīto pasākumu reportu
begin
rPasFin.qrPasFin.Preview;
end;

procedure TfPasFin.bDruDalClick(Sender: TObject);
// Izsauc Atlasīto pasākumu un to dalībnieku reportu
begin
rFinPasDal.qrPasFinDal.Preview;
end;

7.5       
Personu meklēšana




procedure TfPersonasFind.FindPers();
// atlasa datus no Personu tabulas pēc uzdotiem kritērijiem
var
   vSQLTeksts     : String;
begin
   // Ja ir ir aizpildīts “uzvārda” lauks, tad pievieno “uzvārdu” Where nosacījumā
   if ( eUzvards.Text <> '' ) then begin
      vSQLTeksts := ' AND UPPER(UZVARDS) LIKE ''' + eUzvards.Text + '%''';
   end;

// Ja ir ir aizpildīts “vārda” lauks, tad pievieno “vārdu” Where nosacījumā
   if ( eVards.Text <> '' ) then begin
      vSQLTeksts := vSQLTeksts + ' AND UPPER(VARDS) LIKE ''' + eVards.Text + '%''';
   end;

// Ja ir ir aizpildīts “adreses” lauks, tad pievieno “adresi” Where nosacījumā
   if ( eAdrese.Text <> '' ) then begin
      vSQLTeksts := vSQLTeksts + ' AND UPPER(ADRESE) LIKE ''' + eAdrese.Text + '%''';
   end;

// Ja ir ir aizpildīts “talrunis” lauks, tad pievieno “adresi” Where nosacījumā
   if ( eTalrunis.Text <> '' ) then begin
      vSQLTeksts := vSQLTeksts + ' AND TALRUNIS LIKE ''' + eTalrunis.Text + '%''';
   end;

   if vSQLTeksts <> '' then begin
      // izgriež no sql teksta pirmos piecus burtus (‘ AND ’)
      vSQLTeksts := Copy ( vSQLTeksts, 6, Length( vSQLTeksts ) - 5 );
   vSQLTeksts := 'SELECT PERSONA_ID,UZVARDS,VARDS,TALRUNIS,ADRESE’ +
       ‘ FROM K_PERSONAS WHERE ' + vSQLTeksts +  'ORDER BY UZVARDS,VARDS';

   end
   else
      vSQLTeksts := 'SELECT PERSONA_ID,UZVARDS,VARDS,TALRUNIS,ADRESE ‘ +
            ‘ FROM K_PERSONAS ORDER BY UZVARDS,VARDS';
   // izpilda Sql pieprasījumu un parāda datus uz ekrāna
   DM.qTemp.Close;
   DM.qTemp.SQL.Clear;
   DM.qTemp.SQL.Add( vSQLTeksts );
   DM.qTemp.Open;

end;

procedure TfPersonasFind.dbgPersonasFindDblClick(Sender: TObject);
begin
// nostājas personu tabulā uz izvēlēto personu
DM.tPersonas.Locate('PERSONA_ID',DM.qTemp.FieldByName('PERSONA_ID').asInteger,[]);
DM.qPerBri.Locate('PERSONA_ID',DM.qTemp.FieldByName('PERSONA_ID').asInteger,[]);
end;

7.6 
Trigeris “TRG_DALIBNIEKI_IU”


-- Trigeris atļauj vai aizliedz pievienot
-- pasakumam jaunu personu(tabula - K_DALIBNIEKI),
-- atkariibaa no personu tiesibaam un pasaakuma tiesiibaam
CREATE OR REPLACE TRIGGER TRG_DALIBNIEKI_IU
                BEFORE
                INSERT OR UPDATE OF PERSONA_FK,PASAKUMS_FK
                ON K_DALIBNIEKI
                FOR EACH ROW
DECLARE
                V_TEMP INTEGER;
                -- Saskaita, cik ir pasakumam zuliktas tiesibas
     CURSOR C_TIESIBU_SKAITS IS
                SELECT COUNT(PAS_TIES_ID)
                FROM K_PASAKUMI_TIES WHERE PASAKUMS_FK = :NEW.PASAKUMS_FK;
                -- Salasa tas pasakuma tiesibas, kuras sakrit ar personas tiesibaam
     CURSOR C_TIESIBAS IS
                SELECT PAS_TIES_ID FROM K_PASAKUMI_TIES
                WHERE
                  PASAKUMS_FK = :NEW.PASAKUMS_FK
                  AND TIESIBA_FK IN
                  (SELECT TIESIBA_FK FROM K_PERSONAS_TIES
                   WHERE PERSONA_FK = :NEW.PERSONA_FK);
BEGIN
OPEN C_TIESIBU_SKAITS;
OPEN C_TIESIBAS;
 -- Iesuta pasakuma tiesibu skaitu mainigaja
 FETCH C_TIESIBU_SKAITS INTO V_TEMP;
 -- Ja pasakumam nav nevienas tiesibas
 IF (C_TIESIBU_SKAITS%NOTFOUND OR V_TEMP < 1 ) THEN
   DBMS_OUTPUT.PUT_LINE ('Nav pasaakumam tiesiibas');
 ELSE
    FETCH C_TIESIBAS INTO V_TEMP;
   -- ja personai nav neviena pasakuma tiesiba
   IF C_TIESIBAS%NOTFOUND THEN
                   DBMS_OUTPUT.PUT_LINE ('Nav PERSONAI tiesibas');
         RAISE_APPLICATION_ERROR(-20001, 'Doto personu nevar pierakstīt pasākuma, jo tai nav tiesības');
   ELSE
                   DBMS_OUTPUT.PUT_LINE ('Persona veiksmiigi pierakstiita pasaakumaa');
   END IF;

 END IF;

END;
/
show err TRIGGER TRG_DALIBNIEKI_IU;

8  
Tabulu struktūras


8.1  Pasākumi

IMAGE20


Attēls 13 Tabulas “Pasākumi” struktūra


8.2  Personas

IMAGE21




Attēls 14 Tabulas “Personas” struktūra

8.3 
Dalībnieki


IMAGE22




Attēls 15 Tabulas “Dalībnieki” struktūra


IMAGE23


8.4  Pasākumu tiesības





Attēls 16 Tabulas “Pasākumu tiesības” struktūra

8.5 
Personas tiesības


IMAGE24


Attēls 17 Tabulas “Personas tiesības” struktūra

8.6  Personas tiesības


IMAGE25


Attēls 18 Tabulas “Tiesības” struktūra

8.7 
Telpas


IMAGE26



Attēls 19 Tabulas “Telpas” struktūra




8.8  Tēmas




IMAGE27


Attēls 20 Tabulas “Tēmas” struktūra

9  
Datu bāzes objektu skripti

9.1  Tabulu ģenerācijas skripts “KLUBS.TAB”



REM
REM  This ORACLE7 command file was generated by Oracle Server Generator
REM  Version 5.5.10.0.0 on 08-MAY-98
REM
REM For application SELFTUTORIAL version 1 database EDII
REM
REM TABLE
REM      K_DALIBNIEKI
REM      K_PASAKUMI
REM      K_PASAKUMI_TIES
REM      K_PERSONAS
REM      K_PERSONAS_TIES
REM      K_TELPAS
REM      K_TEMAS_KL
REM      K_TIESIBAS

REM
PROMPT
PROMPT Creating Table K_DALIBNIEKI
CREATE TABLE k_dalibnieki(
 dalibnieks_id                   NUMBER(17,0)               NOT NULL,
 persona_fk                      NUMBER(17,0)               NOT NULL,
 pasakums_fk                     NUMBER(17,0)               NOT NULL
)
;

REM
PROMPT
PROMPT Creating Table K_PASAKUMI
CREATE TABLE k_pasakumi(
 pasakums_id                     NUMBER(17,0)               NOT NULL,
 datumsno                        DATE                       NOT NULL,
 datumslidz                      DATE                       NOT NULL,
 nosaukums                       VARCHAR2(60)               NOT NULL,
 laiks                           DATE                       NOT NULL,
 ilgums                          DATE                       NOT NULL,
 telpa_fk                        NUMBER(17,0)               NOT NULL,
 tema_fk                         VARCHAR2(4)                NULL,
 veids                           VARCHAR2(4)                NULL,
 piezimes                        VARCHAR2(200)              NULL
)
;

REM
PROMPT
PROMPT Creating Table K_PASAKUMI_TIES
CREATE TABLE k_pasakumi_ties(
 pas_ties_id                     NUMBER(17,0)               NOT NULL,
 pasakums_fk                     NUMBER(17,0)               NOT NULL,
 tiesiba_fk                      NUMBER(17,0)               NOT NULL
)
;

REM
PROMPT
PROMPT Creating Table K_PERSONAS
CREATE TABLE k_personas(
 persona_id                      NUMBER(17,0)               NOT NULL,
 uzvards                         VARCHAR2(60)               NOT NULL,
 vards                           VARCHAR2(60)               NULL,
 adrese                          VARCHAR2(60)               NULL,
 talrunis                        VARCHAR2(12)               NULL,
 piezimes                        VARCHAR2(200)              NULL
)
;

REM
PROMPT
PROMPT Creating Table K_PERSONAS_TIES
CREATE TABLE k_personas_ties(
 persona_fk                      NUMBER(17,0)               NOT NULL,
 tiesiba_fk                      NUMBER(17,0)               NOT NULL
)
;

REM
PROMPT
PROMPT Creating Table K_TELPAS
CREATE TABLE k_telpas(
 telpa_id                        NUMBER(17,0)               NOT NULL,
 numurs                          NUMBER(17,0)               NOT NULL,
 vietuska                        NUMBER(6,0)                NOT NULL,
 piezimes                        VARCHAR2(200)              NULL
)
;

REM
PROMPT
PROMPT Creating Table K_TEMAS_KL
CREATE TABLE k_temas_kl(
 tema_kd                         VARCHAR2(4)                NOT NULL,
 nosaukums                       VARCHAR2(60)               NOT NULL,
 piezimes                        VARCHAR2(200)              NULL
)
;

REM
PROMPT
PROMPT Creating Table K_TIESIBAS
CREATE TABLE k_tiesibas(
 tiesiba_id                      NUMBER(17,0)               NOT NULL,
 nosaukums                       VARCHAR2(60)               NOT NULL,
 sencis_fk                       NUMBER(17,0)               NULL,
 piezimes                        VARCHAR2(200)              NULL
)
;

9.2 
Primāro, ārējo atslēgu ģenerācijas skripts “KLUBS.CON”



REM
REM  This ORACLE7 command file was generated by Oracle Server Generator
REM  Version 5.5.10.0.0 on 08-MAY-98
REM
REM For application SELFTUTORIAL version 1 database EDII
REM
REM CONSTRAINT

PROMPT Adding PRIMARY Constraint To K_DALIBNIEKI Table

ALTER TABLE K_DALIBNIEKI ADD (
      CONSTRAINT DALIBNIEKS_UC
      PRIMARY KEY (DALIBNIEKS_ID)
)
/

PROMPT Adding PRIMARY Constraint To K_PASAKUMI Table

ALTER TABLE K_PASAKUMI ADD (
      CONSTRAINT PASAKUMI_PASAKUMS_PK
      PRIMARY KEY (PASAKUMS_ID)
)
/

PROMPT Adding PRIMARY Constraint To K_PASAKUMI_TIES Table

ALTER TABLE K_PASAKUMI_TIES ADD (
      CONSTRAINT PAS_TIES_UC
      PRIMARY KEY (PAS_TIES_ID)
)
/

PROMPT Adding PRIMARY Constraint To K_PERSONAS Table

ALTER TABLE K_PERSONAS ADD (
      CONSTRAINT PERSONAS_PERSONA_PC
      PRIMARY KEY (PERSONA_ID)
)
/

PROMPT Adding PRIMARY Constraint To K_PERSONAS_TIES Table

ALTER TABLE K_PERSONAS_TIES ADD (
      CONSTRAINT PERS_TIES_PC
      PRIMARY KEY (PERSONA_FK,
                   TIESIBA_FK)
)
/

PROMPT Adding PRIMARY Constraint To K_TELPAS Table

ALTER TABLE K_TELPAS ADD (
      CONSTRAINT TELPAS_TELPA_PK
      PRIMARY KEY (TELPA_ID)
)
/

PROMPT Adding PRIMARY Constraint To K_TEMAS_KL Table

ALTER TABLE K_TEMAS_KL ADD (
      CONSTRAINT TEMAS_TEMA_PC
      PRIMARY KEY (TEMA_KD)
)
/

PROMPT Adding PRIMARY Constraint To K_TIESIBAS Table

ALTER TABLE K_TIESIBAS ADD (
      CONSTRAINT TIESIBAS_TIESIBA_PC
      PRIMARY KEY (TIESIBA_ID)
)
/

PROMPT Adding UNIQUE Constraint To K_DALIBNIEKI Table

ALTER TABLE K_DALIBNIEKI ADD (
      CONSTRAINT PAS_PERS_U
      UNIQUE     (PERSONA_FK,
                   PASAKUMS_FK)
)
/

PROMPT Adding UNIQUE Constraint To K_PASAKUMI_TIES Table

ALTER TABLE K_PASAKUMI_TIES ADD (
      CONSTRAINT PAS_TIES_U
      UNIQUE     (PASAKUMS_FK,
                   TIESIBA_FK)
)
/

PROMPT Adding UNIQUE Constraint To K_TELPAS Table

ALTER TABLE K_TELPAS ADD (
      CONSTRAINT TELPAS_NUMURS
      UNIQUE     (NUMURS)
)
/

PROMPT Adding UNIQUE Constraint To K_TEMAS_KL Table

ALTER TABLE K_TEMAS_KL ADD (
      CONSTRAINT TEMAS_NOSAUKUMS_UC
      UNIQUE     (NOSAUKUMS)
)
/

PROMPT Adding FOREIGN Constraint To K_DALIBNIEKI Table

ALTER TABLE K_DALIBNIEKI ADD (
      CONSTRAINT DALIBNIEKI_PAS_FK
      FOREIGN KEY (PASAKUMS_FK)
      REFERENCES  K_PASAKUMI (
                   PASAKUMS_ID)
)
/

PROMPT Adding FOREIGN Constraint To K_DALIBNIEKI Table

ALTER TABLE K_DALIBNIEKI ADD (
      CONSTRAINT DALIBNIEKI_PER_FK
      FOREIGN KEY (PERSONA_FK)
      REFERENCES  K_PERSONAS (
                   PERSONA_ID)
)
/

PROMPT Adding FOREIGN Constraint To K_PASAKUMI Table

ALTER TABLE K_PASAKUMI ADD (
      CONSTRAINT PASAKUMI_TEL_FK
      FOREIGN KEY (TELPA_FK)
      REFERENCES  K_TELPAS (
                   TELPA_ID)
)
/

PROMPT Adding FOREIGN Constraint To K_PASAKUMI Table

ALTER TABLE K_PASAKUMI ADD (
      CONSTRAINT PASAKUMI_TEM_KL_FK
      FOREIGN KEY (TEMA_FK)
      REFERENCES  K_TEMAS_KL (
                   TEMA_KD)
)
/

PROMPT Adding FOREIGN Constraint To K_PASAKUMI_TIES Table

ALTER TABLE K_PASAKUMI_TIES ADD (
      CONSTRAINT ATLAUJAS_TIE_FK
      FOREIGN KEY (TIESIBA_FK)
      REFERENCES  K_TIESIBAS (
                   TIESIBA_ID)
)
/

PROMPT Adding FOREIGN Constraint To K_PASAKUMI_TIES Table

ALTER TABLE K_PASAKUMI_TIES ADD (
      CONSTRAINT ATLAUJAS_PAS_FK
      FOREIGN KEY (PASAKUMS_FK)
      REFERENCES  K_PASAKUMI (
                   PASAKUMS_ID)
)
/

PROMPT Adding FOREIGN Constraint To K_PERSONAS_TIES Table

ALTER TABLE K_PERSONAS_TIES ADD (
      CONSTRAINT PERS_TIES_PERS_FK
      FOREIGN KEY (PERSONA_FK)
      REFERENCES  K_PERSONAS (
                   PERSONA_ID)
)
/

PROMPT Adding FOREIGN Constraint To K_PERSONAS_TIES Table

ALTER TABLE K_PERSONAS_TIES ADD (
      CONSTRAINT PERS_TIES_TIES_FK
      FOREIGN KEY (TIESIBA_FK)
      REFERENCES  K_TIESIBAS (
                   TIESIBA_ID)
)
/


9.3 
Indeksu ģenerācijas  skripts “KLUBS.IND”


REM
REM  This ORACLE7 command file was generated by Oracle Server Generator
REM  Version 5.5.10.0.0 on 08-MAY-98
REM
REM For application SELFTUTORIAL version 1 database EDII
REM
REM INDEX
REM      ATLAUJAS_PASAKUMS_FK_I
REM      ATLAUJAS_TIESIBA_FK_I
REM      PASAKUMI_DATUMSKOP_I
REM      PASAKUMI_DATUMSLIDZ_I
REM      PASAKUMI_DATUMSNO_I
REM      PASAKUMI_TELPA_I
REM      PASAKUMI_TEMASNOS_I
REM      PASAKUMI_TEMA_FK_I
REM      PASAKUMI_VEIDS_I
REM      PERSONAS_ADRESE_I
REM      PERSONAS_TALR_I
REM      PERSONAS_UZVARDS_I
REM      PERSONAS_VARDS_I
REM      TELPAS_VIETUSKA_I
REM      TIESIBAS_NOSAUKUMS_I


REM
REM Pasākums
REM
PROMPT
PROMPT Creating Index ATLAUJAS_PASAKUMS_FK_I on Table K_PASAKUMI_TIES
CREATE INDEX ATLAUJAS_PASAKUMS_FK_I ON K_PASAKUMI_TIES
(
      pasakums_fk )
PCTFREE  10
;


REM
REM Tiesības
REM
PROMPT
PROMPT Creating Index ATLAUJAS_TIESIBA_FK_I on Table K_PASAKUMI_TIES
CREATE INDEX ATLAUJAS_TIESIBA_FK_I ON K_PASAKUMI_TIES
(
      tiesiba_fk )
PCTFREE  10
;


REM
REM Pasākuma ilgums
REM
PROMPT
PROMPT Creating Index PASAKUMI_DATUMSKOP_I on Table K_PASAKUMI
CREATE INDEX PASAKUMI_DATUMSKOP_I ON K_PASAKUMI
(
      ilgums )
PCTFREE  10
;


REM
REM Pasākuma beigu datums un laiks
REM
PROMPT
PROMPT Creating Index PASAKUMI_DATUMSLIDZ_I on Table K_PASAKUMI
CREATE INDEX PASAKUMI_DATUMSLIDZ_I ON K_PASAKUMI
(
      datumslidz )
PCTFREE  10
;


REM
REM Pasākuma sākuma datums un laiks
REM
PROMPT
PROMPT Creating Index PASAKUMI_DATUMSNO_I on Table K_PASAKUMI
CREATE INDEX PASAKUMI_DATUMSNO_I ON K_PASAKUMI
(
      datumsno )
PCTFREE  10
;


REM
REM Kurā telpā notiek pasākums
REM
PROMPT
PROMPT Creating Index PASAKUMI_TELPA_I on Table K_PASAKUMI
CREATE INDEX PASAKUMI_TELPA_I ON K_PASAKUMI
(
      telpa_fk )
PCTFREE  10
;


REM
REM Tēmas nosaukums
REM
PROMPT
PROMPT Creating Index PASAKUMI_TEMASNOS_I on Table K_PASAKUMI
CREATE INDEX PASAKUMI_TEMASNOS_I ON K_PASAKUMI
(
      nosaukums )
PCTFREE  10
;


REM
REM Tēmas nosaukums
REM
PROMPT
PROMPT Creating Index PASAKUMI_TEMA_FK_I on Table K_PASAKUMI
CREATE INDEX PASAKUMI_TEMA_FK_I ON K_PASAKUMI
(
      tema_fk )
PCTFREE  10
;


REM
REM Pasākuma veids
REM
PROMPT
PROMPT Creating Index PASAKUMI_VEIDS_I on Table K_PASAKUMI
CREATE INDEX PASAKUMI_VEIDS_I ON K_PASAKUMI
(
      veids )
PCTFREE  10
;


REM
REM Personas adrese
REM
PROMPT
PROMPT Creating Index PERSONAS_ADRESE_I on Table K_PERSONAS
CREATE INDEX PERSONAS_ADRESE_I ON K_PERSONAS
(
      adrese )
PCTFREE  10
;


REM
REM Personas tālrunis
REM
PROMPT
PROMPT Creating Index PERSONAS_TALR_I on Table K_PERSONAS
CREATE INDEX PERSONAS_TALR_I ON K_PERSONAS
(
      talrunis )
PCTFREE  10
;


REM
REM Personas uzvārds
REM
PROMPT
PROMPT Creating Index PERSONAS_UZVARDS_I on Table K_PERSONAS
CREATE INDEX PERSONAS_UZVARDS_I ON K_PERSONAS
(
      uzvards )
PCTFREE  10
;


REM
REM Personas vārds
REM
PROMPT
PROMPT Creating Index PERSONAS_VARDS_I on Table K_PERSONAS
CREATE INDEX PERSONAS_VARDS_I ON K_PERSONAS
(
      vards )
PCTFREE  10
;


REM
REM Vietu skaits
REM
PROMPT
PROMPT Creating Index TELPAS_VIETUSKA_I on Table K_TELPAS
CREATE INDEX TELPAS_VIETUSKA_I ON K_TELPAS
(
      vietuska )
PCTFREE  10
;


REM
REM Tiesību nosaukums
REM
PROMPT
PROMPT Creating Index TIESIBAS_NOSAUKUMS_I on Table K_TIESIBAS
CREATE INDEX TIESIBAS_NOSAUKUMS_I ON K_TIESIBAS
(
      nosaukums )
PCTFREE  10
;





Nav komentāru:

Ierakstīt komentāru