Videopůjčovna

Transkript

Videopůjčovna
UNIVERZITA PALACKE HO OLOMOUC
PR IRODOVÁ DECKA FAKULTA
KATEDRA MATEMATICKE INFORMATIKY
MGR. VITÁ ZSLAV KRISTOF
Obor: Informatika á bakala rsky studijnı program
VIDEOPU JC OVNA
Dokumentace k za verec nŘ mu aplikac nımu projektu
14. c ervence 2000
OBSAH
1
Ž VOD..................................................................................................................................5
2
UZ IVATELSKA PR IRU C KA..........................................................................................6
2.1 PR IRUC KA PRO PRACOVNIKY VIDEOPU JC OVNY ...............................................................6
2.1.1 Hlavnı nabıdka...........................................................................................................6
2.1.2 Pujcova nı a vracenı filmu ..........................................................................................9
2.1.3 Informace o klientech a filmech...............................................................................11
2.1.4 Vyhleda va nı filmu ....................................................................................................12
2.1.5 Rezervace .................................................................................................................13
2.1.6 Data firmy ................................................................................................................16
2.2 PR IRUC KA PRO KLIENTY VIDEOPU JC OVNY ....................................................................22
2.2.1 Uvodnı stra nka videopujcovny.................................................................................22
2.2.2 Vyhleda va nı filmu, hercu nebo rezise ru...................................................................22
2.2.3 Rezervace filmu........................................................................................................23
2.2.4 Osobnı data klientu..................................................................................................24
2.2.5 Ochrana dat klientu .................................................................................................24
3
PROGRAMA TORSKA PR IRUC KA ............................................................................25
3.1 INSTALACE PROJEKTU ..................................................................................................25
3.2 DATABA ZE VIDEODATA...............................................................................................26
3.2.1 Tabulky.....................................................................................................................26
3.2.2 Sche ma relacı mezi tabulkami .................................................................................30
3.3 DATABA ZE VIDEOPUJCOVNA .......................................................................................31
3.3.1 Globa lnı promřnne a funkce....................................................................................31
3.3.2 Dotazy, formula re a sestavy.....................................................................................32
3.3.3 Nřktere mozne zmřny nastavenı...............................................................................35
3.4 SKRIPTY HTML A ASP V PROJEKTU............................................................................35
3.4.1 Databa ze VideoWWW..............................................................................................36
3.4.2 Titulnı skripty...........................................................................................................36
3.4.3 Vyhleda va nı filmu ....................................................................................................37
3.4.4 Rezervace filmu........................................................................................................37
3.4.5 Osobnı data..............................................................................................................37
3.4.6 Chybove skripty........................................................................................................38
3.4.7 Globa lnı promřnne ..................................................................................................38
3.4.8 Popis nřkterych slozitřjsıch stra nek ........................................................................38
3.5 ZPU SOBY ZABEZPEC ENI PROJEKTU ...............................................................................39
3.6 PROGRAM SEND ...........................................................................................................40
4
ZA VÁ R..............................................................................................................................41
1
5
ZDROJOVE KO DY PROGRAMU ...............................................................................42
5.1 PROGRAM SEND ...........................................................................................................42
5.1.1 Soubor Unit1.pas .....................................................................................................42
5.2 DATABA ZE VIDEOWWW.............................................................................................44
5.2.1 Dotazy v zobrazenı SQL...........................................................................................44
5.3 DATABA ZE VIDEOPUJCOVNA .......................................................................................44
5.3.1 Dotazy v zobrazenı SQL...........................................................................................44
5.3.2 Zdrojove kody formula ru .........................................................................................50
5.3.3 Zdrojovy kod Modulu.............................................................................................121
5.4 VIDEOPU JC OVNA NA WWW ......................................................................................123
5.4.1 Adrsa rova struktura ulozenı souboru ....................................................................123
5.4.2 Adresa r Root ........................................................................................................124
5.4.3 Adresa r Root/Video..............................................................................................124
5.4.4 Adresa r Root/Video/Vysledky ..............................................................................135
5.4.5 Adresa r Root/Video/Rezervace ............................................................................156
5.4.6 Adresa r Root/Video/Klient...................................................................................165
5.4.7 Adresa r Root/Video/Chyby ..................................................................................171
5.4.8 Adresa r Root/Video/Vstupy..................................................................................177
2
SEZNAM TABULEK
Tabulka 3.1: Sloz enı tabulky Klienti ........................................................................................26
Tabulka 3.2: Sloz enı tabulky Blokace ......................................................................................27
Tabulka 3.3: Sloz enı tabulky NoveHeslo .................................................................................27
Tabulka 3.4: Sloz enı tabulky Film ...........................................................................................27
Tabulka 3.5: Sloz enı tabulky FilmOsoba .................................................................................28
Tabulka 3.6: Sloz enı tabulky Herci_Reziseri ...........................................................................28
Tabulka 3.7: Sloz enı tabulky Zanr ...........................................................................................28
Tabulka 3.8: Sloz enı tabulky Zeme ..........................................................................................28
Tabulka 3.9: Sloz enı tabulky Rezervace...................................................................................30
Tabulka 3.10: Sloz enı tabulky Vypujcka ..................................................................................30
Tabulka 3.11: Struc ny popis dotazu v databa zi Videopujcovna ..............................................32
Tabulka 3.12: Struc ny popis formula ru a sestavy v databa zi Videopujcovna..........................33
Tabulka 3.13: Struc ny popis dotazu v databa zi VideoWWW..................................................36
3
SEZNAM OBRA
ZKU
Obra zek 2.1: Organizac nı schŘ ma formula ru a sestavy v databa zi Videopujcovna...................7
Obra zek 2.2: Organizac nı schŘ ma Html a ASP stra nek na WWW ............................................8
Obra zek 2.3: Formula r Nabidka .................................................................................................9
Obra zek 2.4 : Formula r Vypujcka...............................................................................................9
Obra zek 2.5: Sestava Vypujcka ................................................................................................10
Obra zek 2.6: Formula r Ifilm .....................................................................................................11
Obra zek 2.7: Formula r klienti...................................................................................................11
Obra zek 2.8: Formula r HledaniFilmu ......................................................................................12
Obra zek 2.9: Formula re VysledkyHledani1 a VysledkyHledani2 ...........................................13
Obra zek 2.10: Formula r Rezervace ..........................................................................................14
Obra zek 2.11: Formula r NovaRezervace..................................................................................14
Obra zek 2.12: Formula r KalendarRez......................................................................................15
Obra zek 2.13: Formula r DnesniRezervace...............................................................................15
Obra zek 2.14: Formula r RuseniRezervace ...............................................................................16
Obra zek 2.15: Formula r Firma.................................................................................................17
Obra zek 2.16: Konfigurace programu Send .............................................................................17
Obra zek 2.17: Formula r FirmaData.........................................................................................18
Obra zek 2.18: Formula r Film ...................................................................................................19
Obra zek 2.19: Formula r FirmaStav..........................................................................................20
Obra zek 2.20: Formula r FirmaInfo ..........................................................................................20
Obra zek 2.21: Formula r NoveHeslo .........................................................................................21
Obra zek 3.1: SchŘ ma relacı......................................................................................................29
4
1 Ž VOD
Tento projekt je komplexnım resenım pro videopujc ovny. Obsahuje vlastnı databa zi
s moz nostı celkovŘ spra vy videopujc ovny. TakŘ umoz nuje tuto databa zi zverejnit na intra /
internetovŘ m serveru a tım zprıstupnit sirokŘ verejnosti svŘ sluz by.
Operac nı systŘ my, pod nimiz lze cely systŘ m videopujc ovny provozovat, spadajı do
rodiny MS Windows. Databa ze je vytvorena v programu MS Access 97, ktery je souc a stı
programovŘ ho balıku MS Office 97.
Databa ze je nejna roc nejsı souc a stı celŘ ho projektu. V za vislosti na jejı velikosti je treba
zvolit nejen odpovıdajıcı vy kon poc ıtac e, na kterŘ m bude provozova na, ale takŘ vhodnŘ
rozloz enı projektu (viz. kapitola 3.1).
Pro vytvorenı internetovy ch stra nek pracujıcıch s databa zı jsem zvolil technologii ASP
(Active Server Pages) vyvinutou spolec nostı Microsoft. Technologie ASP umoz nuje vy voj
rozsa hly ch webovy ch aplikacı pomocı libovolnŘ ho skriptovacıho jazyka, od VBScriptu az po
Python.
Pro tento projekt jsem zvolil skriptovacı jazyk VBScript, ktery je striktnı podmnoz inou
jazyka Visual Basic. Vlastnı HTML a ASP stra nky jsem vytvoril ve vy vojovŘ m prostredı MS
Visual InterDev 6.0, kterŘ je souc a stı sady programu MS Visual Studia 6.0.
Za kladnım predpokladem pro funkc nı chod HTML a ASP stra nek je vhodna volba
WWW serveru. Na tomto serveru musı by t nainstalova no rozsırenı pro ASP. Mezi tyto
servery se radı IIS nebo PWS spolec nosti Microsoft, kterŘ majı podporu ASP v sobe prımo
zabudovanou.
Z duvodu velkŘ obliby ASP se zac ınajı vyvıjet novŘ na stroje pro rozsırenı technologie
ASP i na servery nepocha zejıcı od spolec nosti Microsoft, jako naprıklad server Apache. Mezi
nejzna mejsı na stroje pro vy voj ASP na techto platforma ch patrı Chili!ASP spolec nosti
Chili!Soft, Instant ASP (I-ASP) spolec nosti Halcyon Software a OpenASP organizace
ActiveScripting.
5
2 UZ IVATELSKA
2.1
PR IRU C KA
Prıruc ka pro pracovnıky videopujc ovny
V tŘ to kapitole budou popsa ny moz nosti pra ce s videopujc ovnou. Tato prıruc ka slouz ı
pro pracovnıky videopujc ovny. Ti zde mohou prova det pujc ova nı a vracenı filmu, prida vat,
rusit nebo upravovat data klientu a filmu. Da le je zde moz nost se dozvedet velkŘ mnoz stvı
informacı nejen o klientech a filmech, ale takŘ o hospodarenı celŘ videopujc ovny.
2.1.1
Hlavnı nabıdka
Formula r Nabidka (obr. 2.3) je stez ejnım oknem celŘ videopujc ovny. V tomto formula ri
se nacha zı 8 tlac ıtek, dve vy berova polıc ka a informace o poc tu poz adavku na zmenu hesla.
Tyto informace se obnovujı kaz dy ch 10 minut. Tento interval se da zmenit (viz. kapitola
3.3.3)
Tlac ıtko Konec ukonc uje pra ci s videopujc ovnou.
Pokud je vybra n nejaky klient, tak tlac ıtkem Informace o klientovi se dostanete do
formula re (obr. 2.7) obsahujıcıho vsechna moz na data o vybranŘ m klientovi, tj. jeho osobnı
ďdaje, vypujc enŘ a rezervovanŘ filmy, informace o upomınka ch a ďtrate klienta. V neposlednı
rade je zde moz nost menit heslo, zablokovat heslo, nebo zjistit kdy a z jakŘ ho mısta bylo
heslo zablokova no.
Pokud je vybra n nejaky film, pak tlac ıtkem Informace o filmu se dostanete do formula re
(obr. 2.6), ktery obsahuje veskerŘ informace o vybranŘ m filmu. Zde jsou za kladnı ďdaje
o filmu, o jeho hereckŘ m a rez isŘ rskŘ m obsazenı, o prıpadnŘ m vypujc enı (zda, do kdy a ky m
je pujc en) a rezervaci (do kdy je rezervova n a informace o novy ch rezervacıch).
Kliknutım na tlac ıtko Pujcenı se dostanete do formula re Vypujcka (obr. 2.4), kde
probıha vlastnı pujc ova nı filmu. JmŘ no klienta a na zev filmu muz ete zadat prımo ve formula ri
Nabıdka, nebo az ve formula ri Vypujcka.
Pro vracenı filmu je potreba vyplnit alespon na zev filmu a potom kliknout na tlac ıtko
Vracenı. Pokud film je vra cen se zpoz denım, potom se otevre formula r Vypujcka a klient bude
platit upomınku. Jejı vy se se rovna souc inu poc tu zmeskany ch dnu a dvojna sobku ceny
vy pujc ky filmu za jeden den.
Kliknutım na tlac ıtko Rezervace se presunete do formula re Rezervace, kde ma te
moz nost rezervovat filmy, rusit rezervace a pujc ovat filmy rezervovanŘ na dnesnı den.
Tlac ıtkem Vyhleda va nı filmu se dostanete do formula re, kde muz ete zadat ruzna kritŘ ria
na vyhleda va nı filmu. Nalezeny film lze vloz it do formula re Nabidka.
6
Obra zek 2.1: Organizac nı schŘ ma formula ru a sestavy v databa zi Videopujcovna
Kalendar
FirmaInfo
VydelekFirmy
VydelekZanru
KalendarRez
UpominkyKlienta
NoveHeslo
VydelekFilmu
UpominkyKlientu
UtrataKlienta
NovaRezervace
UtrataKlientu
RuseniRezervace
PujceneFilmy
FirmaStav
DnesniRezervace
Zeme
NoveRezervace
Klienti
Rezervace
Firma
FirmaData
PropadleRezervace
Lide
Film
VyrizeneRezervace
Iklienti
Nabidka
HledaniFilmu
Heslo
Obsazeni
BlokaceHesla
VysledkyHledani1
RezervaceInfo
Ifilm
Vypujcka
7
Sestava: Vypujcka
VysledkyJledani2
Obra zek 2.2: Organizac nı schŘ ma Html a ASP stra nek na WWW
MenuHledani
Hledani1
Hledani2
Vysledky3
HledaniUvod
Klient
Vstup1
Vysledky1h
Vysledky1r
Vysledky1f
Vysledky2
Herec
Reziser
Film
Rezervace
Chyba1
KlientVysledek
Chyba2
RezervaceVysledek
Chyba3
Vstup2
NoveHeslo
ZmenaHesla
Pozna mka: 1) Modra c a rkovana c a ra oddeluje ďvodnı okno prohlız ec e, kterŘ je rozdelenŘ na ra my a vz dy zusta va alesponna pozadı, od ostatnıch
pracovnıch oken.
2) Okna NoveHeslo, ZmenaHesla a Vstup2 se nezobrazujı.
8
Poslednı tlac ıtko nese na zev Data firmy. Po jeho stisknutı se va m objevı formula r (obr.
2.15), ze kterŘ ho se muz ete dostat k informacım o hospodarenı firmy nebo do formula re
k prida va nı, rusenı a opravova nı dat. TakŘ se odtud muz ete dostat do formula re pro
generova nı novy ch hesel a jejich posıla nı na prıslusnŘ E-mailovŘ adresy. Nakonec je zde
moz nost se podıvat na aktua lnı stav pujc eny ch a rezervovany ch filmu.
Obra zek 2.3: Formula r Nabidka
2.1.2
Pujc ovanı a vracenı filmu
Obra zek 2.4 : Formula r Vypujcka
9
Ve formula ri Vypujcka se prova dı vlastnı pujc ova nı filmu. V tomto formula ri muz ete
menit jen jmŘ no klienta, na zev filmu a poc et dnu vy pujc ky. Pri zmene na zvu filmu se
automaticky vyplnı polıc ka Cena, Vypujcnı den a Celkem dnu.
Pomocı tlac ıtek Info u jmŘ na klienta a na zvu filmu se muz ete dostat do formula ru
Iklienti (obr. 2.7) a Ifilm (obr. 2.6).
U polıc ka Celkem dnu jsou umısteny dve sipky, kterŘ va m dovolujı zvysovat nebo
sniz ovat celkovy poc et vy pujc nıch dnu. Maxima lnı poc et dnu vy pujc ky pritom za visı na
techto okolnostech:
- kaz dy film ma svoji hranici poc tu dnı k vypujc enı
- film muz e by t rezervova n.
Pokud se do formula re Vypujcka dostanete pri vracenı filmu, znamena to, z e dany klient
bude platit upomınku. V tomto prıpade nenı dovoleno menit jmŘ no klienta, na zev filmu ani
polıc ko Celkem dnu. Poloz ky Cena a Vypujcnı den se vygenerujı automaticky, pric emz
poloz ka Vy pujc nı den je rovna za pornŘ hodnote poc tu prekroc eny ch dnu.
Po stisknutı tlac ıtka Ulozit se provede vypujc enı filmu a za roven se otevre sestava
Vypujcka (obr. 2.5), umoz nujıcı tisk dokladu o vypujc enı filmu.
Do formula re Vypujcka se muz ete dostat bu“ z formula re Nabidka (obr. 2.3) nebo
z formula re DnesniRezervace (obr. 2.13), ktery obsahuje seznam vsech rezervacı na dnesnı
den.
Pri vypujc enı rezervovanŘ ho filmu se do ceny filmu automaticky zapoc ıta 5 Kc za
rezervaci. Tato c a stka se da zmenit nebo upravit (viz. Programa torska prıruc ka).
Pokud prijdete z formula re DnesniRezervace a film si nevypujc ıte, pak se po stisknutı
tlac ıtka Zpřt vra tıte to formula re DnesniRezervace. Pokud si vybrany film vypujc ıte, tak
stiskem tlac ıtka Zpřt se vra tıte do formula re Nabidka.
Obra zek 2.5: Sestava Vypujcka
10
2.1.3
Informace o klientech a filmech
Obra zek 2.6: Formula r Ifilm
Obra zek 2.7: Formula r klienti
11
Formula r Ifilm (obr. 2.6) obsahuje za kladnı informace o vybranŘ m filmu, coz je na zev
filmu, rok vy roby, dŘ lka filmu, zeme vy roby, z a nr, dŘ lka a cena vy pujc ky. Na pravŘ strane
jsou informace, kdo film rez ıroval a kterı herci v nem hrajı.
V levŘ dolnı polovine je informace, zda je film vypujc eny . Pokud ano, pak vidıte do kdy
je pujc eny a ky m. Da le je zde videt, jestli je film rezervova n a do kdy. PrıpadnŘ novŘ
rezervace si muz ete prohlŘ dnout po stisku tlac ıtka Info.
Formula r Iklienti (obr. 2.7) obsahuje vsechny moz nŘ informace o vybranŘ m klientovi.
Jednak to jsou osobnı ďdaje klienta, seznam vsech pra ve vypujc eny ch filmu a veskerŘ
informace o rezervacıch. Da le je zde moz nost menit heslo, ruc ne heslo zablokovat nebo
naopak odblokovat. Pokud heslo nebylo ruc ne zablokova no, pak je moz nŘ zjistit, kdy
a z jakŘ ho poc ıtac e bylo zablokova no.
TakŘ lze zjistit vsechny ďdaje o zablokova nı hesla, prohlŘ dnout si vsechny vypujc enŘ
filmy, zjistit celkovou ďtratu klienta a nebo zjistit informace o upomınka ch, kterŘ klient platil.
Pro vsechny tyto ďdaje si muz ete zvolit c asovŘ rozmezı, kterŘ se nastavı vyplnenım
polıc ek od a do v prıslusnŘ m okne. Po kliknutı na tyto polıc ka se automaticky otevre
Kalenda r, kde si muz ete zvolit libovolnŘ datum.
2.1.4
Vyhledavanı filmu
Obra zek 2.8: Formula r HledaniFilmu
12
Ve formula ri HledaniFilmu (obr. 2.8) si muz ete zvolit az 9 kritŘ riı pro vyhleda va nı
filmu. Po stisknutı tlac ıtka Hledej se dostanete do formula re obsahujıcıho vy sledky
vyhleda va nı (obr. 2.9).
Polıc ko s vybrany m filmem a tlac ıtko vloz it jsou viditelnŘ jen v prıpade, z e jste jiz
nejaky film nalezli. Po stisknutı tlac ıtka Vloz se vra tıte do formula re Nabidka (obr. 2.2)
a za rovense va m tam vloz ı i nalezeny film.
Obra zek 2.9: Formula re VysledkyHledani1 a VysledkyHledani2
Ve formula ri s vy sledky hleda nı se va m zobrazı vsechny filmy, kterŘ vyhovujı va mi
zadany m kritŘ riım. Ve formula ri se da le nacha zejı dve tlac ıtka Vloz a Zpřt. Po stisknutı
tlac ıtka Vloz se va m vybrany film vloz ı do formula re HledaniFilmu.
2.1.5
Rezervace
Ve formula ri Rezervace (obr. 2.10) si po vybra nı filmu a klienta muz ete film rezervovat
stisknutım tlac ıtka Nova rezervace. Da le stisknutım tlac ıtek Info u vybranŘ ho klienta nebo
vybranŘ ho filmu se dostanete do formula re Iklienti (obr. 2.7) nebo do formula re Ifilm (obr.
2.6).
Ke zrusenı rezervace nebo vypujc enı rezervovanŘ ho filmu stac ı zadat jen jmŘ no klienta.
Tlac ıtkem Vyrızenı rezervace se dostanete do formula re DnesniRezervace (obr. 2.13), ktery
obsahuje vsechny filmy, kterŘ ma vybrany klient na dnesnı den rezervovanŘ . Tyto filmy si
muz e potom vypujc it.
Da le tlac ıtkem Zrusenı rezervace se muz ete dostat do formula re RuseniRezervace (obr.
2.14), kde se nacha zejı vsechny novŘ rezervace, kterŘ je moz nŘ zrusit.
13
Obra zek 2.10: Formula r Rezervace
2.1.5.1
Nova rezervace
Ve formula ri NovaRezervace (obr. 2.11) se rezervuje dany film na vybranŘ obdobı.
Kliknutım na polıc ka Rezervace od nebo Rezervace do se objevı formula r KalendarRez (obr.
2.12), kde si muz ete vybrat datum rezervace.
Rezervace se provede stisknutım tlac ıtka OK. Stisknutım tlac ıtka Zpřt se vra tıte do
formula re Rezervace (obr. 2.10) bez uloz enı aktua lnıho za znamu, pric emz budete vyzva ni ke
smaza nı aktua lnıho za znamu.
Obra zek 2.11: Formula r NovaRezervace
14
Formula r KalendarRez (obr. 2.12) obsahuje kalenda r, ze kterŘ ho si muz ete vybrat
datum rezervace.
Datum oznac enŘ c ervene se neda vybrat. Je to z duvodu, z e film je v tento den
vypujc eny nebo rezervovany .
Obra zek 2.22: Formula r KalendarRez
2.1.5.2
Vyrızenırezervace
Obra zek 2.13: Formula r DnesniRezervace
15
Formula r DnesniRezervace (obr. 2.13) obsahuje filmy, kterŘ ma vybrany klient
rezervovanŘ na dnesnı den. Do tohoto formula re se dostanete bu“ z formula re Rezervace (obr.
2.10) nebo z formula re Iklienti (obr. 2.7).
Stisknutım tlac ıtka Pujcit se dostanete do formula re Vypujcka (obr. 2.4), kde si muz ete
vybrany film vypujc it.
Stiskem tlac ıtka Zpet se vra tıte do formula re, ze kterŘ ho jste se sem dostali.
2.1.5.3
Zrusenırezervace
Obra zek 2.14: Formula r RuseniRezervace
Formula r RuseniRezervace (obr. 2.14) obsahuje vsechny filmy, kterŘ ma dany klient
rezervovanŘ . O kaz dŘ m filmu je zde informace od kdy a do kdy je rezervova n pro danŘ ho
klienta a takŘ datum provedenı tŘ to rezervace.
Tlac ıtkem Smaz se provede vymaza nı aktua lne zobrazenŘ rezervace a tlac ıtko Zpřt
slouz ı pro na vrat do formula re Rezervace (obr. 2.10).
2.1.6
Data firmy
Po stisknutı tlac ıtka Data firmy ve formula ri Nabidka (obr. 2.3) se dosta va te do
formula re Firma (obr. 2.15). Z tohoto formula re ma te prıstup k veskery m datum firmy.
Pomocı tlac ıtek Aktua lnı stav a Hospodarenı se muz ete dostat do formula ru FirmaStav
(obr. 2.19) a FirmaInfo (obr. 2.20), kde si muz ete zjistit veskerŘ informace o vypujc eny ch
a rezervovany ch filmech a informace o hospodarenı firmy.
Stisknutım tlac ıtka Prida va nı dat se dostanete do formula re FirmaData (obr. 2.17), ve
kterŘ m muz ete prida vat, mazat nebo upravovat za kladnı ďdaje v databa zi. Sem patrı
predevsım klienti videopujc ovny a filmy na pujc ova nı.
Pro vygenerova nı a odesla nı novy ch hesel slouz ı formula r NoveHeslo (obr. 2.21), do
kterŘ ho se dostanete po stisknutı tlac ıtka Nova hesla. NovŘ heslo je treba vygenerovat vz dy,
kdyz je klientovo heslo zablokovanŘ a klient si o vygenerova nı zaz a da . Informace o poc tu
z a dostı na novŘ heslo se objevuje na formula ri Nabidka (obr. 2.3).
16
Tlac ıtko Zmřna konfigurace slouz ı na spustenı konfigurace externıho programu Send
(obr. 2.16) Tento program prova dı vlastnı posıla nı E-mailovy ch zpra v, ve ktery ch je nove
vygenerovanŘ heslo.
Obra zek 2.15: Formula r Firma
Pro konfiguraci programu Send je treba nastavit nekterŘ parametry. Jsou to SMTP
Server, Port, Vasi E-mailovou adresu (Your E-mail) a uz ivatelskŘ ID (User ID). Da le je treba
zadat jmŘ no (Your Name), kterŘ se zobrazı pri doruc enı posty, na zev dopisu (Subject) a cestu
k programu (Path to Program).
Obra zek 2.26: Konfigurace programu Send
17
Tuto cestu je nutnŘ zadat relativne vzhledem k vy chozı databa zovŘ sloz ce. Nastavenı
sloz ky se prova dı prımo v programu Access v Menu-Na stroje-Moz nosti-ObecnŘ . Cestu do
tŘ to sloz ky je nutnŘ zadat absolutne.
Nakonec je treba zmenena data uloz it pomocı tlac ıtka Save Setting.
Po instalaci jsou zada ny tyto ďdaje:
§ SMTP Server = smtp.loc
§ Port = 25
§ Your Name = Videopujcovna
§ User ID = video
§ Subject = Nove heslo
§ Path to Program =”send/„
2.1.6.1
Vkladanıdat do databaze
Obra zek 2.17: Formula r FirmaData
Formula r FirmaData (obr. 2.17) slouz ı k prida va nı, rusenı nebo ďprave za kladnıch dat
v databa zi.
Po stisknutı tlac ıtka Novy klient se dostanete do formula re, kde muz ete zada vat novŘ
klienty.
Tlac ıtkem Novy film se dostanete do formula re Film (obr. 2.18) pro prida va nı novy ch
filmu. V tomto formula ri se nacha zejı da le tlac ıtka Rezise r a Herci, pomocı nichz muz ete
k danŘ mu filmu priradit libovolny poc et hercu a rez isŘ ru.
Pozor! Herec nebo rez isŘ r, kterŘ ho chcete priradit k filmu, jiz musı by t zarazen do
databa ze.
Zarazenı novŘ ho herce nebo rez isŘ ra do databa ze se provede po stisknutı tlac ıtka Novy
herec nebo rezise r ve formula ri FirmaData (obr. 2.17).
18
Z formula re FirmaData se muz ete dostat jeste do formula re pro zada va nı novy ch zemı.
Poloz ka Zeme je jak u filmu, tak u hercu a rez isŘ ru nepovinna . Nepovinna je takŘ poloz ka
dŘ lka filmu.
Ve vsech formula rıch pro prida va nı dat je umoz nen pohyb po vsech za znamech
s moz nostı rusenı nebo zmeny ďdaju.
Pri smaza nı nekterŘ ho filmu budou automaticky smaza ny takŘ za znamy obsahujıcı
informace o rez isŘ ru a hercıch ďc inkujıcıch v tomto filmu.
Obra zek 2.28: Formula r Film
2.1.6.2
Aktualnı informace
Formula r FirmaStav (obr. 2.19) obsahuje aktua lnı informace o vypujc eny ch
a rezervovany ch filmech.
Pokud jsou v seznamu vypujc eny ch filmu polıc ka Datum vypujcky a Pujceno do
oznac eny c ervene, znamena to, z e film jiz mel by t vra cen.
19
Obra zek 2.19: Formula r FirmaStav
2.1.6.3
Hospodarenıfirmy
Obra zek 2.20: Formula r FirmaInfo
20
Formula r FirmaInfo (obr. 2.20) slouz ı pro zjisóova nı informacı o hospodarenı firmy za
urc itŘ obdobı.
Kliknutım na polıc ka Od nebo do se na m objevı kalenda r, kde si muz ete vybrat datum.
Pokud do polıc ka Od z a dnŘ datum nezada te, potom se zobrazı informace od zac a tku vzniku
videopujc ovny. TakŘ polıc ko do nemusıte vyplnit. V tomto prıpade se zobrazı informace az
do aktua lnıho dne.
Pri zaskrtnutı polıc ka vsech nebude bra n zretel na vybrany z a nr, film, popr. vybranŘ ho
klienta.
Vy delek firmy si muz ete zobrazit bu“ za urc itŘ vybranŘ obdobı v polıc ka ch Od a do,
nebo za predem dana obdobı.
Kliknutım na tlac ıtko Zobraz u konkrŘ tnı informace se va m zobrazı odpovıdajıcı
vybrana data.
2.1.6.4
Nova hesla
Pro generova nı novy ch hesel slouz ı formula r NoveHeslo (obr. 2.21). Klientum, jimz
bylo heslo zablokova no pres Internet a kterı si zaz a dali o novŘ heslo, bude po stisknutı
tlac ıtka Generuj nove heslo posla no na jejich E-mailovou adresu nove vygenerovanŘ heslo.
NovŘ heslo je na hodnŘ c ıslo od 10000 do 100000.
V tomto formula ri je takŘ zobrazeno datum a c as, kdy si dany klient zaz a dal
o vygenerova nı novŘ ho hesla.
Rozesıla nı E-mailu se prova dı pomocı externıho programu Send, jehoz konfigurace je
popsa na v kapitola 2.1.6 a zobrazena na obra zku 2.16.
Obra zek 2.21: Formula r NoveHeslo
21
2.2
Prıruc ka pro klienty videopujc ovny
V tŘ to kapitole budou postupne popsa ny vsechny stra nky videopujc ovny. Ve
videopujc ovne muz ete vyhleda vat filmy podle ruzny ch kritŘ riı.
C lenovŘ videopujc ovny si mohou jednotlivŘ filmy takŘ rezervovat. Mohou se i
dozvedet, kterŘ filmy majı vypujc enŘ a kterŘ rezervovanŘ . Lze tu i zmenit heslo pro vstup
z internetu a zrusit libovolnou rezervaci.
Videopujc ovna je bezpec ne chra nena proti neopra vnenŘ mu vniknutı do systŘ mu (viz.
kapitola 2.2.5).
2.2.1
Ž vodnı stranka videopujc ovny
Po spustenı internetovŘ ho prohlız ec e a zada nı prıslusnŘ adresy videopujc ovny se
dostanete na hlavnı stra nku videopujc ovny. Tato stra nka je rozc lenena do 3 samostatny ch
c a stı. Vlevo se nacha zı hlavnı menu videopujc ovny a vpravo nahore je na zev videopujc ovny.
Tyto dve c a sti zusta vajı nemennŘ . Ve zbylŘ c a sti se zobrazujı vlastnı pracovnı stra nky.
Menu videopujc ovny obsahuje celkem 5 poloz ek.
Nejprve je to Uvod, kde se dozvıte za kladnı informace o sluz ba ch, kterŘ tato
videopujc ovna nabızı.
Pokud kliknete na poloz ku Hleda nı za kladnı, pak se va m v pravŘ c a sti okna zobrazı
formula r umoz nujıcı vyhleda va nı filmu, hercu nebo rez isŘ ru.
Tretı poloz kou je Hleda nı pokrocile . Po kliknutı na tento odkaz se va m vpravo zobrazı
formula r na pokroc ilŘ vyhleda va nı filmu. Zde si muz ete zvolit az 10 vyhleda vacıch kritŘ riı.
Kliknutım na poloz ku Informace o klientovi se dostanete na prihlasovacı stra nku klientu
videopujc ovny. Po spra vne napsanŘ m ID klienta a hesle se muz ete podıvat na vase osobnı
data. TakŘ tam muz ete rusit vase rezervace, poprıpade si menit heslo.
Poslednı poloz ka menu se nazy va Vysledky hleda nı. Po kliknutı na tuto poloz ku se va m
zobrazı seznam vsech filmu, na kterŘ jste se dıvali.
2.2.2
Vyhledavanı filmu, hercu nebo reziseru
1) Hleda nı za kladnı
V tomto formula ri muz ete vyhleda vat na zev filmu, jmŘ no herce nebo jmŘ no
rez isŘ ra.
U vyhleda va nı na zvu filmu si muz ete vybrat, zda va mi zadana pısmena nebo
slova jsou zac a tkem na zvu filmu. Pokud chcete vyhleda vat z prostredku na zvu filmu,
je treba zadat alespon3 za sebou jdoucı pısmena.
V prıpade, z e nezada te z a dnŘ kritŘ rium na na zev filmu, potom vy sledkem
vyhleda va nı budou vsechny filmy obsaz enŘ ve videopujc ovne. Muz ete si i vybrat po
kolika za znamech se va m budou vy sledky vyhleda va nı zobrazovat. Standardne je
nastaveno 5 za znamu.
Pri vyhleda va nı herce nebo rez isŘ ra si takŘ lze vybrat poc et zobrazovany ch
vy sledku na stra nce. Pri nezada nı z a dnŘ ho kritŘ ria se opet vyhledajı vsechny
za znamy ve videopujc ovne.
22
2) Hleda nı pokroc ilŘ
Ve formula ri pro pokroc ilŘ vyhleda va nı si muz ete zvolit az 10 ruzny ch kritŘ riı
na vyhleda va nı filmu. Vy sledkem tohoto vyhleda va nı budou pouze na zvy filmu
vyhovujıcı zadany m kritŘ riım.
Pri nezada nı z a dnŘ ho kritŘ ria budou vyhleda ny vsechny filmy a poc et
zobrazovany ch vy sledku na stra nce si muz ete opet zvolit.
3) Vy sledky hleda nı
Na tŘ to stra nce jsou zobrazeny vsechny filmy, na kterŘ jste se dıvali a to v poradı
od poslednıho navstıvenŘ ho filmu. Pri kaz dŘ m vstupu na stra nku obsahujıcı
informace o filmu se na vrchol tohoto seznamu priradı novy film. Pokud jste se na
tento film jiz dıvali, provede se preskla da nı navstıveny ch filmu. Tento film se
premıstı opet na vrchol.
Vy sledkem vyhleda va nı jsou tedy na zvy filmu nebo jmŘ na hercu c i rez isŘ ru. Kliknutım
na prıslusny vy sledek vyhleda va nı se dostanete na stra nku s informacemi o vybranŘ m filmu
nebo na stra nku s informacemi o vybranŘ m herci, c i na stra nku obsahujıcı informace
o vybranŘ m rez isŘ rovi.
Vsechny tyto tri stra nky jsou mezi sebou propojeny pomocı odkazu. To znamena , z e
stra nka informujıcı o filmu obsahuje i jmŘ na hercu a rez isŘ ru. Stra nka s informacemi
o vybranŘ m herci obsahuje i ďdaje, ve ktery ch filmech hra l. A stra nka s informacemi
o rez isŘ rovi ma odkazy na vsechny filmy, ve ktery ch rez ıroval.
Ve spodnı c a sti stra nky, kde jsou informace o vybranŘ m filmu, je tlac ıtko umoz nujıcı
prova denı rezervace. Po stisku tohoto tlac ıtka se otevre novŘ okno obsahujıcı kalenda r, ve
kterŘ m si muz ete vybırat datum rezervace.
2.2.3
Rezervace filmu
Okno pro rezervova nı filmu je rozdeleno do dvou c a stı. V pravŘ c a sti se nacha zı
kalenda r a leva c a st slouz ı pro rezervova nı filmu.
V kalenda ri si muz ete libovolne listovat, a tak zjisóovat, na kterŘ dny je jiz dany film
rezervovany . Tyto dny jsou oznac eny c ervene a nelze je rezervovat. Po kliknutı na libovolny
den oznac eny modre se va m danŘ datum prenese do levŘ c a sti okna. Vy ma te moz nost si film
na vybranŘ datum rezervovat.
Pro ďspesnŘ provedenı rezervace je treba zadat ID klienta a jeho heslo. V prıpade zada nı
neexistujıcıho klienta se va m zobrazı chybovŘ okno. Pokud zada te spatnŘ heslo, takŘ se va m
zobrazı prıslusnŘ chybovŘ okno.
Upozornenı:
1) Klient ma pouze 5 pokusu pro vloz enı spra vnŘ ho hesla. Pokud se mu to nepovede,
bude jeho heslo zablokova no (viz. kapitola 2.2.5).
2) Datum rezervace nelze psa t ruc ne. Musı by t vybra no z kalenda re. Pokud nenı
vybra no datum, jsou polıc ka pro vloz enı ID klienta a hesla nedostupnŘ .
Pri ďspesnŘ m zada nı jmŘ na a hesla se va m otevre okno s informacı o provedenı
rezervace. Rezervace muz e probehnout ďspesne, ale i neďspesne, a to v prıpade velkŘ
prodlevy od okamz iku vybra nı data rezervace do okamz iku provedenı rezervace. Po na vratu
do okna rezervace se muz ete presvedc it, z e na dany den se jiz neda film rezervovat.
23
2.2.4
Osobnı data klientu
Po kliknutı na poloz ku Informace o klientovi z menu hlavnıho okna videopujc ovny se
va m v pravŘ c a sti objevı prihlasovacı stra nka. Pokud zada te neexistujıcı ID klienta nebo
spatnŘ heslo, zobrazı se va m okno s informacı o chybe (viz. kapitola 2.2.5). Po spra vnŘ m
zada nı ID klienta a hesla se otevre novŘ okno obsahujıcı informace o klientovi. Da le jsou zde
zobrazeny vsechny pra ve vypujc enŘ filmy a takŘ vsechny filmy, kterŘ ma dany klient
rezervovanŘ .
U vypujc eny ch filmu je zobrazeno i datum vypujc enı a datum vra cenı. Pokud jsou
vypujc enŘ filmy oznac eny c ervene, znamena to, z e je klient mel jiz vra tit. U rezervovany ch
filmu je zobrazeno od kdy a do kdy ma klient danŘ filmy rezervovanŘ . Vedle rezervovany ch
filmu je zobrazeno tlac ıtko Zrusit, pomocı kterŘ ho muz e klient libovolnou rezervaci zrusit.
V okne informacı o klientovi je takŘ moz nost zmeny hesla. Pro zmenu hesla je treba
zadat starŘ heslo a dvakra t zopakovat heslo novŘ .
V prıpade chybnŘ ho zada nı starŘ ho hesla se objevı okno s chybovou hla skou (viz.
kapitola 2.2.5) a okno s informacemi o klientovi se zavre.
2.2.5
Ochrana dat klientu
Veskera hesla jsou posıla na skryte a tudız nehrozı nebezpec ı zıska nı cizıch hesel.
V prıpade, z e klient zapomene zavrıt okno s informacemi o sobe a k poc ıtac i se dostane jina
nepovolana osoba, muz e tato osoba nanejvy s smazat vsechny jeho rezervace. Zmenit heslo
mu bez znalosti starŘ ho hesla nemuz e.
Pokud je 5 kra t zada no chybnŘ heslo, potom se provede zablokova nı hesla a zobrazı se
okno s informacemi o tomto zablokova nı. V tomto okne ma klient moz nost podat si z a dost
o vygenerova nı novŘ ho hesla.
Moz nost vygenerova nı novŘ ho hesla se zobrazı pouze v prıpade, z e klient ma ve
videopujc ovne zadanou svoji E-mailovou adresu a jeste si z a dost o novŘ heslo nepodal. Nove
vygenerovanŘ heslo mu potom prijde na jeho E-mailovou adresu. Pokud klient nema zadanou
E-mailovou adresu, musı pro odblokova nı hesla zajıt prımo do videopujc ovny.
Kdyz klient prıjde prımo do videopujc ovny, muz e se dozvedet podrobnejsı informace o
zablokova nı hesla. Naprıklad kdy k nı doslo, z jakŘ IP adresy a z jakŘ ho prohlız ec e, popr.
operac nıho systŘ mu.
24
3 PROGRAMA
3.1
TORSKA PR IRUC KA
Instalace projektu
Pred zapoc etım instalace je treba zva z it predevsım fakt, o jak velikou videopujc ovnu se
bude jednat. To znamena , nejen kolik bude mıt zhruba klientu a kolik filmu bude nabızet
k pujc ova nı, ale takŘ kolik bude mıt prepa z ek k odbavova nı klientu.
V za vislosti na techto okolnostech muz ete vybrat nekterou z na sledujıcıch variant
instalacı.
1) mala videopujc ovna: 1 poc ıtac , ktery bude za roven intra / internetovy m serverem
a takŘ prepa z kou pro pujc ova nı filmu
2) strednı videopujc ovna: 1 poc ıtac , ktery bude jen intra / internetovy serverem
1 poc ıtac , ktery bude prepa z kou pro pujc ova nı filmu
3) velka videopujc ovna: 1 poc ıtac , ktery bude jen intra / internetovy serverem
nekolik poc ıtac u, kterŘ budou prepa z kami pro pujc ova nı
filmu
Poz adavky pro instalaci internetovŘ ho serveru:
1) operac nı systŘ m MS Window 95, 98, NT nebo 2000
2) funkc nı intra / internetovy server
3) podpora MS ASP (u IIS a PWS je standardnı souc a stı)
4) dostatek mısta na HDD pro databa zi VideoData, ktera se jako jedina bude zvetsovat
5) podpora ODBC 32-bit
Poz adavky pro instalaci prepa z ky:
1) operac nı systŘ m MS Window 95, 98, NT nebo 2000
2) podpora ODBC 32-bit
3) nainstalovany MS Access 97
Instalace internetovŘ ho serveru:
1) Mimo vlastnı server vytvorte adresa r, do kterŘ ho zkopırujete databa zi VideoData.mdb
z adresa re Data.
2) Na serveru vytvorte novy adresa r napr. Video, do kterŘ ho zkopırujte vsechny adresa re
a soubory z adresa re Root.
3) Na internetovŘ m serveru vytvorte novy virtua lnı adresa r private, ktery bude odkazovat
na rea lny adresa r ../Video/private. U tohoto adresa re zakaz te vlastnosti C tenı, Spoustenı
i Skripty.
Pokud nebude adresa r Video korenovy m adresa rem Vaseho internetovŘ ho serveru, je
treba vytvorit novy virtua lnı adresa r napr. Video, jehoz rea lny m adresa rem bude pra ve
adresa r Video. Zde je potreba nastavit vlastnosti C tenı a Skripty.
25
4) Nynı jeste pridejte vy chozı dokument Index.html.
5) Nakonec spusóte z adresa re ../Video/private databa zi VideoWWW a obnovte propojenı
tabulek na databa zi VideoData.
Instalace prepa z ky:
1) Na poc ıtac i, ktery bude prepa z kou vytvorte novy adresa r, kam zkopırujete soubor
cfg.ini , databa zi Videopujcovna.mdb a adresa r Send z adresa re Prepazka.
2) Spusóte databa zi Videopujcovna.mdb pri souc asnŘ m pridrz enı kla vesy Shift. Obnovte
propojenı tabulek na databa zi VideoWWW a nastavte, aby vy chozı sloz kou databa ze
byl nove zaloz eny adresa r obsahujıcı databa zi Videopujcovna.mdb.
3) Nynı, pokud to je ďc elnŘ , je nejvhodnejsı prılez itost nastavit ďc ty a hesla pro prıstup do
databa ze.
4) Da le muz ete nastavit nekterŘ zmenu v nastavenı videopujc ovny (viz. kapitola 3.3.3).
5) Nakonec spusóte databa zi Videopujcovna a nastavte konfiguraci SMTP serveru (viz.
kapitola 2.1.6).
K prohlız enı dat na internetu je zapotrebı libovolny prohlız ec , ktery doka z e zobrazovat
ra my, tabulky a podporuje skriptovacı jazyk VBScript.
Z tohoto duvodu doporuc uji pouz ıt prohlız ec MS Internet Explorer 4.0 nebo jeho vyssı
verzi. Cely projekt byl testova n na prohlız ec i MS Internet Explorer 5.0 pri rozlisenı
obrazovky 800x600.
3.2
Databaze VideoData
Tato databa ze se skla da pouze z tabulek a relacı mezi nimi. Obsahuje veskera data
o klientech, filmech, rezervacıch, vy pujc ka ch a dalsı pomocna data.
Na tyto tabulky se da le napojujı databa ze Videopujcovna a VideoWWW. Duvody pro
rozdelenı celŘ ho projektu do trı databa zı jsou hned dva.
1) V prıpade databa ze VideoWWW jde hlavne o zajistenı bezpec nosti pri prıstupu pres
Internet.
2) Databa ze Videopujcovna je propojena na tabulky z databa ze VideoData z duvodu
prenositelnosti na vıce poc ıtac u ve firme.
3.2.1
Tabulky
Tabulka 3.1: Sloz enı tabulky Klienti
Nazev pole
IDklient
Prijmeni
Jmeno
Heslo
Bydliste
ZablokovaneHeslo
ZablokovanoRucne
E-mail
Typ
long, automat
string[50]
string[50]
string[50]
string[50]
boolean
boolean
string[50]
Popis
identifikac nı c ıslo klienta
prıjmenı klienta
jmŘ no klienta
heslo do internetu
bydliste
zda je heslo zablokovanŘ
zda bylo heslo zablokovanŘ ruc ne
E-mailova adresa
26
Tabulka Klienti obsahuje informace o klientech videopujc ovny. Je to jedna ze dvou
stez ejnıch tabulek databa ze. Jejı struktura je zachycena v tabulce3.1. Prima rnım klıc em je
pole IDklient, pres kterŘ je propojene s tabulkami Blokace, NoveHeslo, Rezervace a Vypujcka.
Tabulka 3.2: Sloz enı tabulky Blokace
Nazev pole
IP
Datum
Cas
Klient
Prohlizec
Typ
string[50]
date
date
long
memo
Popis
IP adresa poc ıtac e
datum zablokova nı hesla
c as zablokova nı hesla
klient, jemuz bylo heslo zablokova no
typ prohlız ec e
V tabulke Blokace jsou obsaz eny informace o zablokova nı hesla klientum. Jejı predpis
je patrny z tabulky 3.2. Prima rnım klıc em tŘ to tabulky jsou pole IP, Datum a Cas. Pomocı
pole Klient je propojena s tabulkou Klienti.
Tabulka 3.3: Sloz enı tabulky NoveHeslo
Nazev pole
Klient
Datum
Cas
Vyrizeno
VyrizenoDatum
VyrizenoCas
Typ
long
date
date
boolean
date
date
Popis
klient
datum z a dosti o novŘ heslo
c as z a dosti o novŘ heslo
zda je z a dost vyrızena
datum vyrızenı z a dosti
c as vyrızenı z a dost
Tabulka NoveHeslo slouz ı k evidenci z a dostı o vygenerova nı novŘ ho hesla. Jejı
strukturu zna zornuje tabulka 3.3. Prima rnım klıc em tŘ to tabulky jsou pole Klient, Datum
a Cas a pomocı pole Klient je propojena s tabulkou Klienti.
Tabulka 3.4: Sloz enı tabulky Film
Nazev pole
IDfilmu
Nazev_filmu
Rok_vyroby
Zeme
Zanr
Delka_filmu
Cena_za_1_den
Delka_vypujcky
Pujceny
Typ
long, automat
string[50]
long
long
long
long
money
long
boolean
Popis
identifikac nı c ıslo filmu
na zev filmu
rok vy roby filmu
zeme vy roby
z a nr filmu
dŘ lka filmu v minuta ch
cena vy pujc ky za 1 den
dŘ lka vy pujc ky ve dnech
zda je film vypujc eny
27
Tabulka Film je druhou ze stez ejnıch tabulek celŘ databa ze. V nı jsou uloz eny
informace o vsech filmech ve videopujc ovne. Jejım prima rnım klıc em je pole IDfilmu. Pres
toto pole je propojena s tabulkami FilmOsoba, Rezervace a Vypujcka. Da le polem Zeme je
propojena s tabulkou Zeme a polem Zanr s tabulkou Zanr. Konstrukce tabulky je patrna
z tabulky 3.4.
Tabulka 3.5: Sloz enı tabulky FilmOsoba
Nazev pole
Film
Osoba
Herec
Typ
long
long
boolean
Popis
film
ďc inkujıcı ve filmu
zda dany ďc inkujıcı je herec
Tabulka FilmOsoba spojuje tabulku Film pres pole Film s tabulkou Herci_Reziseri pres
pole Osoba. Prima rnım klıc em jsou vsechny poloz ky. Jejı strukturu zna zornuje tabulka 3.5.
Tabulka 3.6: Sloz enı tabulky Herci_Reziseri
Nazev pole
IDhercireziser
Jmeno
Prijmeni
Zeme
Typ
long, automat
string[50]
string[50]
long
Popis
identifikac nı c ıslo herce nebo rez isŘ ra
jmŘ no herce nebo rez isŘ ra
prıjmenı herce nebo rez isŘ ra
zeme puvodu herce nebo rez isŘ ra
V tabulce Herci_Reziseri jsou obsaz eny informace o hercıch a rez isŘ rech. Jejı struktura
je zachycena v tabulce 3.6. Prima rnım klıc em tŘ to tabulky je pole IDhercireziser, pres kterŘ je
propojena s tabulkou FilmOsoba. Pres pole Zeme je spojena s tabulkou Zeme.
Tabulka 3.7: Sloz enı tabulky Zanr
Nazev pole
IDzanru
Zanr
Typ
long, automat
string[50]
Popis
identifikac nı c ıslo z a nru
na zev z a nru
Tabulka Zanr obsahuje seznam z a nru. Jejı predpis je v tabulce 3.7. S tabulkou Film je
spojena pres pole IDzanru, kterŘ je takŘ prima rnım klıc em.
Tabulka 3.8: Sloz enı tabulky Zeme
Nazev pole
IDzeme
Nazev_zeme
Svetadil
Pocet_obyvatel
Typ
long, automat
string[50]
string[50]
long
Popis
identifikac nı c ıslo zeme
na zev zeme
jmŘ no svetadılu
poc et obyvatel zeme
28
Obra zek 3.1: SchŘ ma relacı
Blokace
IP
Datum
Cas
Klient
Prohlizec
∞
Vypujcka
∞ Datum
∞
1
NoveHeslo
Klient
Datum
Cas
Vyrizeno
VyrizenoDatum
VyrizenoCas
∞
Klient
Nazev_filmu
Cena
Vypujcni_den
Celkem_dnu
∞
Klienti
IDklient
Prijmeni
Jmeno
Heslo
Bydliste
ZablokovaneHeslo
ZablokovanoRucne
E-mail
FilmOsoba
Film
Osoba
Herec
∞
1 Herci_Reziseri
1
1
Film
IDhercireziser
Jmeno
∞ Prijmeni
Zeme
1
IDfilmu
Nazev_filmu
Rok_vyroby
∞
Zeme
∞
Zanr
Delka_filmu
Cena_za_1_den
Delka_vypujcky
Pujceny
1
Rezervace
Datum
Rezervace_od
∞ Rezervace_do
Klient
∞
Film
Vyrizena
29
1
Zeme
IDzeme
Nazev_zeme
Svetadil
Pocet_obyvatel
Zanr
IDzanru
Zanr
1
Tabulka Zeme obsahuje seznam zemı. Pres pole IDzeme, jez je prima rnım klıc em je
spojena s tabulkami Film a Herci_Reziseri. Prepis tabulky Zeme je zachycen v tabulce 3.8.
Tabulka 3.9: Sloz enı tabulky Rezervace
Nazev pole
Datum
Rezervace_od
Rezervace_do
Klient
Film
Vyrizena
Typ
date
date
date
long
long
boolean
Popis
datum provedenı rezervace
datum rezervace od
datum rezervace do
klient
film
zda je rezervace vyrızena
Seznam vsech rezervacı je uloz en v tabulce Rezervace, jejız struktura je zachycena
v tabulce 3.9. Prima rnım klıc em tŘ to tabulky jsou pole Datum, Rezervace_od, Klient a Film.
Pres pole Klient je spojena s tabulkou Klienti a pres pole Film s tabulkou Film.
Tabulka 3.10: Sloz enı tabulky Vypujcka
Nazev pole
Datum
Klient
Nazev_filmu
Cena
Vypujcni_den
Celkem_dnu
Typ
date
long
long
money
long
long
Popis
datum vy pujc ky
klient
film
cena vy pujc ky za tento den
vy pujc nı den, za pornŘ = upomınka
na kolik dnu je film pujc en
Poslednı tabulkou je tabulka Vypujcka , ktera obsahuje informace o pujc ova nı filmu.
Jejı predpis je v tabulce 3.10. Prima rnım klıc em tŘ to tabulky jsou pole Datum, Klient,
Nazev_filmu a Vypujcni_den. Pres pole Klient je spojena s tabulkou Klienti a pres pole
Nazev_filmu s tabulkou Film.
3.2.2
Schema relacı mezi tabulkami
Na obra zku 3.1 je zobrazeno schŘ ma relacı mezi tabulkami databa ze. Tuc nejsı na zvy polıc ek
v jednotlivy ch tabulka ch oznac ujı prima rnı klıc .
30
3.3
Databaze Videopujcovna
Databa ze Videopujcovna slouz ı pro pracovnıky videopujc ovny. Obsahuje 10 tabulek
propojeny ch na databa zi VideoData, 39 vy berovy ch dotazu, 43 formula ru, 1 sestavu a 1
modul.
Ze 43 formula ru slouz ı 5 z nich jen jako podformula re jiny ch formula ru. Jsou to
DnesniRezervaceInfo, DnesPujceno, DnesPujcenoInfo, Herci a Reziser. Formula r
RezervaceTab se pouz ıva jen pro zjisóova nı informacı o rezervacıch ve formula ri
KalendarRez a vubec se nezobrazuje.
Po spustenı tŘ to databa ze se objevı hlavnı formula r a pracuje se jiz jen s predem
vytvoreny mi formula ri.
Databa ze nenı opatrena z a dny m heslem a jako jediny uz ivatel je zde administra tor.
Vzhledem k charakteru uz itı predpokla da m, z e nenı treba vytva ret sloz itejsı systŘ m uz ivatelu.
Kdyz to ale situace bude vyz adovat, muz e spra vce videopujc ovny vytvorit tento systŘ m
uz ivatelu i s prıstupovy mi hesly. Provede se to tak, z e pri spoustenı databa ze se pridrz ı
kla vesa Shift, a tım se dostanete do okna databa ze, kde potom v Menu Accessu muz ete
nastavit jednotlivŘ prıstupy.
3.3.1
Globalnı promýnnea funkce
V modulu Modul1 je celkem 5 globa lnıch promenny ch, 4 globa lnı funkce a 2 globa lnı
procedury.
Seznam globa lnıch promenny ch:
§
§
§
§
§
kalend á obsahuje informaci, ze kterŘ ho formula re a okna byl vyvola n formula r
Kalendar a do kterŘ ho formula re se ma vloz it vybranŘ datum; tuto globa lnı
promennou nalezneme ve formula rıch FirmaInfo, Iklienti, Kalendar, KalendarRez a
NovaRezervace.
MaxDnu á obsahuje informaci, na kolik dnu se da vybrany film maxima lne pujc it;
s touto promennou se pracuje ve formula rıch DnesniRezervace, Nabidka a Vypujcka
AktualForm á obsahuje informaci, ze kterŘ ho formula re jste se dostali do formula re
DnesniRezervace; tato promenna se vyskytuje ve formula rıch DnesniRezervace,
Iklienti, Rezervace a Vypujcka
OdDatum á promenna slouz ıcı pro globa lnı funkci DatumOd; ve formula ri
FirmaInfo se do nı vkla da datum zac a tku vy beru
DoDatum á promenna slouz ıcı pro globa lnı funkci DatumDo; ve formula ri
FirmaInfo se do nı vkla da datum konce vy beru
Seznam globa lnıch funkcı:
§
§
§
§
DatumOd á tato funkce slouz ı k prirazenı hodnoty OdDatum; pouz ıva se pro dotazy
UtrataKlientuPom, VydelekFilmuPom, VydelekZanruPom
DatumDo á tato funkce slouz ı k prirazenı hodnoty DoDatum; pouz ıva se pro dotazy
UtrataKlientuPom, VydelekFilmuPom, VydelekZanruPom
KriteriaDatumu á funkce, ktera vytva rı kritŘ ria pro otevrenı formula re; pouz ıva se
nekolikra t ve formula ri Iklienti
StavZadosti á funkce, ktera zjisóuje aktua lnı poc et z a dostı o vygenerova nı novŘ ho
hesla; vola se z formula ru Firma a Nabidka
Seznam globa lnıch procedur:
31
§
§
3.3.2
OtevreniKalendare á procedura na otevrenı formula re Kalendar; vola se z formula ru
FirmaInfo a Iklienti
Navrat á procedura na na vrat z formula ru; pouz ıva se skoro ve vsech formula rıch po
stisknutı tlac ıtka Zpet
Dotazy, formulare a sestavy
Z duvodu velkŘ obsa hlosti jsem se v tŘ to kapitole omezil jen na struc ny popis vsech
dotazu, formula ru a sestavy. Struc ny popis vsech dotazu je obsaz en v tabulce 3.11 a popis
vsech formula ru a sestavy v tabulce 3.12. Vztahy mezi formula ri jsou zobrazeny na obra zku
2.1.
Tabulka 3.11: Struc ny popis dotazu v databa zi Videopujcovna
Nazev dotazu
Popis
Dnesni rezervace
Dotaz zobrazujıcı vsechny dnesnı rezervace.
DnesPujceno
Obsahuje vsechny filmy, kterŘ jsou dnes vypujc enŘ .
Herci
Obsahuje seznam vsech hercu.
HledaniFilmu1
Dotaz obsahujıcı vsechny moz nŘ informace o filmu krome hercu
a rez isŘ ru.
HledaniFilmu2
Dotaz obsahujıcı vsechny moz nŘ informace o filmu vc etne hercu
a rez isŘ ru.
iFilm
Vy ber vsech informacı o filmech, kterŘ se zobrazujı ve formula ri
Ifilm.
iKlient
Vy ber vsech informacı o klientech, kterŘ se zobrazujı ve formula ri
Iklienti.
KlientNevraceno
Zobrazenı informacı o filmech, kterŘ jiz mely by t vra ceny. Tento
dotaz je vytvoren nad dotazem PujcenyDo.
NoveRezervace
Zobrazuje seznam vsech novy ch rezervacı.
PocetFilmu
Zobrazenı poc tu vypujc eny ch filmu pro jednotlivŘ klienty. Tento
dotaz je vytvoren nad dotazem PujceneFilmy.
PocetUpominek
Zobrazenı poc tu upomınek pro jednotlivŘ klienty. Tento dotaz je
vytvoren nad dotazem Upominky.
PropadleRezervace
Seznam propadly ch rezervacı.
PujceneFilmy
Pomocny dotaz pro zjistenı poc tu vypujc eny ch filmu. Slouz ı takŘ pro
formula r PujceneFilmy.
PujcenyDo
Dotaz nad pomocny mi dotazy PujcenyDoPom2 a PujcenyDoPom3.
Obsahujıcı za znamy z PujcenyDoPom3 obohacenŘ o nekterŘ
vlastnosti z dotazu PujcenyDoPom2.
PujcenyDoPom1
Pomocny dotaz hledajıcı v tabulce Vypujcka prvnı vy pujc nı den
kaz dŘ vy pujc ky.
PujcenyDoPom2
Pomocny dotaz nad dotazem PujcenyDoPom1, zobrazujıcı minima lnı
prvnı vy pujc nı den.
PujcenyDoPom3
Pomocny dotaz nad dotazem PujcenyDoPom2, ktery vybıra poslednı
vy pujc ky filmu.
RezervaceDo
Seznam aktua lnıch rezervacı.
RezervaceOd
Nejbliz sı novŘ rezervace filmu. Tento dotaz je vytvoren nad dotazy
32
RezervaceOdPom a NoveRezervace.
RezervaceOdPom
Pomocny dotaz pro zjistenı nejbliz sı novŘ rezervace.
Reziser
Obsahuje seznam vsech rez isŘ ru.
SumaAktualR
Poc et aktua lnıch rezervacı klientu.
SumaNovychR
Poc et novy ch rezervacı klientu.
SumaPropadlychR
Poc et propadly ch rezervacı klientu.
SumaRezervaci
Pomocny dotaz pro dotaz iKlient.
SumaVyrizenychR
Poc et vyrızeny ch rezervacı klientu.
Upominky
Seznam vsech upomınek.
UpominkyKlienta
Zobrazenı upomınek jednotlivy ch klientu v zadanŘ m rozmezı
datumu.
UpominkyKlientaPom Pomocny dotaz pro upomınky klienta pouz ıvajıcı globa lnı funkce
DatumOd a DatumDo.
UtrataKlienta
Zobrazenı ďtraty klientu za jednotlivŘ dny.
UtrataKlientaPom
Pomocny dotaz pro zjisóova nı ďtraty klientu.
UtrataKlientu
Zobrazenı ďtraty jednotlivy ch klientu v zadanŘ m rozmezı datumu.
UtrataKlientuPom
Pomocny dotaz pro ďtratu klientu pouz ıvajıcı globa lnı funkce
DatumOd a DatumDo.
VydelekFilmu
Zobrazenı vy delku firmy za jednotlivŘ filmy v zadanŘ m rozmezı
datumu.
VydelekFilmuPom
Pomocny dotaz pro vy delek filmu pouz ıvajıcı globa lnı funkce
DatumOd a DatumDo.
VydelekFirmy
Zobrazenı celkovŘ ho vy delku firmy v zadanŘ m rozmezı datumu.
Tento dotaz je vytvoren nad dotazem VydelekFilmuPom.
VydelekZanru
Zobrazenı vy delku firmy za jednotlivŘ z a nry v zadanŘ m rozmezı
datumu.
VydelekZanruPom
Pomocny dotaz pro vy delek za z a nry pouz ıvajıcı globa lnı funkce
DatumOd a DatumDo.
VyrizeneRezervace
Seznam vyrızeny ch rezervacı.
Tabulka 3.2: Struc ny popis formula ru a sestavy v databa zi Videopujcovna
Nazev formulare
Popis
BlokaceHesla
Informace o zablokova nı hesla.
DnesniRezervace
Seznam vsech dnesnıch rezervacı.Tento formula r se otvıra
(obr. 2.13)
z formula re Rezervace nebo z iKlienti, do kterŘ ho se bu“ vra tıme,
nebo si vybrany rezervovany film vypujc ıme ve formula ri Vypujcka.
V tomto formula ri se da nastavit cena za rezervaci.
DnesniRezervaceInfo Seznam vsech dnesnıch rezervacı. Je podformula rem formula re
FirmaStav.
DnesPujceno
Informace, kterŘ filmy jsou vypujc enŘ . Tento formula r je
podformula rem formula re Iklienti.
DnesPujcenoInfo
Informace, kterŘ filmy jsou vypujc enŘ . Tento formula r je
podformula rem formula re FirmaStav.
Film (obr. 2.18)
Zada va nı novy ch filmu. Pro prirazenı hercu a rez isŘ ru se vola
formula r Obsazeni..
33
Za kladnı formula r pro firemnı informace. Odtud se muz eme dostat do
formula re pro vkla da nı dat, do formula re o hospodarenı firmy
a dalsıch.
FirmaData (obr. 2.17) Slouz ı pro vkla danı novy ch filmu, klientu a zemı.
FirmaInfo (obr. 2.20) Informace o hospodarenı firmy. Muz eme se odsud dostat na
informace o vy delku za filmy, z a nry, informace o ďtrata ch klientu
a jinŘ .
FirmaStav (obr. 2.19) Seznam vypujc eny ch a rezervovany ch filmu pro dnesnı den.
Herci
Seznam hercu. Tento formula r je podformula rem formula re Ifilm.
Heslo
Formula r na zmenu hesla.
HledaniFilmu
Zde se zada vajı kritŘ ria pro hleda nı filmu. V za vislosti na nich se
(obr. 2.8)
otevre formula r VysledkyHledani1 nebo VysledkyHledani2.
Ifilm (obr. 2.6)
Zde jsou vsechny informace o filmech.
Iklienti (obr. 2.7)
Obsahuje vsechny informace o klientech.
Kalendar
Formula r obsahujıcı kalenda r.
KalendarRez
Kalenda r pro rezervova nı. Zobrazuje, kterŘ filmy a kdy se mohou
(obr. 2.12)
rezervovat.
Klienti
Prida nı novŘ ho klienta. TakŘ je moz no zde opravovat nekterŘ ďdaje
o jiz existujıcıch klientech.
Lide
Zada va nı novy ch hercu a rez isŘ ru.
Nabidka (obr. 2.3)
Hlavni formula r celŘ videopujc ovny.
NovaRezervace
Formula r pro vytva renı novy ch rezervacı.
(obr. 2.11)
NoveHeslo (obr. 2.21) Formula r na generova nı novy ch hesel.
NoveRezervace
Zobrazuje informace o novy ch rezervacıch klienta.
Obsazeni
K jednotlivy m filmum prirazujeme herce a rez isŘ ry.
PropadleRezervace
Zobrazuje informace o propadly ch rezervacıch klienta.
PujceneFilmy
Informace o pujc eny ch filmech jednotlivy ch klientu za urc itŘ vybranŘ
obdobı.
Rezervace (obr. 2.10) Slouz ı pro vola nı formula ru pro vytva renı a rusenı rezervacı. Da le se
odtud vypujc ujı dnesnı rezervace. TakŘ je moz nost prechodu do
informac nıch formula ru o klientech a filmech.
RezervaceInfo
Obsahuje informace o novy ch rezervacıch na konkrŘ tnı film.
RezervaceTab
Formula r, ktery se vubec nezobrazuje a je vytvoreny nad tabulkou
Rezervace. Pouz ıva se pro formula r KalendarRez.
Reziser
Seznam rez isŘ ru. Tento formula r je podformula rem formula re Ifilm.
RuseniRezervace
Formula r pro rusenı rezervacı, kterŘ jeste nepropadly.
(obr. 2.14)
UpominkyKlienta
Zobrazenı informacı o upomınka ch jednotlivy ch klientu.
UpominkyKlientu
Informace o upomınka ch vsech klientu.
UtrataKlienta
Informace o ďtrate jednotlivy ch klientu.
UtrataKlientu
Informace o ďtrate vsech klientu.
VydelekFilmu
Informace o vy delku filmu.
VydelekFirmy
Informace o vy delku firmy.
VydelekZanru
Informace o vy delku podle typu z a nru.
Vypujcka (obr. 2.4)
Formula r, kde prova dıme vy pujc ky filmu a takŘ placenı upomınek.
Z tohoto formula re je vola na tiskova sestava Vypujcka.
VyrizeneRezervace
Zobrazuje informace o vyrızeny ch rezervacıch klienta.
Firma (obr. 2.15)
34
VysledkyHledani1
(obr. 2.9)
VysledkyHledani2
(obr. 2.9)
Zeme
Vy sledky hleda nı pokud v kritŘ riu nenı jmŘ no rez isŘ ra ani jmŘ no
herce.
Vy sledky hleda nı pokud v kriteriu je jmŘ no rez isŘ ra nebo jmŘ no
herce.
Formula r na prida va nı novŘ Zeme.
Nazev sestavy
Vypujcka (obr. 2.5)
Popis
Doklad o zaplacenı vy pujc ky nebo upomınky.
3.3.3
Nýkteremoznezmýny nastavenı
1) Zmena intervalu testova nı novŘ ho hesla
Tato zmena se prova dı v na vrhovŘ m zobrazenı formula re Nabidka (obr. 2.3). Zde je
treba nastavit vlastnost interval c asovac e, ktera se uda va v milisekunda ch. Standardne je
nastaveno 600000 ms, coz je 10 minut.
2) Zmena ceny za rezervaci
Tuto zmenu muz ete nastavit ve zdrojovŘ m ko du uda losti stisku tlac ıtka Pujcit ve
formula ri DnesniRezervace (obr. 2.13). Jedna se o nastavenı promennŘ pom4. Ve
zdrojovŘ m ko du je popsa n podrobny na vod.
3) Zmena ceny za vypujc enı na vıce dnı
Cena za dalsı pujc ovacı dny je pri nainstalova nı videopujc ovny nastavena na hodnotu
ceny prvnıho dne snız enou o 10% za kaz dy dalsı vy pujc nı den. Toto lze zmenit ve
zdrojovŘ m ko du formula re Vypujcka (obr 2.4) pri uda losti stisku tlac ıtka Uloz . Ve
zdrojovŘ m ko du je popsa n podrobny na vod.
4) Zmena ceny za upomınku
Ve zdrojovŘ m ko du formula re Nabidka (obr 2.3) se muz ete zmenit cenu za kaz dy
prekroc eny den. Toto se prova dı v uda losti reagujıcı na stisknutı tlac ıtka Vracenı. Ve
zdrojovŘ m ko du je na prıslusnŘ m mıste popsa n podrobny na vod.
5) Zmena dŘ lky vy pujc ky pri vkla da nı novy ch filmu
Ve formula ri Film (obr 2.18) se dŘ lka vy pujc ky nenastavuje, ale generuje se
automaticky v za vislosti na roku vy roby. Toto generova nı je moz nŘ zrusit smaza nım
zdrojovŘ ho ko du uda losti AfterUpdate.
3.4
Skripty HTML a ASP v projektu
Cely projekt na intra / internetu obsahuje celkem 6 HTML stra nek, 19 ASP stra nek
a 1 soubor Global.asa. Z duvodu rozsa hlosti projektu zde nebudu uva det podrobnou analy zu
vsech stra nek, ale pouze jejich struc ny popis. Na za ver kapitoly uvedu nekterŘ zajımavŘ
problŘ my, kterŘ se pri programova nı techto stra nek vyskytly.
ASP stra nky jsou napojeny pouze na jedinou databa zi a tou je VideoWWW, ktera se
nacha zı v adresa ri Private. Pro spra vnou funkci ASP stra nek musı by t na internetovŘ m serveru
vytvoren virtua lnı adresa r private (viz kapitola 3.1).
35
3.4.1
Databaze VideoWWW
Databa ze VideoWW slouz ı pouze pro prıstup z ASP stra nek do databa ze VideoData.
Obsahuje tedy 10 propojeny ch tabulek a navıc jeste 10 vy berovy ch dotazu. Na zvy a struc nŘ
popisy jednotlivy ch dotazu jsou zobrazeny v tabulce 3.13.
Tabulka 3.13: Struc ny popis dotazu v databa zi VideoWWW
Nazev dotazu
Herci
HledaniFilmu1
HledaniFilmu2
NoveRezervace
PujcenyDo
PujcenyDoPom1
PujcenyDoPom2
PujcenyDoPom3
RezervaceNaDen
Reziser
3.4.2
Popis
Obsahuje seznam vsech hercu.
Dotaz obsahujıcı vsechny moz nŘ informace o filmu krome hercu
a rez isŘ ru.
Dotaz obsahujıcı vsechny moz nŘ informace o filmu vc etne informacı o
hercıch a rez isŘ rech.
Zobrazuje seznam vsech novy ch rezervacı.
Dotaz nad pomocny mi dotazy PujcenyDoPom2 a PujcenyDoPom3.
Obsahujıcı za znamy z PujcenyDoPom3 obohacenŘ o nekterŘ vlastnosti
z dotazu PujcenyDoPom2.
Pomocny dotaz hledajıcı v tabulce Vypujcka prvnı vy pujc nı den kaz dŘ
vy pujc ky.
Pomocny dotaz nad dotazem PujcenyDoPom1, zobrazujıcı minima lnı
prvnı vy pujc nı den.
Pomocny dotaz nad dotazem PujcenyDoPom2, ktery vybıra poslednı
vy pujc ky filmu.
Parametricky dotaz s parametry [IDfilm] a [Den], zobrazujıcı informaci
zda dany film [IDfilm] je na dany den [Den] rezervova n. Tento dotaz se
otvıra jen na stra nce RezervaceVysledek.asp.
Obsahuje seznam vsech rez isŘ ru.
Titulnıskripty
Jmeno souboru
Popis
Index.html
Švodnı stra nka rozdelujıcı okno na ra my.
Title.html
Titulek videopujc ovny.
MenuHledani.html Po levŘ strane hlavnıho okna se zobrazuje toto hlavnı menu pro vy ber
jednotlivy ch akcı. Muz eme se dostat na ďvod, za kladnı vyhleda va nı,
pokroc ilŘ vyhleda va nı, vstup na prihlasovacı stra nku klientu a nebo na
zobrazenı vy sledku vyhleda va nı.
HledaniUvod.html Stra nka obsahujıcı informace o moz nostech pra ce s videopujc ovnou.
36
3.4.3
Vyhledavanı filmu
Jmeno souboru
Hledani1.html
Hledani2.asp
Vysledky1f.asp
Vysledky1h.asp
Vysledky1r.asp
Vysledky2.asp
Vysledky3.asp
Film.asp
Herc.asp
Reziser.asp
3.4.4
Popis
Stra nka pro zada va nı kritŘ riı pro za kladnı vyhleda va nı.
Stra nka pro zada va nı kritŘ riı pro pokroc ilŘ vyhleda va nı.
Zobrazenı nalezeny ch filmu podle zadany ch kritŘ riı za kladnıho
vyhleda va nı.
Zobrazenı nalezeny ch hercu podle kritŘ riı zadany ch v za kladnım
vyhleda va nı.
Zobrazenı nalezeny ch rez isŘ ru podle kritŘ riı za kladnıho vyhleda va nı.
Zobrazenı nalezeny ch filmu podle vsech kritŘ riı z pokroc ilŘ ho
vyhleda va nı.
Zobrazenı vsech filmu, na kterŘ jste se jiz dıvali. Tyto informace jsou
uloz eny na serveru v globa lnıch promenny ch. Session(ťFilm”),
Session(ťnazev_”) a Session(ťID_”), kde _oznac uje c ıslo.
Tato stra nka obsahuje informace o vybranŘ m filmu.
Na tŘ to stra nce se zobrazujı informace o vybranŘ m herci.
Zde se zobrazujı informace o vybranŘ m rez isŘ rovi.
Rezervace filmu
Jmeno souboru
Popis
Na tŘ to stra nce se prova dejı rezervace filmu. Obsahuje kalenda r,
kde jsou od sebe odliseny dny, na kterŘ lze rezervaci prova det a na
kterŘ nelze. Na kaz dy den vybranŘ ho mesıce se prova dı test, zda
nenı film vypujc eny nebo rezervovany .
Vstup2.asp
Tato stra nka slouz ı pro overenı hesla uz ivatele. Pokud je vse
spra vne, je vy sledek posla n na stra nku RezervaceVysledek.
V ostatnıch prıpadech se provede presmerova nı na nekterou
chybovou stra nku.
RezervaceVysledek.asp Zobrazenı vy sledku rezervace. Zda probehla ďspesne c i neďspesne.
Znovu se testuje, zda lze film na vybrany den rezervovat.
Rezervace.asp
3.4.5
Osobnı data
Jmeno souboru
Popis
Stra nka pro prihla senı klienta do systŘ mu.
Zde se overujı ďdaje o klientu pri vstupu do osobnı karty. Pri vy skytu
nejakŘ chyby se zobrazı chybovŘ skripty. Pri ďspesnŘ m vstupu se
dostanete na stra nku KlientVysledek.
KlientVysledek.asp Obsahuje informace o klientovi. Klient ma moz nost si zde zmenit heslo
nebo zrusit libovolnou rezervaci.
NoveHeslo.asp
Tato stra nka slouz ı pro zaevidova nı poz adavku na vygenerova nı novŘ ho
hesla. Vola se ze stra nky Chyba3
ZmenaHesla.asp
Stra nka na provedenı zmeny hesla. Testujete zda bylo zada no dobre
starŘ heslo.
Klient.html
Vstup1.asp
37
3.4.6
Chyboveskripty
Jmeno souboru
Chyba1.asp
Chyba2.asp
Chyba3.asp
3.4.7
Popis
Pokud je zada no neexistujıcı ID klienta, otevre se tato stra nka
informujıcı o danŘ chybe.
Tato stra nka se zobrazı, pokud je zada no chybne heslo. Do globa lnı
promennŘ Session(ťHeslo”) se ukla da poc et chybne zadany ch hesel.
Pokud dosa hne hodnoty 5, je heslo naposledy zvolenŘ ho klienta
zablokova no a otevre se stra nka Chyba3.
Stra nka obsahujıcı informace o zablokova nı hesla. Z tŘ to stra nky je
moz nost si podat poz adavek na vygenerova nı novŘ ho hesla. Je treba
testovat, zda ma klient zaevidovany E-mail a zda si jeste nepodal z a dost
o novŘ heslo.
Globalnı promýnne
Projekt obsahuje hned nekolik globa lnıch promenny ch. Pro kaz dŘ ho uz ivatele existujı
minima lne 2 globa lnı promennŘ . Je to promenna Heslo obsahujıcı poc et chybne zadany ch
hesel a promenna Film obsahujıcı poc et filmu, na kterŘ jste se dıvali. Tyto promennŘ se
inicializujı v souboru global.asa hned pri prihla senı.
Tretı globa lnı promenna Pomocna se pouz ıva jako pomocna promenna na stra nce
Rezervace.asp pro prenos IDfilmu na stra nku RezervaceVysledek.asp. TakŘ se uz ıva na
stra nce KlientVysledek.asp pro prenos IDklienta na stra nku ZmenaHesla.asp.
Dalsı globa lnı promennŘ se vytva rejı postupne pri prohlız enı jednotlivy ch filmu. Jsou to
promennŘ nazev_ a ID_, kde _ znac ı nejakŘ c ıslo od 1 do celkovŘ ho poc tu navstıveny ch
filmu. Tyto promennŘ obsahujı na zvy filmu, na kterŘ jste se dıvali a jejich ID. Jejich vytva renı
probıha na stra nce Film.asp.
3.4.8
Popis nýkterych slozitýjsıch stranek
Vetsina stra nek projektu slouz ı jen jako zobrazovacı prostredek informacı z databa ze.
Mezi takovŘ patrı i stra nky na vyhleda va nı filmu, hercu a rez isŘ ru, kde navıc jeste pri
otevıra nı dotazu a tabulek zada va me podmınky vy beru. Programova nı takovy ch stra nek je
z hlediska algoritmickŘ ho vcelku neprılis zajımavŘ .
V projektu se ale takŘ vyskytujı stra nky, kterŘ rozhodne za povsimnutı stojı.
1. Film.asp á Na tŘ to stra nce se ukla dajı informace o navstıveny ch filmech do
globa lnıch promenny ch. Pri navstıvenı tŘ to stra nky je treba nejprve zjistit, zda
aktua lne vybrany film byl uz navstıven. Pokud ano, je treba provŘ st preskla da nı
filmu tak, aby tento film byl na poslednım mıste. Vsechny filmy, kterŘ byly za nım
se posunou o jednu pozici dopredu.
2. Vstup1.asp á Tato stra nka testuje jmŘ no a heslo klienta pro vstup do osobnı karty.
Pri ďspesnŘ m prihla senı je treba otevrıt stra nku KlientVysledek.asp se specificky m
nastavenım velikosti a dalsıch vlastnostı. Za roven je treba zajistit, aby stra nka
38
Klient.html zustala na pozadı. Z toho duvodu je stra nka Vstup1.asp graficky totoz na
ze stra nkou Klient.html a po ďspesnŘ m prihla senı ji nahradı.
3. KlientVysledek.asp á Otevrenı tŘ to stra nky se prova dı ze stra nky Vstup1.asp c i ze
stra nky ZmenaHesla.asp nebo je otevrena sama sebou. Parametry otevrenı se uva dı
do ra dku za otaznık po vzoru metody GET. K rozpozna nı, ze kterŘ stra nky
pricha zıte, slouz ı parametry smazani a zmena, kterŘ se hned na zac a tku stra nky
testujı.
§ zmena=1: pricha zıte ze stra nky ZmenaHesla.asp a proto se ohla sı informace, z e
zmena hesla probehla ďspesne
§ smazani=0 a zmena=0: provede se jen zobrazenı stra nky, neboó pricha zıte ze
stra nky Vstup1.asp
§ smazani>0: je treba smazat nejakou rezervaci; parametr smazani obsahuje c ıslo
rezervace, ktera se ma smazat
4. Rezervace.asp á Tato stra nka je c asove nejna roc nejsı. Obsahuje kalenda r, ve kterŘ m
je treba u kaz dŘ ho dne vybranŘ ho mesıce otestovat, zda vybrany film nenı
vypujc eny nebo rezervovany . Pri zmene mesıce nebo vy beru konkrŘ tnıho dne se
prova dı novŘ nac tenı stra nky.
5. RezervaceVysledek.asp á Na tŘ to stra nce je nutnŘ znovu overit, zda je moz no
vybrany film na danŘ datum rezervovat. Prova dı se to pres dotaz PujcenoDo a pres
parametricky dotaz RezervaceNaDen, kde parametry jsou prımo vybrany den a dany
film.
3.5
Zpusoby zabezpec enı projektu
Cely projekt na intra / internetu je navrz en tak, aby zajisóoval co nejvetsı bezpec nost
pro klienty videopujc ovny. V projektu jsou zabudova ny 2 typy zabezpec enı.
1.
Stra nky, na ktery ch se zada vajı hesla klientu jsou odesıla ny skryte metodou post na
stra nky, kde se ďdaje o klientech overujı.
Pri vstupu klienta do karty ze stra nek Klient.html nebo Vstup1.asp se nejprve overuje
jmŘ no a heslo na stra nce Vstup1.asp. Pri spra vnŘ m zada nı se otvıra stra nka
KlientVysledek.asp jiz bez hesla.
Pri rezervova nı se ze stra nky Rezervace.asp posılajı jmŘ no a heslo klienta skryte na
stra nku Vstup2.asp a odtud pri spra vnŘ m zada nı se otevre stra nka RezervaceVysledek.asp.
IDfilmu je treba poslat pres globa lnı promennou Pomocna, jelikoz nenı obsaz ena
v posılanŘ m formula ri.
Zmena hesla se prova dı ze stra nky KlientVysledek.asp. StarŘ i novŘ heslo jsou skryte
posıla ny na stra nku ZmenaHesla.asp, kde pri spra vnŘ m zada nı starŘ ho hesla zmena
probehne. Pres globa lnı promennou Pomocna je treba poslat IDklienta, ktera nenı obsaz ena
v odesılanŘ m formula ri.
2.
Do globa lnı promennŘ Heslo se ukla da poc et chybne zadany ch hesel. Pokud tento
dosa hne hodnoty 5, je heslo danŘ mu klientovi zablokova no. Jestliz e klient vlastnı Emailovou schra nku a ma ji zaevidovanou ve videopujc ovne, ma moz nost podat si z a dost
o vygenerova nı novŘ ho hesla. Nove vygenerovanŘ heslo mu bude posla no na jeho Emailovou adresu. Ve videopujc ovne je tento poz adavek hned videt, a proto c ekacı doba na
vygenerova nı novŘ ho hesla muz e by t v provoznı dobe ota zkou nekolika minut.
39
Poc et chybne zadany ch hesel, pri kterŘ m dojde k zablokova nı, se da nastavit ve
zdrojovŘ m ko du stra nky Chyba2.asp.
Jestliz e klient zapomene pri odchodu zavrıt svoji osobnı kartu a dostane se do nı
neopra vnena osoba, pak tato muz e nanejvy s smazat klientovi vsechny rezervace. Zmena
hesla nenı bez znalosti starŘ ho hesla moz na .
3.6
Program Send
Jedna se o jednoduchy program na posıla nı posty pres SMTP server vytvoreny
v prostredı DELPHI 5.
Syntaxe programu je na sledujıcı:
§ send.exe [email] [text]
v souboru data.txt se edituje text dopisu a parametr [text] se prida za tento dopis
§ send.exe
tento prıkaz bez parametru spustı nastavenı konfigurace SMTP, ktera se uloz ı do
souboru cfg.ini v adresa ri odkud se tento prıkaz spustil.
40
4 ZA
VÁ R
V tomto projektu jsem se pokusil vytvorit efektivnı systŘ m zaby vajıcı se pujc ova nım
filmu. Domnıva m se, z e po drobny ch ďprava ch programu, v za vislosti na poz adavcıch
majitelu videopujc ovny, by tento systŘ m mohl zac ıt rea lne fungovat. Da se naprıklad zrusit
blokova nı hesla pres internet nebo zmenit nastavenı jeho limitnı hranice. TakŘ je moz no
pridat na internetovŘ stra nky poc ıtadlo prıstupu. Takovy chto ďprav by se urc ite naslo jeste
vıce.
Pro testovacı ďc ely jsem databa zi naplnil nektery mi daty a ďspesne otestoval jak c innost
prepa z ky, tak i pra ci na internetu. K tomuto jsem pouz il PWS nainstalovany na operac nı
systŘ m Windows 98.
Za verem chci podotknout, z e tak jako ve vsech systŘ mech, i v tomto projektu lze
nekolik vecı vylepsit a prepracovat. Jedna se predevsım o evidenci filmu, a sice o moz nost
spra vy vıce exempla ru se stejny m titulem. V tomto prıpade bude nejvetsım problŘ mem
vymyslet systŘ m rezervova nı filmu, neboórezervace se prova dejı na konkrŘ tnı dny.
Dalsı vylepsenı bych videl ve zmene prihlasova nı do systŘ mu pres internet, kde mısto
IDklienta by se mohlo vkla dat rodnŘ c ıslo a nebo nejaky klientem zvoleny login. Na tento
login bude navıc ve videopujc ovne treba vytvorit overovacı proceduru.
Zkvalitnenım by takŘ mohlo by t zavedenı presny ch c asu pro pujc ova nı, vracenı
a rezervaci filmu.
Verım, z e takto zpracovany systŘ m pujc ova nı filmu bude pro mnohŘ prınosem nejen
z hlediska uz ivatelskŘ ho, ale i programa torskŘ ho.
41
5 ZDROJOVE
5.1
KO DY PROGRAMU
Program Send
5.1.1
Soubor Unit1.pas
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Psock, NMsmtp, StdCtrls, Buttons, ExtCtrls;
type
TForm1 = class(TForm)
NMSMTP1: TNMSMTP;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
SpeedButton1: TSpeedButton;
Bevel1: TBevel;
Label5: TLabel;
Edit5: TEdit;
Edit6: TEdit;
Label6: TLabel;
Edit7: TEdit;
Label7: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
42
procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.FormActivate(Sender: TObject);
// posilani zpravu
var txt: TextFile;
path,line: string;
begin
// nacitani hodnot z cfg.ini
AssignFile(txt, ’cfg.ini’);
Reset(txt);
Readln(txt, line);
NMSMTP1.Host := line;
Edit1.Text := line;
Readln(txt, line);
NMSMTP1.Port := StrToInt(line);
Edit2.Text := line;
Readln(txt, line);
NMSMTP1.PostMessage.FromAddress := line;
Edit3.Text := line;
Readln(txt, line);
NMSMTP1.PostMessage.FromName := line;
Edit4.Text := line;
Readln(txt, line);
NMSMTP1.UserID := line;
Edit5.Text := line;
Readln(txt, line);
NMSMTP1.PostMessage.Subject := line;
Edit6.Text := line;
Readln(txt, path);
Edit7.Text := path;
closefile(txt);
if paramcount = 2 then begin
// poslani zpravy pokud jsou zadany oba parametry
AssignFile(txt, path + ’data.txt’);
Reset(txt);
repeat
Readln(txt, line);
NMSMTP1.PostMessage.Body.Add(Line);
until eof(txt);
closefile(txt);
NMSMTP1.PostMessage.ToAddress.Add(paramstr(1));
NMSMTP1.PostMessage.Body.Add(paramstr(2));
NMSMTP1.Connect;
NMSMTP1.SendMail;
NMSMTP1.Disconnect;
Close;
end;
end;
43
procedure TForm1.SpeedButton1Click(Sender: TObject);
// zmena konfigurace programu
var txt:TextFile;
begin
AssignFile(txt, ’cfg.ini’);
ReWrite(txt);
writeln(txt, Edit1.Text);
writeln(txt, Edit2.Text);
writeln(txt, Edit3.Text);
writeln(txt, Edit4.Text);
writeln(txt, Edit5.Text);
writeln(txt, Edit6.Text);
writeln(txt, Edit7.Text);
closefile(txt);
Close;
end;
end.
5.2
5.2.1
Databaze VideoWWW
Dotazy v zobrazenı SQL
Vsechny dotazy jsou stejnŘ jako v databa zi Videopujcovna az na dotazy RezervaceNaDen a
NoveRezervace.
5.2.1.1
Dotaz RezervaceNaDen
SELECT NoveRezervace.Datum, NoveRezervace.Klient, NoveRezervace.Film, NoveRezervace.Rezervace_od,
NoveRezervace.Rezervace_do
FROM NoveRezervace
WHERE (((NoveRezervace.Film)=[IDfilm]) AND ((NoveRezervace.Rezervace_od)<=[Den]) AND
((NoveRezervace.Rezervace_do)>=[Den]));
5.2.1.2
Dotaz NoveRezervace
SELECT Rezervace.Datum, Rezervace.Klient, Rezervace.Film, Rezervace.Rezervace_od,
Rezervace.Rezervace_do, Rezervace.Vyrizena
FROM Rezervace
WHERE (((Rezervace.Rezervace_do)>=Date()) AND ((Rezervace.Vyrizena)=False));
5.3
Databaze Videopujcovna
5.3.1
Dotazy v zobrazenı SQL
5.3.1.1
Dotaz Dnesni rezervace
SELECT Rezervace.Klient, [Jmeno]+" "+[Prijmeni] AS Klienti, Rezervace.Film, Film.Nazev_filmu,
Rezervace.Datum, Rezervace.Rezervace_od, Rezervace.Rezervace_do, Rezervace.Vyrizena
44
FROM Klienti INNER JOIN (Film INNER JOIN Rezervace ON Film.IDfilmu = Rezervace.Film) ON
Klienti.IDklient = Rezervace.Klient
WHERE (((Rezervace.Rezervace_od)<Date()+1) AND ((Rezervace.Rezervace_do)>=Date()) AND
((Rezervace.Vyrizena)=False));
5.3.1.2
Dotaz DnesPujceno
SELECT DISTINCT [Jmeno]+" "+[Prijmeni] AS KlientiJmeno, Film.Nazev_filmu AS Nazev,
Vypujcka.Nazev_filmu, Vypujcka.Klient, Vypujcka.Datum, Vypujcka.Vypujcni_den,
KlientNevraceno.PujcenyDo, Vypujcka.Cena, Vypujcka.Celkem_dnu AS Celkem
FROM Klienti INNER JOIN (Film INNER JOIN (Vypujcka LEFT JOIN KlientNevraceno ON
(Vypujcka.Nazev_filmu = KlientNevraceno.Nazev_filmu) AND (Vypujcka.Klient =
KlientNevraceno.IDklient)) ON Film.IDfilmu = Vypujcka.Nazev_filmu) ON Klienti.IDklient =
Vypujcka.Klient
WHERE (((Vypujcka.Datum)=Date()) AND ((Vypujcka.Vypujcni_den)>0)) OR (((Vypujcka.Datum)<=Date())
AND ((Vypujcka.Vypujcni_den)=1) AND ((KlientNevraceno.PujcenyDo)<=Date()) AND
((KlientNevraceno.Celkem_dnu)=[PujcenyDo]-[Datum]+1));
5.3.1.3
Dotaz Herci
SELECT Herci_Reziseri.IDhercireziser AS IDherec, Herci_Reziseri.Jmeno AS JmenoH,
Herci_Reziseri.Prijmeni AS PrijmeniH, Herci_Reziseri.Zeme, FilmOsoba.Film, [Prijmeni] & " " &
[Jmeno] AS Herci
FROM Herci_Reziseri INNER JOIN FilmOsoba ON Herci_Reziseri.IDhercireziser = FilmOsoba.Osoba
WHERE (((FilmOsoba.Herec)=True));
5.3.1.4
Dotaz HledaniFilmu1
SELECT Film.IDfilmu, Film.Nazev_filmu, Film.Rok_vyroby, Zeme.Nazev_zeme, Zanr.Zanr,
Film.Delka_filmu, Film.Cena_za_1_den, Film.Delka_vypujcky, Film.Pujceny
FROM Zeme RIGHT JOIN (Zanr RIGHT JOIN Film ON Zanr.IDzanru = Film.Zanr) ON Zeme.IDzeme =
Film.Zeme;
5.3.1.5
Dotaz HledaniFilmu2
SELECT DISTINCT Film.IDfilmu, Film.Nazev_filmu, Film.Rok_vyroby, Zeme.IDzeme, Zeme.Nazev_zeme,
Zanr.IDzanru, Zanr.Zanr, Film.Delka_filmu, Film.Cena_za_1_den, Film.Delka_vypujcky,
Film.Pujceny, Herci.IDherec, Herci.JmenoH, Herci.PrijmeniH, Reziser.IDreziser, Reziser.JmenoR,
Reziser.PrijmeniR, Herci.Herci, Reziser.Reziser, FilmOsoba.Herec AS HerecH, FilmOsoba_1.Herec
AS HerecR
FROM Zeme INNER JOIN (Zanr INNER JOIN (Film INNER JOIN (((FilmOsoba LEFT JOIN Herci ON
FilmOsoba.Osoba = Herci.IDherec) INNER JOIN FilmOsoba AS FilmOsoba_1 ON FilmOsoba.Film
= FilmOsoba_1.Film) LEFT JOIN Reziser ON FilmOsoba_1.Osoba = Reziser.IDreziser) ON
Film.IDfilmu = FilmOsoba.Film) ON Zanr.IDzanru = Film.Zanr) ON Zeme.IDzeme = Film.Zeme
WHERE (((FilmOsoba.Herec)=True) AND ((FilmOsoba_1.Herec)=False));
5.3.1.6
Dotaz iFilm
SELECT Film.IDfilmu, Film.Nazev_filmu, Film.Rok_vyroby, Zeme.Nazev_zeme, Zanr.Zanr,
Film.Delka_filmu, Film.Cena_za_1_den, Film.Delka_vypujcky, Film.Pujceny,
PujcenyDo.MinOfPrvniDen, PujcenyDo.Celkem_dnu, [MinOfPrvniDen]+[Celkem_dnu]-1 AS
PujcenyDo, PujcenyDo.Klient, RezervaceDo.Rezervace_do, RezervaceOd.MinOfRezervace_od
FROM Zeme INNER JOIN (Zanr INNER JOIN (PujcenyDo RIGHT JOIN ((Film LEFT JOIN RezervaceDo ON
Film.IDfilmu = RezervaceDo.Film) LEFT JOIN RezervaceOd ON Film.IDfilmu =
RezervaceOd.Film) ON PujcenyDo.Nazev_filmu = Film.IDfilmu) ON Zanr.IDzanru = Film.Zanr) ON
Zeme.IDzeme = Film.Zeme;
5.3.1.7
Dotaz iKlient
SELECT Klienti.IDklient, Sum(Vypujcka.Cena) AS SumOfCena, Klienti.Prijmeni, Klienti.Jmeno,
Klienti.Bydliste, Klienti.[E-mail], Klienti.ZablokovaneHeslo, Klienti.ZablokovanoRucne,
45
PocetFilmu.CountOfNazev_filmu, PocetUpominek.CountOfVypujcni_den,
SumaNovychR.CountOfFilm, SumaVyrizenychR.CountOfFilm, SumaPropadlychR.CountOfFilm,
SumaRezervaci.Film, SumaAktualR.CountOfFilm
FROM ((PocetUpominek RIGHT JOIN (PocetFilmu RIGHT JOIN Vypujcka ON PocetFilmu.Klient =
Vypujcka.Klient) ON PocetUpominek.Klient = Vypujcka.Klient) RIGHT JOIN ((((Klienti LEFT
JOIN SumaNovychR ON Klienti.IDklient = SumaNovychR.IDklient) LEFT JOIN SumaVyrizenychR
ON Klienti.IDklient = SumaVyrizenychR.IDklient) LEFT JOIN SumaRezervaci ON Klienti.IDklient
= SumaRezervaci.Klient) LEFT JOIN SumaPropadlychR ON Klienti.IDklient =
SumaPropadlychR.IDklient) ON Vypujcka.Klient = Klienti.IDklient) LEFT JOIN SumaAktualR ON
Klienti.IDklient = SumaAktualR.IDklient
GROUP BY Klienti.IDklient, Klienti.Prijmeni, Klienti.Jmeno, Klienti.Bydliste, Klienti.[E-mail],
Klienti.ZablokovaneHeslo, Klienti.ZablokovanoRucne, PocetFilmu.CountOfNazev_filmu,
PocetUpominek.CountOfVypujcni_den, SumaNovychR.CountOfFilm,
SumaVyrizenychR.CountOfFilm, SumaPropadlychR.CountOfFilm, SumaRezervaci.Film,
SumaAktualR.CountOfFilm;
5.3.1.8
Dotaz KlientNevraceno
SELECT PujcenyDo.IDklient, PujcenyDo.Nazev_filmu, PujcenyDo.MinOfPrvniDen, PujcenyDo.Celkem_dnu,
PujcenyDo.PujcenyDo
FROM PujcenyDo
WHERE (((PujcenyDo.PujcenyDo)<Date()));
5.3.1.9
Dotaz NoveRezervace
SELECT Rezervace.Datum, Rezervace.Rezervace_od, Rezervace.Rezervace_do, Rezervace.Klient,
Rezervace.Film, Rezervace.Vyrizena
FROM Rezervace
WHERE (((Rezervace.Rezervace_od)>Date()) AND ((Rezervace.Rezervace_do)>Date()) AND
((Rezervace.Vyrizena)=False))
ORDER BY Rezervace.Rezervace_od;
5.3.1.10
Dotaz PocetFilmu
SELECT PujceneFilmy.Klient, Count(PujceneFilmy.Nazev_filmu) AS CountOfNazev_filmu
FROM PujceneFilmy
GROUP BY PujceneFilmy.Klient;
5.3.1.11
Dotaz PocetUpominek
SELECT Upominky.Klient, Count(Upominky.Vypujcni_den) AS CountOfVypujcni_den
FROM Upominky
GROUP BY Upominky.Klient;
5.3.1.12
Dotaz PropadleRezervace
SELECT Rezervace.Datum, Rezervace.Rezervace_od, Rezervace.Rezervace_do, Rezervace.Klient,
Rezervace.Film, Rezervace.Vyrizena
FROM Rezervace
WHERE (((Rezervace.Rezervace_do)<Date()) AND ((Rezervace.Vyrizena)=False));
5.3.1.13
Dotaz PujceneFilmy
SELECT Vypujcka.Datum, Vypujcka.Klient, Vypujcka.Nazev_filmu, Vypujcka.Celkem_dnu
FROM Vypujcka
WHERE (((Vypujcka.Vypujcni_den)=1));
46
5.3.1.14
Dotaz PujcenyDo
SELECT DISTINCT PujcenyDoPom3.Nazev_filmu, PujcenyDoPom3.MinOfPrvniDen,
PujcenyDoPom3.PujcenyDo, PujcenyDoPom2.IDklient AS IDklient, PujcenyDoPom2.Klienti AS
Klient, PujcenyDoPom2.Celkem_dnu
FROM PujcenyDoPom3 LEFT JOIN PujcenyDoPom2 ON PujcenyDoPom3.PujcenyDo =
PujcenyDoPom2.PujcenyDo;
5.3.1.15
Dotaz PujcenyDoPom1
SELECT Vypujcka.Datum, Vypujcka.Nazev_filmu, Film.Pujceny, [Klienti]![Jmeno] & " " &
[Klienti]![Prijmeni] & " " AS Klienti, Klienti.IDklient, Vypujcka.Vypujcni_den,
Vypujcka.Celkem_dnu, [Vypujcka]![Datum]-[Vypujcka]![Vypujcni_den]+1 AS PrvniDen
FROM Klienti INNER JOIN (Film INNER JOIN Vypujcka ON Film.IDfilmu = Vypujcka.Nazev_filmu) ON
Klienti.IDklient = Vypujcka.Klient
WHERE (((Vypujcka.Datum)<Date()+1) AND ((Film.Pujceny)=True) AND ((Vypujcka.Vypujcni_den)>0));
5.3.1.16
Dotaz PujcenyDoPom2
SELECT PujcenyDoPom1.Nazev_filmu, PujcenyDoPom1.Celkem_dnu, Min(PujcenyDoPom1.PrvniDen) AS
MinOfPrvniDen, PujcenyDoPom1.Klienti, PujcenyDoPom1.IDklient, [PrvniDen]+[Celkem_dnu]-1
AS PujcenyDo, PujcenyDoPom1.Pujceny
FROM PujcenyDoPom1
GROUP BY PujcenyDoPom1.Nazev_filmu, PujcenyDoPom1.Celkem_dnu, PujcenyDoPom1.Klienti,
PujcenyDoPom1.IDklient, [PrvniDen]+[Celkem_dnu]-1, PujcenyDoPom1.Pujceny
ORDER BY [PrvniDen]+[Celkem_dnu]-1 DESC;
5.3.1.17
Dotaz PujcenyDoPom3
SELECT PujcenyDoPom2.Nazev_filmu, Max(PujcenyDoPom2.MinOfPrvniDen) AS MinOfPrvniDen,
Max(PujcenyDoPom2.PujcenyDo) AS PujcenyDo
FROM PujcenyDoPom2
GROUP BY PujcenyDoPom2.Nazev_filmu;
5.3.1.18
Dotaz RezervaceDo
SELECT Rezervace.Film, Rezervace.Klient, Rezervace.Rezervace_od, Rezervace.Rezervace_do,
Rezervace.Vyrizena
FROM Rezervace
WHERE (((Rezervace.Rezervace_od)<=Date()) AND ((Rezervace.Rezervace_do)>=Date()) AND
((Rezervace.Vyrizena)=False));
5.3.1.19
Dotaz RezervaceOd
SELECT RezervaceOdPom.Film, NoveRezervace.Klient, RezervaceOdPom.MinOfRezervace_od,
NoveRezervace.Rezervace_do
FROM RezervaceOdPom LEFT JOIN NoveRezervace ON RezervaceOdPom.MinOfRezervace_od =
NoveRezervace.Rezervace_od;
5.3.1.20
Dotaz RezervaceOdPom
SELECT NoveRezervace.Film, Min(NoveRezervace.Rezervace_od) AS MinOfRezervace_od
FROM NoveRezervace
GROUP BY NoveRezervace.Film;
5.3.1.21
Dotaz Reziser
SELECT Herci_Reziseri.IDhercireziser AS IDreziser, Herci_Reziseri.Jmeno AS JmenoR,
Herci_Reziseri.Prijmeni AS PrijmeniR, Herci_Reziseri.Zeme, FilmOsoba.Film, [Prijmeni] & " " &
[Jmeno] AS Reziser
FROM Herci_Reziseri INNER JOIN FilmOsoba ON Herci_Reziseri.IDhercireziser = FilmOsoba.Osoba
WHERE (((FilmOsoba.Herec)=False));
47
5.3.1.22
Dotaz SumaAktualR
SELECT Klienti.IDklient, Klienti.Prijmeni, Count(RezervaceDo.Film) AS CountOfFilm
FROM Klienti LEFT JOIN RezervaceDo ON Klienti.IDklient = RezervaceDo.Klient
GROUP BY Klienti.IDklient, Klienti.Prijmeni;
5.3.1.23
Dotaz SumaNovychR
SELECT Klienti.IDklient, Klienti.Prijmeni, Count(NoveRezervace.Film) AS CountOfFilm
FROM Klienti LEFT JOIN NoveRezervace ON Klienti.IDklient = NoveRezervace.Klient
GROUP BY Klienti.IDklient, Klienti.Prijmeni;
5.3.1.24
Dotaz SumaPropadlychR
SELECT Klienti.IDklient, Klienti.Prijmeni, Count(PropadleRezervace.Film) AS CountOfFilm
FROM Klienti LEFT JOIN PropadleRezervace ON Klienti.IDklient = PropadleRezervace.Klient
GROUP BY Klienti.IDklient, Klienti.Prijmeni;
5.3.1.25
Dotaz SumaRezervaci
SELECT Rezervace.Klient, Rezervace.Film
FROM Rezervace
GROUP BY Rezervace.Klient, Rezervace.Film;
5.3.1.26
Dotaz SumaVyrizenychR
SELECT Klienti.IDklient, Count(VyrizeneRezervace.Film) AS CountOfFilm
FROM Klienti LEFT JOIN VyrizeneRezervace ON Klienti.IDklient = VyrizeneRezervace.Klient
GROUP BY Klienti.IDklient;
5.3.1.27
Dotaz Upominky
SELECT Vypujcka.Klient, Vypujcka.Nazev_filmu, Vypujcka.Datum, Vypujcka.Cena, Vypujcka.Vypujcni_den,
Vypujcka.Celkem_dnu
FROM Vypujcka
WHERE (((Vypujcka.Vypujcni_den)<0));
5.3.1.28
Dotaz UpominkyKlienta
SELECT Klienti.IDklient, Klienti.Jmeno, Klienti.Prijmeni, [Jmeno]+" "+[Prijmeni] AS Klient,
Sum(UpominkyKlientaPom.Cena) AS Utrata, Count(UpominkyKlientaPom.Vypujcni_den) AS Pocet,
Sum(Abs([Vypujcni_den])) AS Dnu
FROM Klienti LEFT JOIN UpominkyKlientaPom ON Klienti.IDklient = UpominkyKlientaPom.Klient
GROUP BY Klienti.IDklient, Klienti.Jmeno, Klienti.Prijmeni, [Jmeno]+" "+[Prijmeni]
ORDER BY Count(UpominkyKlientaPom.Vypujcni_den) DESC;
5.3.1.29
Dotaz UpominkyKlientaPom
SELECT Vypujcka.Klient, Vypujcka.Nazev_filmu, Vypujcka.Datum, Vypujcka.Cena, Vypujcka.Vypujcni_den
FROM Vypujcka
WHERE (((Vypujcka.Datum)>=DatumOd() And (Vypujcka.Datum)<=DatumDo()) AND
((Vypujcka.Vypujcni_den)<0));
5.3.1.30
Dotaz UtrataKlienta
SELECT UtrataKlientaPom.Klient, UtrataKlientaPom.Nazev_filmu, UtrataKlientaPom.Datum1dne AS Datum,
Sum(UtrataKlientaPom.Cena) AS SumOfCena, UtrataKlientaPom.Upominka
FROM UtrataKlientaPom
GROUP BY UtrataKlientaPom.Klient, UtrataKlientaPom.Nazev_filmu, UtrataKlientaPom.Datum1dne,
UtrataKlientaPom.Upominka;
48
5.3.1.31
Dotaz UtrataKlientaPom
SELECT Vypujcka.Datum, Vypujcka.Klient, Vypujcka.Nazev_filmu, Vypujcka.Cena, Vypujcka.Vypujcni_den,
Vypujcka.Celkem_dnu, IIf([Vypujcni_den]>1,[Datum]-[Vypujcni_den]+1,[Datum]) AS Datum1dne,
IIf([Vypujcni_den]<0,True,False) AS Upominka
FROM Vypujcka;
5.3.1.32
Dotaz UtrataKlientu
SELECT Klienti.IDklient, Klienti.Prijmeni, Klienti.Jmeno, [Jmeno]+" "+[Prijmeni] AS Klient,
Sum(UtrataKlientuPom.SumOfCena) AS Celkem
FROM UtrataKlientuPom RIGHT JOIN Klienti ON UtrataKlientuPom.Klient = Klienti.IDklient
GROUP BY Klienti.IDklient, Klienti.Prijmeni, Klienti.Jmeno, [Jmeno]+" "+[Prijmeni];
5.3.1.33
Dotaz UtrataKlientuPom
SELECT Vypujcka.Klient, Sum(Vypujcka.Cena) AS SumOfCena, Vypujcka.Datum
FROM Vypujcka
GROUP BY Vypujcka.Klient, Vypujcka.Datum
HAVING (((Vypujcka.Datum)>=DatumOd() And (Vypujcka.Datum)<=DatumDo()));
5.3.1.34
Dotaz VydelekFilmu
SELECT Film.IDfilmu, Film.Nazev_filmu, Sum(VydelekFilmuPom.SumOfCena) AS SumOfSumOfCena
FROM VydelekFilmuPom RIGHT JOIN Film ON VydelekFilmuPom.IDfilmu = Film.IDfilmu
GROUP BY Film.IDfilmu, Film.Nazev_filmu
ORDER BY Sum(VydelekFilmuPom.SumOfCena) DESC;
5.3.1.35
Dotaz VydelekFilmuPom
SELECT Film.IDfilmu, Sum(Vypujcka.Cena) AS SumOfCena, Vypujcka.Datum
FROM Film INNER JOIN Vypujcka ON Film.IDfilmu = Vypujcka.Nazev_filmu
GROUP BY Film.IDfilmu, Vypujcka.Datum
HAVING (((Vypujcka.Datum)>=DatumOd() And (Vypujcka.Datum)<=DatumDo()));
5.3.1.36
Dotaz VydelekFirmy
SELECT Sum(VydelekFilmuPom.SumOfCena) AS SumOfSumOfCena
FROM VydelekFilmuPom
ORDER BY Sum(VydelekFilmuPom.SumOfCena) DESC;
5.3.1.37
Dotaz VydelekZanru
SELECT Zanr.IDzanru, Zanr.Zanr, Sum(VydelekZanruPom.SumOfCena) AS SumOfSumOfCena
FROM VydelekZanruPom RIGHT JOIN Zanr ON VydelekZanruPom.Zanr = Zanr.IDzanru
GROUP BY Zanr.IDzanru, Zanr.Zanr
ORDER BY Sum(VydelekZanruPom.SumOfCena) DESC;
5.3.1.38
Dotaz VydelekZanruPom
SELECT Film.Zanr, Sum(Vypujcka.Cena) AS SumOfCena, Vypujcka.Datum
FROM Film INNER JOIN Vypujcka ON Film.IDfilmu = Vypujcka.Nazev_filmu
GROUP BY Film.Zanr, Vypujcka.Datum
HAVING (((Vypujcka.Datum)>=DatumOd() And (Vypujcka.Datum)<=DatumDo()))
ORDER BY Sum(Vypujcka.Cena) DESC;
5.3.1.39
Dotaz VyrizeneRezervace
SELECT Rezervace.Datum, Rezervace.Rezervace_od, Rezervace.Rezervace_do, Rezervace.Klient,
Rezervace.Film
FROM Rezervace
WHERE (((Rezervace.Vyrizena)=True));
49
5.3.2
Zdrojovekody formularu
5.3.2.1
Formular BlokaceHesla
Option Compare Database
Option Explicit
Private Sub Form_Current()
’ dame focus na tlacitko zpet
Me.zpet.SetFocus
End Sub
Private Sub Form_Load()
’ pri zavedeni formulare zjistujeme jestli obsahuje nejaky zaznam
If Me.CurrentRecord = 0 Then
DoCmd.Close
Form_Iklienti.Visible = True
MsgBox "V tomto obdobı nebyl nalezen z a dny za znam."
Else
zpet.SetFocus
End If
End Sub
Private Sub zpet_Click()
’ navrat do formulare Iklienti
Navrat
Form_Iklienti.Visible = True
End Sub
5.3.2.2
Formular DnesniRezervace
Option Compare Database
Option Explicit
Private Sub Form_Load()
’ zjistime jestli jsou nejake dnesni rezervace
If Me.CurrentRecord = 0 Then
’ pokud zadna rezervace neni, tak o tom informujeme
Select Case AktualForm
Case "rezervace"
Form_Rezervace.Visible = True
Case "iKlienti"
Form_Iklienti.Visible = True
End Select
DoCmd.Close acForm, "dnesnirezervace", acSaveNo
MsgBox "Nenı z a dna aktua lnı rezervace."
Else
’ pokud nejaka rezervace je
Me.zpet.SetFocus
End If
End Sub
Private Sub ok_Click()
’tlacitko pro vypujceni rezervovaneho filmu
On Error GoTo Err_ok_Click
50
Dim stDocName As String, pom1 As Integer, pom2 As Integer, pom3 As Boolean
Dim stLinkCriteria As String, pom4 As Integer
Dim pom5 As Date, pom6 As Date
’ z formulare film zjistime cenu a delku vypujcky, pokud je fim vybrany
stDocName = "iFilm"
stLinkCriteria = "[IDfilmu] = " & Me![film]
DoCmd.OpenForm stDocName, , , stLinkCriteria
pom1 = Form_Ifilm.Cena_za_1_den.Value
pom2 = Form_Ifilm.Delka_vypujcky.Value
pom3 = Form_Ifilm.Pujceny.Value
If Form_Ifilm.RezervaceOd.Value > Date - 1 Then pom5 = Form_Ifilm.RezervaceOd.Value
If Form_Ifilm.PujcenyDo.Value > Date - 1 Then pom6 = Form_Ifilm.PujcenyDo.Value
DoCmd.Close acForm, stDocName, acSaveNo
’ pokud je film jeste pujceny, tak vyskocime
If pom3 Then
MsgBox "Film je az do " & pom6 & " pujc eny . Vyberte jiny ."
Exit Sub
End If
’ zjistime na jak dlouho si muzeme film vypujcit (podle rezervace od)
If (pom2 > pom5 - Date) And (pom5 > Date) Then
pom2 = pom5 - Date
End If
’ otevreme formular vypujcka a dosadime do nej nejaka data
stDocName = "Vypujcka"
stLinkCriteria = ""
DoCmd.OpenForm stDocName, , , stLinkCriteria
DoCmd.GoToRecord , , acNewRec
Me.Vyrizena.Value = True
’ zneviditelnime formular
Form_DnesniRezervace.Visible = False
Form_Vypujcka.zpet.Tag = "DnesniRezervace"
Form_Vypujcka.Nazev_filmu.Value = Me.film.Value
Form_Vypujcka.Klient.Value = Me.Klient.Value
Form_Vypujcka.Datum.Value = Date
Form_Vypujcka.pridej.SetFocus
’ zde do promennŘ Pom4 zada me cenu za rezervaci
’ napr. za kazdy rezervovany den do vyzvednuti se plati 2 Kc
’
pom4 = 2 * (Date - Me.Rezervace_od.Value + 1)
’ v nasem pripade jednotna cena za rezervaci je 5 Kc
pom4 = 5
Form_Vypujcka.Cena.Value = pom1 + pom4
Form_Vypujcka.cenafilmu.Value = pom1
Form_Vypujcka.Celkem_dnu = pom2
Form_Vypujcka.Klient.Tag = "ano"
Form_Vypujcka.Nazev_filmu.Tag = "ano"
MaxDnu = pom2
If MaxDnu > 1 Then Form_Vypujcka.minus.Enabled = True
Exit_ok_Click:
Exit Sub
51
Err_ok_Click:
MsgBox Err.Description
Resume Exit_ok_Click
End Sub
Private Sub zpet_Click()
’ navrat do formulare, ze ktereho jsme prisli
Navrat
Select Case AktualForm
Case "rezervace"
Form_Rezervace.Visible = True
Case "iKlienti"
Form_Iklienti.Visible = True
End Select
End Sub
5.3.2.3
Formular DnesniRezervaceInfo
’ tento formula r nema zdrojovy ko d a slouz ı jen jako podformula r
5.3.2.4
Formular DnesPujceno
Option Compare Database
Option Explicit
Private Sub Form_Current()
’ u kazdeho zaznamu pocitamedatum vypujcky a do kdy je film pujceny
If Me.Vypujcni_den.Value = 1 Then
’ film mel byt jiz vracen
Datum.Value = prvniden.Value
pujceno.Value = Datum.Value + Celkem_dnu.Value - 1
Else
’ film je aktualne pujcen
Datum.Value = prvniden.Value - Me.Vypujcni_den.Value + 1
pujceno.Value = Datum.Value + Celkem_dnu.Value - 1
End If
If pujceno.Value < Date Then
Datum.ForeColor = 255
pujceno.ForeColor = 255
Else
Datum.ForeColor = 0
pujceno.ForeColor = 0
End If
End Sub
5.3.2.5
Formular DnesPujcenoInfo
’ tento formula r slouz ı jen jako podformula r
Option Compare Database
Option Explicit
Private Sub Form_Current()
’ pro kazdy zaznam pocitame datum vypujcky a do kdy ma byt film vracen
If Me.Vypujcni_den.Value = 1 Then
’ film mel byt jiz vracen
52
Datum.Value = prvniden.Value
pujceno.Value = Datum.Value + Celkem_dnu.Value - 1
Else
’ film je aktualne pujcen
Datum.Value = prvniden.Value - Me.Vypujcni_den.Value + 1
pujceno.Value = Datum.Value + Celkem_dnu.Value - 1
End If
If pujceno.Value < Date Then
Datum.ForeColor = 255
pujceno.ForeColor = 255
Else
Datum.ForeColor = 0
pujceno.ForeColor = 0
End If
End Sub
5.3.2.6
Formular Film
Option Compare Database
Option Explicit
Private Sub Rok_vyroby_AfterUpdate()
’ pocitani delky vypujcky v zavislosti na roky vyroby filmu
Dim p1 As Integer, p2 As Integer, Rok As Integer
p1 = Rok_vyroby.Value
Rok = Year(Date)
Select Case p1
Case Is >= (Rok - 1)
p2 = 2
Case Is = (Rok - 2), (Rok - 3)
p2 = 3
Case Is = (Rok - 4), (Rok - 5), (Rok - 6)
p2 = 4
Case Is = (Rok - 7), (Rok - 8), (Rok - 9), (Rok - 10)
p2 = 5
Case Is = (Rok - 11), (Rok - 12), (Rok - 13), (Rok - 14), (Rok - 15)
p2 = 6
Case Is < (Rok - 15)
p2 = 7
Case Else
MsgBox "Chybne zadane datum vyroby"
End Select
Me.Delka_vypujcky.Value = p2
End Sub
Private Sub reziser_Click()
’ prirazovani rezisera k filmu
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_reziser_Click
Form_Film.Visible = False
DoCmd.GoToRecord acDataForm, "Film", acPrevious
DoCmd.GoToRecord acDataForm, "Film", acNext
stDocName = "Obsazeni"
53
’ otevreni formulare Obsazeni
DoCmd.OpenForm stDocName, , , stLinkCriteria
DoCmd.GoToRecord , , acNewRec
’ predvyplneni nekterych udaju
Form_Obsazeni.Herec.Value = False
Form_Obsazeni.film.Value = Me.Nazev_filmu.Value
Form_Obsazeni.IDfilmu.Value = Me.IDfilmu.Value
Exit_reziser_Click:
Exit Sub
Err_reziser_Click:
MsgBox Err.Description
Form_Film.Visible = True
Resume Exit_reziser_Click
End Sub
Private Sub herci_Click()
’ prirazovani herce k filmu
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_herci_Click
Form_Film.Visible = False
DoCmd.GoToRecord acDataForm, "Film", acPrevious
DoCmd.GoToRecord acDataForm, "Film", acNext
stDocName = "Obsazeni"
’ otevreni formulare Obsazeni
DoCmd.OpenForm stDocName, , , stLinkCriteria
DoCmd.GoToRecord , , acNewRec
’ predvyplneni nekterych udaju
Form_Obsazeni.Herec.Value = True
Form_Obsazeni.film.Value = Me.Nazev_filmu.Value
Form_Obsazeni.IDfilmu.Value = Me.IDfilmu.Value
Exit_herci_Click:
Exit Sub
Err_herci_Click:
MsgBox Err.Description
Form_Film.Visible = True
Resume Exit_herci_Click
End Sub
Private Sub zpet_Click()
’ navrat do formulare FirmaData
Navrat
Form_FirmaData.Visible = True
End Sub
5.3.2.7
Formular Firma
Option Compare Database
Option Explicit
54
Private Sub Form_Load()
’ zavedeni formulare
Me.zpet.SetFocus
End Sub
Private Sub hesla_Click()
’ otevreni fomulare pro prideleni novych hesel
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_info_Click
stDocName = "NoveHeslo"
stLinkCriteria = "[Vyrizeno]=false"
’ otevreni formulare NoveHeslo
’ ale jen tech zaznamu, ktere jeste nebyly vyrizeny
Form_Firma.Visible = False
DoCmd.OpenForm stDocName, , , stLinkCriteria
If Form_NoveHeslo.CurrentRecord = 0 Then
’ neni zadny pozadavek na zmenu hesla
DoCmd.Close acForm, stDocName, acSaveNo
Form_Firma.Visible = True
MsgBox "Nenı z a dny poz adavek na zmenu hesla."
End If
Exit_info_Click:
Exit Sub
Err_info_Click:
MsgBox Err.Description
Resume Exit_info_Click
End Sub
Private Sub hospodareni_Click()
’ otevreni formulare s daty o hospodareni firmy
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_klient_Click
stDocName = "FirmaInfo"
’ vlastni otevreni formulare FirmaInfo
DoCmd.OpenForm stDocName, , , stLinkCriteria
Form_Firma.Visible = False
Exit_klient_Click:
Exit Sub
Err_klient_Click:
MsgBox Err.Description
Resume Exit_klient_Click
End Sub
Private Sub stav_Click()
’ otevreni formulare s aktualnimi informacemi firmy
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_film_Click
55
stDocName = "FirmaStav"
’ vlastni otevreni formulare FirmaStav
DoCmd.OpenForm stDocName, , , stLinkCriteria
Form_Firma.Visible = False
Exit_film_Click:
Exit Sub
Err_film_Click:
MsgBox Err.Description
Resume Exit_film_Click
End Sub
Private Sub vkladani_Click()
’ otevreni formulare pro vyber vkladani novych udaju typu:
’ klient, film, herci, reziser, zanr, zeme
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_info_Click
stDocName = "FirmaData"
’ vlastni otevreni formulare FirmaData
DoCmd.OpenForm stDocName, , , stLinkCriteria
Form_Firma.Visible = False
Exit_info_Click:
Exit Sub
Err_info_Click:
MsgBox Err.Description
Resume Exit_info_Click
End Sub
Private Sub zpet_Click()
’ navrat do formulare Nabidka
Navrat
Form_Nabidka.Visible = True
’ zobrazovani aktualniho stavu zadosti o nove heslo
If StavZadosti > 0 Then
Form_Nabidka.Pocet.Value = StavZadosti
Else
Form_Nabidka.Pocet.Value = 0
End If
End Sub
Private Sub konfigurace_Click()
’ spusteni konfigurace pro nastaveni posilani E-mailu
Dim stAppName As String
On Error GoTo Err_konfigurace_Click
stAppName = "C:\Tools\WWW\videopujcovna\send\send.EXE"
Call Shell(stAppName, 1)
Exit_konfigurace_Click:
Exit Sub
56
Err_konfigurace_Click:
MsgBox Err.Description
Resume Exit_konfigurace_Click
End Sub
5.3.2.8
Formular FirmaData
Option Compare Database
Option Explicit
Private Sub Form_Load()
’ zavedeni formulare
Me.zpet.SetFocus
End Sub
Private Sub HerecReziser_Click()
’ otevreni formulare pro pridavani hercu nebo reziseru
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_lide_Click
stDocName = "Lide"
’ vlastni otevreni formulare Lide
DoCmd.OpenForm stDocName, , , stLinkCriteria
DoCmd.GoToRecord , , acNewRec
Form_FirmaData.Visible = False
Exit_lide_Click:
Exit Sub
Err_lide_Click:
MsgBox Err.Description
Resume Exit_lide_Click
End Sub
Private Sub klient_Click()
’ otevreni formulare pro pridavani klientu
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_klient_Click
stDocName = "Klienti"
’ vlastni otevreni formulare Klienti
DoCmd.OpenForm stDocName, , , stLinkCriteria
Form_Klienti.AllowAdditions = True
DoCmd.GoToRecord , , acNewRec
Form_FirmaData.Visible = False
Exit_klient_Click:
Exit Sub
Err_klient_Click:
MsgBox Err.Description
Resume Exit_klient_Click
End Sub
57
Private Sub film_Click()
’ otevreni formulare pro pridavani filmu
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_film_Click
stDocName = "Film"
’ vlastni otevrni formulare Film
DoCmd.OpenForm stDocName, , , stLinkCriteria
Form_Film.AllowAdditions = True
DoCmd.GoToRecord , , acNewRec
Form_FirmaData.Visible = False
Exit_film_Click:
Exit Sub
Err_film_Click:
MsgBox Err.Description
Resume Exit_film_Click
End Sub
Private Sub zpet_Click()
’ navrat do formulare Firma
Navrat
Form_Firma.Visible = True
End Sub
Private Sub zeme_Click()
’ otevreni formulare pro pridavani nove zeme
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_zeme_Click
stDocName = "Zeme"
’ vlastni otevreni formulare Zeme
DoCmd.OpenForm stDocName, , , stLinkCriteria
DoCmd.GoToRecord , , acNewRec
Form_FirmaData.Visible = False
Exit_zeme_Click:
Exit Sub
Err_zeme_Click:
MsgBox Err.Description
Resume Exit_zeme_Click
End Sub
5.3.2.9
Formular FirmaInfo
Option Compare Database
Option Explicit
Private Sub Do_Click()
’ zobrazeni kalendare pro datum OD
kalend = "FirmaDo"
58
OtevreniKalendare
End Sub
Private Sub Do_GotFocus()
’ test na datum DO musi byt mensi nez OD
If Me.Do.Value < Me.Od.Value And Me.Od.Value <> "" Then
MsgBox "Musıte zadat vyssı datum, nez je " & Str(Me.Od.Value) & "."
Me.Do.Value = ""
Me.Do.SetFocus
End If
End Sub
Private Sub Form_Load()
’ pri zavedeni formulare prednastavime nektera data
Me.firma.Value = 1
Me.zanr.Value = 1
Me.film.Value = 1
Me.utrata.Value = 1
Me.upominka.Value = 1
Me.vsechZanr.Value = False
Me.VsechFilm.Value = False
Me.vsechUtrata.Value = False
Me.vsechUpominka.Value = False
Me.zpet.SetFocus
End Sub
Private Sub Od_Click()
’ zobrazeni kalendare pro datum OD
kalend = "FirmaOd"
OtevreniKalendare
End Sub
Private Sub Od_GotFocus()
’ test na datum OD musi byt mensi nez DO
If Me.Do.Value < Me.Od.Value And Me.Do.Value <> "" And Me.Od.Value <> "" Then
MsgBox "Musıte zadat niz sı datum, nez je " & Str(Me.Do.Value) & "."
Me.Od.Value = ""
Me.Od.SetFocus
End If
End Sub
Private Sub zobrazFilm_Click()
’ zobrazeni informaci o vydelku za filmy podle zadanych kriterii
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_zobraz_Click
stDocName = "VydelekFilmu"
If Me.VsechFilm.Value = False Then
’ chceme jen konkretni film
stLinkCriteria = "[IDfilmu]=" & Me![film]
Else
’ zobrazeni vsech filmu
59
stLinkCriteria = ""
End If
’ zadame kriteria na datum od a datum do
If IsNull(Me.Od.Value) Then
OdDatum = "1.1.2000"
Else
OdDatum = Me.Od.Value
End If
If IsNull(Me.Do.Value) Then
DoDatum = Date
Else
DoDatum = Me.Do.Value
End If
’ vlastni otevreni formulare s podminkami
DoCmd.OpenForm stDocName, , , stLinkCriteria
’ doplneni nekterych udaju
Form_VydelekFilmu.Od.Value = Me.Od.Value
Form_VydelekFilmu.Do.Value = Me.Do.Value
Form_FirmaInfo.Visible = False
Exit_zobraz_Click:
Exit Sub
Err_zobraz_Click:
MsgBox Err.Description
Resume Exit_zobraz_Click
End Sub
Private Sub zobrazFirmu_Click()
’ zobrazeni informaci o vydelku firmy podle zadanych kriterii
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_zobraz_Click
stDocName = "VydelekFirmy"
’ nejprve vytvorime kriteria na otevreni formulare
Select Case Me.firma.Value
Case 1: ’ podle zadanych datumu
If IsNull(Me.Od.Value) Then
OdDatum = "1.1.2000"
Else
OdDatum = Me.Od.Value
End If
If IsNull(Me.Do.Value) Then
DoDatum = Date
Else
DoDatum = Me.Do.Value
End If
Case 2: ’ dnes
OdDatum = Date
DoDatum = Date
60
Case 3: ’ vcera
OdDatum = Date - 1
DoDatum = Date - 1
Case 4: ’ tento mesic
OdDatum = Date - Day(Date) + 1
DoDatum = Date
Case 5: ’ minuly mesic
DoDatum = Date - Day(Date)
OdDatum = DoDatum - Day(DoDatum) + 1
Case 6: ’ tento rok
OdDatum = "1.1." & Str(Year(Date))
DoDatum = Date
Case 7: ’ minuly rok
OdDatum = "1.1." & Str(Year(Date) - 1)
DoDatum = "31.12." & Str(Year(Date) - 1)
End Select
’ vlastni otevreni formulare s podminkami
DoCmd.OpenForm stDocName, , , stLinkCriteria
’ doplneni nekterych udaju
If Me.firma.Value = 1 Then
Form_VydelekFirmy.Od.Value = Me.Od.Value
Form_VydelekFirmy.Do.Value = Me.Do.Value
Else
Form_VydelekFirmy.Od.Value = OdDatum
Form_VydelekFirmy.Do.Value = DoDatum
End If
Form_FirmaInfo.Visible = False
Exit_zobraz_Click:
Exit Sub
Err_zobraz_Click:
MsgBox Err.Description
Resume Exit_zobraz_Click
End Sub
Private Sub zobrazKlienta_Click()
’ zobrazeni informaci o utratach klientu
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_zobraz_Click
stDocName = "UtrataKlientu"
If Me.vsechUtrata.Value = False Then
’ chceme jen konkretniho klienta
stLinkCriteria = "[IDklient]=" & Me![utrata]
Else
’ zobrazeni vsech klientu
stLinkCriteria = ""
End If
61
’ zadame kriteria na datum od a datum do
If IsNull(Me.Od.Value) Then
OdDatum = "1.1.2000"
Else
OdDatum = Me.Od.Value
End If
If IsNull(Me.Do.Value) Then
DoDatum = Date
Else
DoDatum = Me.Do.Value
End If
’ vlasni otevreni formulare s podminkou
DoCmd.OpenForm stDocName, , , stLinkCriteria
’ doplneni nekterych udaju
Form_UtrataKlientu.Od.Value = Me.Od.Value
Form_UtrataKlientu.Do.Value = Me.Do.Value
Form_FirmaInfo.Visible = False
Exit_zobraz_Click:
Exit Sub
Err_zobraz_Click:
MsgBox Err.Description
Resume Exit_zobraz_Click
End Sub
Private Sub zobrazUtratu_Click()
’ zobrazeni informaci o utrate za upominky
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_zobraz_Click
stDocName = "UpominkyKlientu"
If Me.vsechUpominka.Value = False Then
’ chceme jen konkretniho klienta
stLinkCriteria = "[IDklient]=" & Me![upominka]
Else
’ zobrazeni vsech klientu
stLinkCriteria = ""
End If
’ zadame kriteria na datum od a datum do
If IsNull(Me.Od.Value) Then
OdDatum = "1.1.2000"
Else
OdDatum = Me.Od.Value
End If
If IsNull(Me.Do.Value) Then
DoDatum = Date
Else
DoDatum = Me.Do.Value
End If
’ vlastni otevreni formulare s podminkou
DoCmd.OpenForm stDocName, , , stLinkCriteria
62
’ doplneni nekterych udaju
Form_UpominkyKlientu.Od.Value = Me.Od.Value
Form_UpominkyKlientu.Do.Value = Me.Do.Value
Form_FirmaInfo.Visible = False
Exit_zobraz_Click:
Exit Sub
Err_zobraz_Click:
MsgBox Err.Description
Resume Exit_zobraz_Click
End Sub
Private Sub zobrazZanr_Click()
’ zobrazeni informaci o vydelku podle druhu zanru
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_zobraz_Click
stDocName = "VydelekZanru"
If Me.vsechZanr.Value = False Then
’ chceme jen konkretni zanr
stLinkCriteria = "[IDZanru]=" & Me![zanr]
Else
’ zobrazeni vsech zanru
stLinkCriteria = ""
End If
’ zadame kriteria na datum od a datum do
If IsNull(Me.Od.Value) Then
OdDatum = "1.1.2000"
Else
OdDatum = Me.Od.Value
End If
If IsNull(Me.Do.Value) Then
DoDatum = Date
Else
DoDatum = Me.Do.Value
End If
’ vlastni otevreni formulare s podminkou
DoCmd.OpenForm stDocName, , , stLinkCriteria
’ vyplneni nekterych udaju
Form_VydelekZanru.Od.Value = Me.Od.Value
Form_VydelekZanru.Do.Value = Me.Do.Value
Form_FirmaInfo.Visible = False
Exit_zobraz_Click:
Exit Sub
Err_zobraz_Click:
MsgBox Err.Description
Resume Exit_zobraz_Click
End Sub
63
Private Sub zpet_Click()
’ navrat zpet do formulare Firma
Navrat
Form_Firma.Visible = True
End Sub
5.3.2.10
Formular FirmaStav
Option Compare Database
Option Explicit
Private Sub Form_Load()
’ zavedeni formulare
Me.zpet.SetFocus
End Sub
Private Sub zpet_Click()
’ navrat do formulare Firma
Navrat
Form_Firma.Visible = True
End Sub
5.3.2.11
Formular Herci
’ tento formula r nema zdrojovy ko d a slouz ı jen jako podformula r
5.3.2.12
Formular Heslo
Option Compare Database
Option Explicit
Private Sub Potrvdit_Click()
’ pri uspesnem zopakovani noveho hesla provedeme zmenu hesla
If Not (Me.HesloN1.Value = Me.HesloN2.Value) Then
’ chybne zopakovane nove heslo
MsgBox "Chybne jste zopakovali novŘ heslo.", , "Chyba"
Exit Sub
Else
’ dobre zopakovane nove heslo, provedem zmenu hesla
Me.Heslo.Value = Me.HesloN1.Value
MsgBox "Zmena hesla probehla ďspesne.", , "Zmena hesla"
Me.HesloN1.Value = ""
Me.HesloN2.Value = ""
End If
End Sub
Private Sub zpet_Click()
’ navrat do formulare Iklienti
Navrat
Form_Iklienti.Visible = True
End Sub
64
5.3.2.13
Formular HledaniFilmu
Option Compare Database
Option Explicit
Private Sub Form_Load()
’ nastaveni fokusu na tlacitko Zpet
Me.zpet.SetFocus
End Sub
Private Sub vloz_Click()
’ provedeni vlozeni vybraneho filmu do formulare Nabidka
Dim Pom As Integer
Pom = Me.IDfilmu.Value
’ uzavreni formulare
Navrat
’ vlozeni vybraneho filmu
Form_Nabidka.Visible = True
Form_Nabidka.filmvyber.Value = Pom
Form_Nabidka.filmvyber.Tag = "ano"
Exit_vloz_Click:
Exit Sub
Err_vloz_Click:
MsgBox Err.Description
Resume Exit_vloz_Click
End Sub
Private Sub zpet_Click()
’ navrat do formulare Nabidka bez vlozeni filmu
Navrat
Form_Nabidka.Visible = True
End Sub
Private Sub hledej_Click()
’ vlastni vyhledavani filmu podle zadanych kriterii
Dim stDocName As String, krit(10) As String, I As Integer, J As Integer
Dim stLinkCriteria As String, kriterium As String, k As Integer
On Error GoTo Err_hledej_Click
I=1
k=1
stDocName = "VysledkyHledani1"
If Me.Rok_vyroby.Value <> "" Then
’ je zadano kriterium na rok vyroby filmu
krit(I) = "[Rok_vyroby] = " & Me![Rok_vyroby]
I=I+1
kriterium = "rok vy roby = " + Str(Me.Rok_vyroby.Value) + "; "
End If
If Me.zanr.Value <> "" Then
’ je zadano kriterium na zanr filmu
krit(I) = "[Zanr] = " & "’" & Me![zanr] & "’"
I=I+1
65
kriterium = kriterium + "z a nr = " + Me.zanr.Value + "; "
End If
If Me.zeme.Value <> "" Then
’ je zadano kriterium na zemi, kde byl film vyroben
krit(I) = "[Nazev_zeme] = " & "’" & Me![zeme] & "’"
I=I+1
kriterium = kriterium + "zeme = " + Me.zeme.Value + "; "
End If
If Me.Reziser.Value <> "" Then
’ je zadano kriterium na jmeno rezisera
’ pro zobrazeni vysledu je nutno pouzit jiny formular - VysledkyHledani2
krit(I) = "[Reziser] = " & "’" & Me![Reziser] & "’"
stDocName = "VysledkyHledani2"
k=2
I=I+1
kriterium = kriterium + "rez isŘ r = " + Me.Reziser.Value + "; "
End If
If Me.Herec.Value <> "" Then
’ je zadano kriterium na jmeno herce
’ pro zobrazeni vysledu je nutno pouzit jiny formular - VysledkyHledani2
krit(I) = "[Herci] = " & "’" & Me![Herec] & "’"
stDocName = "VysledkyHledani2"
k=2
I=I+1
kriterium = kriterium + "herec = " + Me.Herec.Value + "; "
End If
If Me.Delka_filmu.Value <> "" Then
’ je zadano kriterium na delku filmu
krit(I) = "[Delka_filmu] = " & Me![Delka_filmu]
I=I+1
kriterium = kriterium + "dŘ lka filmu = " + Str(Me.Delka_filmu.Value) + "; "
End If
If Me.Cena.Value <> "" Then
’ je zadano kriterium na cenu filmu
krit(I) = "[Cena_za_1_den] = " & Me![Cena]
I=I+1
kriterium = kriterium + "cena = " + Str(Me.Cena.Value) + "; "
End If
If Me.Delka_vypujcky.Value <> "" Then
’ je zadano kriterium na delku vypujcky filmu
krit(I) = "[Delka_vypujcky] = " & Me![Delka_vypujcky]
I=I+1
kriterium = kriterium + "dŘ lka vypujc ky = " + Str(Me.Delka_vypujcky.Value) + "; "
End If
If Me.Vypujceny = "Ano" Then
’ je zadano kriterium, ze film je vypujcen
krit(I) = "[Pujceny] = TRUE"
I=I+1
kriterium = kriterium + "film je vypujc eny ; "
Else
’ je zadano kriterium, ze film neni vypujcen
If Me.Vypujceny.Value = "Ne" Then
krit(I) = "[Pujceny] = FALSE"
I=I+1
kriterium = kriterium + "film nenı vypujc eny ; "
End If
End If
If I = 1 Then
MsgBox "Nebylo zada no z a dnŘ kritŘ rium vy beru"
66
Exit Sub
End If
’ pokud bylo zadano aspon jedno kriterim, tak je secteme
stLinkCriteria = krit(1)
For J = 2 To I - 1
stLinkCriteria = stLinkCriteria & " and " & krit(J)
Next J
Form_HledaniFilmu.Visible = False
’ vlastni otevreni formlare s podminkou
DoCmd.OpenForm stDocName, , , stLinkCriteria
’ nejdrive zjistujeme, jestli byl nalezen alespon jeden zaznam
’ a pokud ano, tak vyplnime nektere udaje do formulare s vysledky vyhledavani
Select Case k
Case 1:
If (Form_VysledkyHledani1.CurrentRecord = 1) And
IsNull(Form_VysledkyHledani1.Nazev_filmu.Value) Then
DoCmd.Close acForm, stDocName, acSaveNo
Form_HledaniFilmu.Visible = True
MsgBox "Vasemu kritŘ riu neodpovıda z a dny film."
Else
Form_VysledkyHledani1.Visible = True
Form_VysledkyHledani1.kriterium.Value = kriterium
End If
Case 2:
If (Form_VysledkyHledani2.CurrentRecord = 1) And
IsNull(Form_VysledkyHledani2.Nazev_filmu.Value) Then
DoCmd.Close acForm, stDocName, acSaveNo
Form_HledaniFilmu.Visible = True
MsgBox "Vasemu kritŘ riu neodpovıda z a dny film."
Else
Form_VysledkyHledani2.Visible = True
Form_VysledkyHledani2.kriterium.Value = kriterium
End If
End Select
Exit_hledej_Click:
Exit Sub
Err_hledej_Click:
MsgBox Err.Description
Resume Exit_hledej_Click
End Sub
5.3.2.14
Formular Ifilm
Option Compare Database
Option Explicit
Private Sub Form_Load()
’ pri zavedeni formulare zjistime jestli je film pujceny a pokud ne,
’ tak zneviditelnime policka PujcenyDo a Klient
If Me.Pujceny.Value = False Then
Me.PujcenyDo.Visible = False
Me.Klient.Visible = False
Else
’ dale pokud jiz bude upominka, zmenime barvu popredi na cervenou
67
If Me.PujcenyDo.Value < Date Then
Me.PujcenyDo.ForeColor = 255
Me.Klient.ForeColor = 255
End If
End If
’ pokud neni zadna rezevace, tak zneviditelnime policko rezervace
If Me.RezervaceOd.Value <> "" Then Me.rezervace.Visible = True
Me.zpet.SetFocus
End Sub
Private Sub rezervace_Click()
’ zobrazeni informaci o rezervaci
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_rezervace_Click
stDocName = "RezervaceInfo"
stLinkCriteria = "[Film] = " & Me![IDfilmu]
’ vlastni otevreni formulare RezervaceInfo s podminkou
DoCmd.OpenForm stDocName, , , stLinkCriteria
Form_Ifilm.Visible = False
Exit_rezervace_Click:
Exit Sub
Err_rezervace_Click:
MsgBox Err.Description
Resume Exit_rezervace_Click
End Sub
Private Sub zpet_Click()
’ navrat zpet do formulare odkud jsme sem prisli
Dim Tag As String
Tag = Me.zpet.Tag
Navrat
Select Case Tag
Case "vypujcka"
Form_Vypujcka.Visible = True
Case "nabidka"
Form_Nabidka.Visible = True
Case "rezervace"
Form_Rezervace.Visible = True
End Select
End Sub
5.3.2.15
Formular Iklienti
Option Compare Database
Option Explicit
Private Sub Blokace_Click()
’ odblokujeme nebo zablokujeme heslo
Dim a As Integer, stDocName As String, stLinkCriteria As String
stDocName = "Klienti"
stLinkCriteria = "[IDKlient] = " & Me![IDklient]
68
’ otevreni formulare klienti s podminkami a zneviditelnime ho
DoCmd.OpenForm stDocName, , , stLinkCriteria
Form_Klienti.Visible = False
If Form_Klienti.ZablokovaneHeslo.Value = True Then
’ pokud heslo je zablokovane tak ho odblokujeme a vyplnime
’ nektere udaje do formulare Klienti
Form_Klienti.ZablokovaneHeslo.Value = False
Form_Klienti.ZablokovanoRucne.Value = False
’ ulozime infomaci o odblokovani a uzavreme formular
DoCmd.Close acForm, stDocName, acSaveYes
’ vyplnime informace o blokaci do naseho fomulare
Me.BlokaceInfo.Enabled = False
Me.Blokace.Caption = "Zablokuj"
Me.StavHesla.Value = "Heslo nenı zablokova no."
Me.StavHesla.ForeColor = 0
Else
’ pokud neni heslo zablokovane, tak ho zablokujeme rucne
’ a vyplnime nektere udaje do formulare Klienti
Form_Klienti.ZablokovaneHeslo.Value = True
Form_Klienti.ZablokovanoRucne.Value = True
’ ulozime infomaci o rucnim zablokovani a uzavreme formular
DoCmd.Close acForm, stDocName, acSaveYes
’ vyplnime informace o blokaci do naseho fomulare
Me.BlokaceInfo.Enabled = False
Me.Blokace.Caption = "Odblokuj"
Me.StavHesla.Value = "Heslo je zablokova no."
Me.StavHesla.ForeColor = 255
End If
End Sub
Private Sub BlokaceDo_Click()
’ zobrazeni kalendare pro blokace hesla DO
kalend = "BlokaceDo"
OtevreniKalendare
End Sub
Private Sub BlokaceDo_GotFocus()
’ test na datum blokace filmu, DO musi byt mensi nez OD
If Me.BlokaceDo.Value < Me.BlokaceOd.Value And Me.BlokaceOd.Value <> "" Then
MsgBox "Musıte zadat vyssı datum, nez je " & Str(Me.BlokaceOd.Value) & "."
Me.BlokaceDo.Value = ""
Me.BlokaceDo.SetFocus
End If
End Sub
Private Sub BlokaceInfo_Click()
’ ukazeme, kdo a kdy pres internet zablokoval heslo
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_InfoBlokace_Click
stDocName = "BlokaceHesla"
69
stLinkCriteria = "[Klient]=" & Me![IDklient]
’ otevreme formular a tento formular zneviditelnime
Form_Iklienti.Visible = False
DoCmd.OpenForm stDocName, , , stLinkCriteria
If Form_BlokaceHesla.CurrentRecord = 0 Then
’ pokud neobsahuje zadne zaznamy, tak ho zavreme a dame o tom hlasku
DoCmd.Close acForm, stDocName, acSaveNo
Form_Iklienti.Visible = True
MsgBox "Zadny zaznam o blokaci hesla nebyl nalezen."
Else
’ pokud jsou nejake zaznamy, tak zneviditelnime nektera policka, ktera
’ se vyuzivaji pri vseobecnych informacich o blokacich
Form_BlokaceHesla.PopisOd.Visible = False
Form_BlokaceHesla.PopisDo.Visible = False
Form_BlokaceHesla.Od.Visible = False
Form_BlokaceHesla.Do.Visible = False
End If
Exit_InfoBlokace_Click:
Exit Sub
Err_InfoBlokace_Click:
MsgBox Err.Description
Resume Exit_InfoBlokace_Click
End Sub
Private Sub BlokaceOd_Click()
’ zobrazeni kalendare pro blokace hesla OD
kalend = "BlokaceOd"
OtevreniKalendare
End Sub
Private Sub BlokaceOd_GotFocus()
’ test na datum blokace filmu, OD musi byt mensi nez DO
If Me.BlokaceDo.Value < Me.BlokaceOd.Value And Me.BlokaceDo.Value <> "" And Me.BlokaceOd.Value
<> "" Then
MsgBox "Musıte zadat niz sı datum, nez je " & Str(Me.BlokaceDo.Value) & "."
Me.BlokaceOd.Value = ""
Me.BlokaceOd.SetFocus
End If
End Sub
Private Sub FilmyDo_Click()
’ zobrazeni kalendare pro pujcene filmy DO
kalend = "FilmyDo"
OtevreniKalendare
End Sub
Private Sub FilmyDo_GotFocus()
’ test na datum pujcenych filmu DO musi byt mensi nez OD
If Me.FilmyDo.Value < Me.FilmyOd.Value And Me.FilmyOd.Value <> "" Then
70
MsgBox "Musıte zadat vyssı datum, nez je " & Str(Me.FilmyOd.Value) & "."
Me.FilmyDo.Value = ""
Me.FilmyDo.SetFocus
End If
End Sub
Private Sub FilmyOd_Click()
’ zobrazeni kalendare pro pujcene filmy OD
kalend = "FilmyOd"
OtevreniKalendare
End Sub
Private Sub FilmyOd_GotFocus()
’ test na datum pujcenych filmu OD musi byt mensi nez DO
If Me.FilmyDo.Value < Me.FilmyOd.Value And Me.FilmyDo.Value <> "" And Me.FilmyOd.Value <> ""
Then
MsgBox "Musıte zadat niz sı datum, nez je " & Str(Me.FilmyDo.Value) & "."
Me.FilmyOd.Value = ""
Me.FilmyOd.SetFocus
End If
End Sub
Private Sub Form_Load()
’ pri nacitani zjistujeme zda je heslo zablokovane a podle toho nastavime nektere vlastnosti
’ dale nastavime aktualni datum a secteme rezervace
Me.Datum.Value = Date
Me.BlokaceInfo.Enabled = False
If Me.ZablokovaneHeslo.Value = True Then
’ pokud je heslo zablokovane
Me.StavHesla.Value = "Heslo je zablokova no."
Me.StavHesla.ForeColor = 255
Me.Blokace.Caption = "Odblokuj"
If Me.ZablokovanoRucne.Value = False Then
Me.BlokaceInfo.Enabled = True
End If
Else
’ pokud heslo neni zablokovane
Me.StavHesla.Value = "Heslo nenı zablokova no."
Me.StavHesla.ForeColor = 0
Me.Blokace.Caption = "Zablokuj"
End If
Me.CelkemRez.Value = Me.AktRez.Value+Me.VyrizRez.Value+Me.PropadRez.Value+Me.NoveRez.Value
Me.zpet.SetFocus
End Sub
Private Sub InfoBlokace_Click()
’ zobrazeni formulare zablokovane heslo, kde blokace probehla v rozmezi datumu
’ BlokaceOD - BlokaceDo, ktere byly zadany pomoci kalendare
Dim stDocName As String, stLinkCriteria1 As String, stLinkCriteria As String
On Error GoTo Err_informace_Click
stDocName = "BlokaceHesla"
’ nejprve vytvorime kriteria na otevreni formulare
71
stLinkCriteria1 = "[Klient] = " & Me![IDklient]
stLinkCriteria = KriteriaDatumu(Me.BlokaceOd.Value, Me.BlokaceDo.Value, stLinkCriteria1)
’ otevreme formular pujcene filmy a tento zneviditelnime
Form_Iklienti.Visible = False
DoCmd.OpenForm stDocName, , , stLinkCriteria
’ vyplnime nektere udaje
If Form_BlokaceHesla.CurrentRecord <> 0 Then
Form_BlokaceHesla.NavigationButtons = True
End If
Form_BlokaceHesla.Od.Value = Form_Iklienti.BlokaceOd.Value
Form_BlokaceHesla.Do.Value = Form_Iklienti.BlokaceDo.Value
Exit_informace_Click:
Exit Sub
Err_informace_Click:
MsgBox Err.Description
Resume Exit_informace_Click
End Sub
Private Sub infoVypujcka_Click()
’ zobrazeni formulare pujcene filmy, kde budou filmy pujcene klientem v rozmezi datumu
’ FilmyOD - FilmyDo, ktere byly zadany pomoci kalendare
Dim stDocName As String, stLinkCriteria1 As String, stLinkCriteria As String
On Error GoTo Err_informace_Click
stDocName = "pujcenefilmy"
’ nejprve vytvorime kriteria na otevreni formulare
stLinkCriteria1 = "[Klient] = " & Me![IDklient] & " and " & "[Celkem_dnu] > 0"
stLinkCriteria = KriteriaDatumu(Me.FilmyOd.Value, Me.FilmyDo.Value, stLinkCriteria1)
’ otevreme formular pujcene filmy a tento zneviditelnime
Form_Iklienti.Visible = False
DoCmd.OpenForm stDocName, , , stLinkCriteria
’ vyplnime nektere udaje
Form_PujceneFilmy.Od.Value = Form_Iklienti.FilmyOd.Value
Form_PujceneFilmy.Do.Value = Form_Iklienti.FilmyDo.Value
Exit_informace_Click:
Exit Sub
Err_informace_Click:
MsgBox Err.Description
Resume Exit_informace_Click
End Sub
Private Sub UpominkyDo_Click()
’ zobrazeni kalendare pro upominky Do
kalend = "UpominkyDo"
OtevreniKalendare
End Sub
72
Private Sub UpominkyDo_GotFocus()
’ test na datum upominek DO musi byt vetsi nez OD
If Me.UpominkyDo.Value < Me.UpominkyOd.Value And Me.UpominkyOd.Value <> "" Then
MsgBox "Musıte zadat vyssı datum, nez je " & Str(Me.UpominkyOd.Value) & "."
Me.UpominkyDo.Value = ""
Me.UpominkyDo.SetFocus
End If
End Sub
Private Sub UpominkyOd_Click()
’ zobrazeni kalendare pro upominky Od
kalend = "UpominkyOd"
OtevreniKalendare
End Sub
Private Sub UpominkyOd_GotFocus()
’ test na datum upominek OD musi byt mensi nez DO
If Me.UpominkyDo.Value < Me.UpominkyOd.Value And Me.UpominkyDo.Value <> "" And
Me.UpominkyOd.Value <> "" Then
MsgBox "Musıte zadat niz sı datum, nez je " & Str(Me.UpominkyDo.Value) & "."
Me.UpominkyOd.Value = ""
Me.UpominkyOd.SetFocus
End If
End Sub
Private Sub UtrataDo_Click()
’ zobrazeni kalendare pro utratu Do
kalend = "UtrataDo"
OtevreniKalendare
End Sub
Private Sub UtrataDo_GotFocus()
’ test na datum utraty DO musi byt vetsi nez OD
If Me.UtrataDo.Value < Me.UtrataOd.Value And Me.UtrataOd.Value <> "" Then
MsgBox "Musıte zadat vyssı datum, nez je " & Str(Me.UtrataOd.Value) & "."
Me.UtrataDo.Value = ""
Me.UtrataDo.SetFocus
End If
End Sub
Private Sub UtrataOd_Click()
’ zobrazeni kalendare pro utratu Od
kalend = "UtrataOd"
OtevreniKalendare
End Sub
Private Sub UtrataOd_GotFocus()
’ test na datum utraty OD musi byt mensi nez DO
If Me.UtrataDo.Value < Me.UtrataOd.Value And Me.UtrataDo.Value <> "" And Me.UtrataOd.Value <> ""
Then
73
MsgBox "Musıte zadat niz sı datum, nez je " & Str(Me.UtrataDo.Value) & "."
Me.UtrataOd.Value = ""
Me.UtrataOd.SetFocus
End If
End Sub
Private Sub zpet_Click()
’ navrat do formulare, ze ktereho jsme se sem dostali
Dim Tag As String
Tag = Me.zpet.Tag
Navrat
Select Case Tag
Case "vypujcka"
Form_Vypujcka.Visible = True
Case "nabidka"
Form_Nabidka.Visible = True
Case "rezervace"
Form_Rezervace.Visible = True
End Select
End Sub
Private Sub RezN_Click()
’ otevreni formulare s novymi rezervacemi
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_RezN_Click
stDocName = "NoveRezervace"
’ otevreme formular s podminkou
stLinkCriteria = "[Klient]=" & Me![IDklient]
Form_Iklienti.Visible = False
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_RezN_Click:
Exit Sub
Err_RezN_Click:
MsgBox Err.Description
Resume Exit_RezN_Click
End Sub
Private Sub RezV_Click()
’ otevreni formulare s vyrizenymi rezervacemi
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_RezV_Click
stDocName = "VyrizeneRezervace"
’ otevreme formular s podminkou
stLinkCriteria = "[Klient]=" & Me![IDklient]
Form_Iklienti.Visible = False
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_RezV_Click:
Exit Sub
74
Err_RezV_Click:
MsgBox Err.Description
Resume Exit_RezV_Click
End Sub
Private Sub RezP_Click()
’ otevreni formulare s propadlymi rezervacemi
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_RezP_Click
stDocName = "PropadleRezervace"
’ otevreme formular s podminkou
stLinkCriteria = "[Klient]=" & Me![IDklient]
Form_Iklienti.Visible = False
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_RezP_Click:
Exit Sub
Err_RezP_Click:
MsgBox Err.Description
Resume Exit_RezP_Click
End Sub
Private Sub AktualRez_Click()
’ otevreni formulare s aktualnimi rezervacemi
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_AktualRez_Click
AktualForm = "iklienti"
’ otevreme formular s podminkou
stDocName = "DnesniRezervace"
stLinkCriteria = "[Klient]=" & Me![IDklient]
Form_Iklienti.Visible = False
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_AktualRez_Click:
Exit Sub
Err_AktualRez_Click:
MsgBox Err.Description
Resume Exit_AktualRez_Click
End Sub
Private Sub InfoUpominky_Click()
’ zobrazeni formulare Upominky, kde budou upominky klienta v rozmezi datumu
’ UpominkyOD - UpominkyDo, ktere byly zadany pomoci kalendare
Dim stDocName As String, stLinkCriteria1 As String, stLinkCriteria As String
On Error GoTo Err_InfoUpominky_Click
stDocName = "UpominkyKlienta"
75
’ nejprve vytvorime kriteria na otevreni formulare
stLinkCriteria1 = "[Klient] = " & Me![IDklient]
stLinkCriteria = KriteriaDatumu(Me.UpominkyOd.Value, Me.UpominkyDo.Value, stLinkCriteria1)
’ otevreme formular pujcene filmy a tento zneviditelnime
Form_Iklienti.Visible = False
DoCmd.OpenForm stDocName, , , stLinkCriteria
’ vyplnime nektere udaje
Form_UpominkyKlienta.Od.Value = Form_Iklienti.UpominkyOd.Value
Form_UpominkyKlienta.Do.Value = Form_Iklienti.UpominkyDo.Value
Exit_InfoUpominky_Click:
Exit Sub
Err_InfoUpominky_Click:
MsgBox Err.Description
Resume Exit_InfoUpominky_Click
End Sub
Private Sub infoUtrata_Click()
’ zobrazeni formulare UtrataKlienta, kde bude utrata klienta v rozmezi datumu
’ UtrataOd - UtrataDo, ktere byly zadany pomoci kalendare
Dim stDocName As String, stLinkCriteria1 As String, stLinkCriteria As String
On Error GoTo Err_infoUtrata_Click
stDocName = "UtrataKlienta"
’ nejprve vytvorime kriteria na otevreni formulare
stLinkCriteria1 = "[Klient] = " & Me![IDklient]
stLinkCriteria = KriteriaDatumu(Me.UtrataOd.Value, Me.UtrataDo.Value, stLinkCriteria1)
’ otevreme formular pujcene filmy a tento zneviditelnime
Form_Iklienti.Visible = False
DoCmd.OpenForm stDocName, , , stLinkCriteria
’ vyplnime nektere udaje
Form_UtrataKlienta.Od.Value = Form_Iklienti.UtrataOd.Value
Form_UtrataKlienta.Do.Value = Form_Iklienti.UtrataDo.Value
Exit_infoUtrata_Click:
Exit Sub
Err_infoUtrata_Click:
MsgBox Err.Description
Resume Exit_infoUtrata_Click
End Sub
Private Sub heslo_Click()
’ otevreme fomular na zmenu hesla
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_heslo_Click
stDocName = "Heslo"
stLinkCriteria = "[IDklient]=" & Me![IDklient]
’ otevreme formular a tento formular zneviditelnime
76
Form_Iklienti.Visible = False
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_heslo_Click:
Exit Sub
Err_heslo_Click:
MsgBox Err.Description
Resume Exit_heslo_Click
End Sub
5.3.2.16
Formular Kalendar
Option Compare Database
Option Explicit
Private Sub Form_Load()
’ pri zavedeni formulare nastavime aktualni datum
Ovla dacıPrvekActiveX0.Value = Date
End Sub
Private Sub Ovla dacıPrvekActiveX0_Click()
’ v zavislosti na tom, odkud je kalendar zavolan, zapise vybrane datum
Select Case kalend
Case Is = "FirmaOd"
Form_FirmaInfo.Od.Value = Ovla dacıPrvekActiveX0.Value
Form_FirmaInfo.Od.SetFocus
Case Is = "FirmaDo"
Form_FirmaInfo.Do.Value = Ovla dacıPrvekActiveX0.Value
Form_FirmaInfo.Do.SetFocus
Case Is = "FilmyOd"
Form_Iklienti.FilmyOd.Value = Ovla dacıPrvekActiveX0.Value
Form_Iklienti.FilmyOd.SetFocus
Case Is = "FilmyDo"
Form_Iklienti.FilmyDo.Value = Ovla dacıPrvekActiveX0.Value
Form_Iklienti.FilmyDo.SetFocus
Case Is = "UtrataOd"
Form_Iklienti.UtrataOd.Value = Ovla dacıPrvekActiveX0.Value
Form_Iklienti.UtrataOd.SetFocus
Case Is = "UtrataDo"
Form_Iklienti.UtrataDo.Value = Ovla dacıPrvekActiveX0.Value
Form_Iklienti.UtrataDo.SetFocus
Case Is = "UpominkyOd"
Form_Iklienti.UpominkyOd.Value = Ovla dacıPrvekActiveX0.Value
Form_Iklienti.UpominkyOd.SetFocus
Case Is = "UpominkyDo"
Form_Iklienti.UpominkyDo.Value = Ovla dacıPrvekActiveX0.Value
Form_Iklienti.UpominkyDo.SetFocus
Case Is = "BlokaceOd"
Form_Iklienti.BlokaceOd.Value = Ovla dacıPrvekActiveX0.Value
Form_Iklienti.BlokaceOd.SetFocus
Case Is = "BlokaceDo"
Form_Iklienti.BlokaceDo.Value = Ovla dacıPrvekActiveX0.Value
Form_Iklienti.BlokaceDo.SetFocus
End Select
DoCmd.Close
End Sub
77
5.3.2.17
Formular KalendarRez
Option Compare Database
Option Explicit
Public PujcenyDo As Date
Public Tlacitka As Collection
Function PocetDnu(pMesic, pRok)
’ tato funkce vrati pocet dnu v zadanem mesici
Select Case pMesic
Case 1, 3, 5, 7, 8, 10, 12
PocetDnu = 31
Case 4, 6, 9, 11
PocetDnu = 30
Case 2
If IsDate("2/29/" & pRok) Then
PocetDnu = 29
Else
PocetDnu = 28
End If
Case Else
PocetDnu = -1
End Select
End Function
Sub Tisk(pVystup)
’ funkce pro vystup z kalendare
If kalend = "rezervace_do" Then
Form_NovaRezervace.Rezervace_do.Text = pVystup
Else
Form_NovaRezervace.Rezervace_od.Text = pVystup
End If
DoCmd.Close
Form_NovaRezervace.Visible = True
End Sub
Function PrvniDenMesice(libDen)
’ vrati cislo prvniho dne v mesici (1-pondeli,...)
Dim pPrvniDen
pPrvniDen = DateAdd("d", -(Day(libDen)), libDen)
PrvniDenMesice = WeekDay(pPrvniDen)
End Function
Function MoznoRezervovat(pDen, pMesic, pRok, pMin, pMax)
’ funkce zjistujici, jestli se da v dany den rezervovat film
Dim cDen As Date, J As Integer
MoznoRezervovat = True
If pMesic = 13 Then
pMesic = 1
pRok = pRok + 1
End If
If pMesic = 0 Then
pMesic = 12
78
pRok = pRok - 1
End If
cDen = CDate(Str(pDen) + "." + Str(pMesic) + "." + Str(pRok))
’ spolecny test do datumu vypujcky
If cDen < Date Then
’ datum je mensi nez dnesni den
MoznoRezervovat = False
Exit Function
ElseIf PujcenyDo >= cDen Then
’ film je tento den pujceny
MoznoRezervovat = False
Exit Function
End If
If (Not IsNull(Me.Od.Value) And kalend = "rezervace_do") Then
’ muzeme zacit az v datumu rezervace_od a skoncit pri nejblizsi rezervaci
If CDate(Me.Od.Value) > cDen Then
’ datum rezervace do by bylo mensi nez datum rezervace od
MoznoRezervovat = False
Exit Function
ElseIf pMin <> Date And cDen >= pMin Then
’ pokud jiz jsme v prvni rezervaci
MoznoRezervovat = False
Exit Function
End If
ElseIf (Not IsNull(Me.Do.Value) And kalend = "rezervace_od") Then
’ muzeme skoncit az v datumu rezervace_do a zacit po nejblizsi rezervaci nebo po konci vypujcky
If CDate(Me.Do.Value) < cDen Then
’ datum rezervace od by bylo vetsi nez datum rezervace do
MoznoRezervovat = False
Exit Function
ElseIf pMax <> Date And cDen <= pMax Then
’ pokud jeste jsme pred nebo v poslednim konci rezervace
MoznoRezervovat = False
Exit Function
End If
Else
’ vyber ze vsech moznych dnu
If Form_RezervaceTab.CurrentRecord <> 0 Then
’ nejprve prejdeme na posledni zaznam
DoCmd.GoToRecord acDataForm, "RezervaceTab", acLast
Do While Form_RezervaceTab.CurrentRecord > 0
If Form_RezervaceTab.Rezervace_od.Value <= cDen And _
Form_RezervaceTab.Rezervace_do.Value >= cDen Then
’ film je na tento den rezervovan
MoznoRezervovat = False
Exit Function
End If
If Form_RezervaceTab.CurrentRecord > 1 Then
’ pokud nejsme na prvnim zaznamu, tak prejdeme na predchazejici
DoCmd.GoToRecord acDataForm, "RezervaceTab", acPrevious
Else
Exit Do
End If
Loop
DoCmd.GoToRecord acDataForm, "RezervaceTab", acLast
End If
End If
79
End Function
Sub NoveNacteni(Mesic, Rok)
’ procedura na nove nacteni kalendare
Dim Pocet As Integer, prvniden As Integer, PomDen As String, MinRez As Date
Dim I As Integer, PredchoziZacatek As Integer, J As Integer
Dim stDocName As String, stLinkCriteria As String, MaxRez As Date
’ zjistime pocet dnu v aktualnim mesici a roce
PomDen = CDate("1." + Str(Mesic) + "." + Str(Rok))
Pocet = PocetDnu(Mesic, Rok)
’ zjistime kterym dnem zacina mesic
prvniden = PrvniDenMesice(PomDen)
’ zjistime, ktery den minuleho mesice bylo posledni pondeli
If prvniden = 1 Then
PredchoziZacatek = 0
Else
If Mesic = 1 Then
PredchoziZacatek = PocetDnu(12, Rok - 1) - prvniden + 2
Else
PredchoziZacatek = PocetDnu(Mesic - 1, Rok) - prvniden + 2
End If
End If
’ otevreme formular s rezervacemi a zneviditelnime ho
stDocName = "RezervaceTab"
stLinkCriteria = "[Film]=" & Str(Me.IDfilmu.Value) & " and " & "[Rezervace_do] >= " & "Date()"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Form_RezervaceTab.Visible = False
’ projdeme RezervaceTab a nalezneme Min a Max rezervaci
MinRez = Date
MaxRez = Date
If Form_RezervaceTab.CurrentRecord <> 0 Then
’ nejprve prejdeme na posledni zaznam
DoCmd.GoToRecord acDataForm, "RezervaceTab", acLast
Do While Form_RezervaceTab.CurrentRecord > 0
’ nejprve hledame min Rezervaci Od, ktera je vetsi, nez nase datum Od
If Not IsNull(Me.Od.Value) And kalend = "rezervace_do" Then
’ pokud je za jiz zadana Rezervace_Od a hledame Rezervaci_Do
If MinRez = Date And Form_RezervaceTab.Rezervace_od.Value > Me.Od.Value Then
’ prvni Rezervace_od, ktera je vetsi, nez nase datum Rezervace_od
MinRez = Form_RezervaceTab.Rezervace_od.Value
Else
If MinRez > Form_RezervaceTab.Rezervace_od.Value Then MinRez =
Form_RezervaceTab.Rezervace_od.Value
End If
End If
’ hledame max Rezervaci, ktera je mensi, nez nase datum Do
If Not IsNull(Me.Do.Value) And kalend = "rezervace_od" Then
’ pokud je jiz zadana Rezervace_Do a hledame Rezervaci_Od
If MaxRez = Date And Form_RezervaceTab.Rezervace_do.Value < Me.Do.Value Then
’ prvni Rezervace_do, ktera je mensi, nez nase datum Rezervace_do
MaxRez = Form_RezervaceTab.Rezervace_do.Value
80
ElseIf Form_RezervaceTab.Rezervace_do.Value < Me.Do.Value Then
If MaxRez < Form_RezervaceTab.Rezervace_do.Value Then MaxRez =
Form_RezervaceTab.Rezervace_do.Value
End If
End If
If Form_RezervaceTab.CurrentRecord > 1 Then
’ pokud nejsme na prvnim zaznamu, tak prejdeme na predchazejici
DoCmd.GoToRecord acDataForm, "RezervaceTab", acPrevious
Else
Exit Do
End If
Loop
DoCmd.GoToRecord acDataForm, "RezervaceTab", acLast
End If
’ vypis barev pozadi, barev popredi a dnu mesice na tlacitka
If prvniden <> 1 Then
’ mesic nezacina od pondeli, musime dopsat konec minuleho mesice
For I = 1 To prvniden - 1
J = PredchoziZacatek + I - 1
Me.Tlacitka.Item(I).BackColor = 12632256
Me.Tlacitka.Item(I).Caption = J
If Not (MoznoRezervovat(J, Mesic - 1, Rok, MinRez, MaxRez)) Then
Me.Tlacitka.Item(I).ForeColor = 255
Else
Me.Tlacitka.Item(I).ForeColor = 16711680
End If
Next I
End If
J=1
For I = prvniden To Pocet + prvniden - 1
’ vypsani aktualniho mesice
Me.Tlacitka.Item(I).Caption = J
If Not (MoznoRezervovat(J, Mesic, Rok, MinRez, MaxRez)) Then
Me.Tlacitka.Item(I).ForeColor = 255
Else
Me.Tlacitka.Item(I).ForeColor = 16711680
End If
J=J+1
Next I
J=1
For I = Pocet + prvniden To 42
’ vypsani nasledujiciho mesice
Me.Tlacitka.Item(I).BackColor = 12632256
Me.Tlacitka.Item(I).Caption = J
If Not (MoznoRezervovat(J, Mesic + 1, Rok, MinRez, MaxRez)) Then
Me.Tlacitka.Item(I).ForeColor = 255
Else
Me.Tlacitka.Item(I).ForeColor = 16711680
End If
J=J+1
Next I
’ zavreme formular s rezervacemi
DoCmd.Close acForm, stDocName, acSaveNo
81
End Sub
Private Sub Form_Load()
’ pri zavedeni formulare vytvorime kolekci a nacteme nektere udaje
Dim pMesic As Integer, pRok As Integer
Dim stDocName As String, stLinkCriteria As String
’ vytvoreni nove kolekce a vlozeni do ni vsech tlacitek
Set Tlacitka = New Collection
Tlacitka.Add Me.tlacitko11, "11"
Tlacitka.Add Me.tlacitko12, "12"
Tlacitka.Add Me.tlacitko13, "13"
Tlacitka.Add Me.tlacitko14, "14"
Tlacitka.Add Me.tlacitko15, "15"
Tlacitka.Add Me.tlacitko16, "16"
Tlacitka.Add Me.tlacitko17, "17"
Tlacitka.Add Me.tlacitko21, "21"
Tlacitka.Add Me.tlacitko22, "22"
Tlacitka.Add Me.tlacitko23, "23"
Tlacitka.Add Me.tlacitko24, "24"
Tlacitka.Add Me.tlacitko25, "25"
Tlacitka.Add Me.tlacitko26, "26"
Tlacitka.Add Me.tlacitko27, "27"
Tlacitka.Add Me.tlacitko31, "31"
Tlacitka.Add Me.tlacitko32, "32"
Tlacitka.Add Me.tlacitko33, "33"
Tlacitka.Add Me.tlacitko34, "34"
Tlacitka.Add Me.tlacitko35, "35"
Tlacitka.Add Me.tlacitko36, "36"
Tlacitka.Add Me.tlacitko37, "37"
Tlacitka.Add Me.tlacitko41, "41"
Tlacitka.Add Me.tlacitko42, "42"
Tlacitka.Add Me.tlacitko43, "43"
Tlacitka.Add Me.tlacitko44, "44"
Tlacitka.Add Me.tlacitko45, "45"
Tlacitka.Add Me.tlacitko46, "46"
Tlacitka.Add Me.tlacitko47, "47"
Tlacitka.Add Me.tlacitko51, "51"
Tlacitka.Add Me.tlacitko52, "52"
Tlacitka.Add Me.tlacitko53, "53"
Tlacitka.Add Me.tlacitko54, "54"
Tlacitka.Add Me.tlacitko55, "55"
Tlacitka.Add Me.tlacitko56, "56"
Tlacitka.Add Me.tlacitko57, "57"
Tlacitka.Add Me.tlacitko61, "61"
Tlacitka.Add Me.tlacitko62, "62"
Tlacitka.Add Me.tlacitko63, "63"
Tlacitka.Add Me.tlacitko64, "64"
Tlacitka.Add Me.tlacitko65, "65"
Tlacitka.Add Me.tlacitko66, "66"
Tlacitka.Add Me.tlacitko67, "67"
’ nastavime fokus na tlacitko Zpet
Me.zpet.SetFocus
’nacteni stavajiciho mesice a roku
pMesic = Month(Date)
pRok = Year(Date)
Me.rokVyber.Value = pRok
82
Me.mesicVyber.Value = pMesic
’ vepsani nekterych udaju z nove rezervace
Me.IDfilmu.Value = Form_NovaRezervace.film.Value
Me.Od.Value = Form_NovaRezervace.Rezervace_od.Value
Me.Do.Value = Form_NovaRezervace.Rezervace_do.Value
’ v databazi otevreme dotaz PujcenyDo a pokud film je pujceny, tak
’ do promenne PujcenyDo ulozime datum do kdy je pujceny
stDocName = "DnesPujceno"
stLinkCriteria = "[Nazev_filmu]=" & Str(Me.IDfilmu.Value)
DoCmd.OpenForm stDocName, , , stLinkCriteria
If Form_DnesPujceno.CurrentRecord <> 0 Then
If CDate(Form_DnesPujceno.pujceno.Value) < Date Then
’ film je pujcen, ale jiz mel byt vracen
PujcenyDo = Date
Else
’ film je pujcen
PujcenyDo = CDate(Form_DnesPujceno.pujceno.Value)
End If
Else
’ film neni pujcen tak do PujcenoDo priradime datum o 1 den mene nez je dnesek
PujcenyDo = DateAdd("d", -1, Date)
End If
’ zavreme formular DnesPujceno
DoCmd.Close acForm, stDocName
’ spustime proceduru na nacteni noveho mesice
NoveNacteni pMesic, pRok
End Sub
Private Sub mesicVyber_AfterUpdate()
’ pri vlastnim vyberu mesice
’ obarvime na cerveno sipku vpravo nebo vlevo, pokud jsme na zacatku nebo konci
If Me.mesicVyber.Value = 1 And Me.rokVyber.Value = 2000 Then
Me.minus.ForeColor = 255
Else
Me.minus.ForeColor = 16711680
End If
If Me.mesicVyber.Value = 12 And Me.rokVyber.Value = 2005 Then
Me.plus.ForeColor = 255
Else
Me.plus.ForeColor = 16711680
End If
’ spustime proceduru na nacteni noveho mesice
NoveNacteni Me.mesicVyber.Value, Me.rokVyber.Value
End Sub
Private Sub minus_Click()
’ posun o jeden mesic zpet, pokud to jde
Dim pMesic As Integer, pRok As Integer
’ nacteme mesic a rok
pMesic = Me.mesicVyber.Value
pRok = Me.rokVyber.Value
83
’ obarvime placitlo plus
Me.plus.ForeColor = 16711680
’ ubereme jeden mesic pokud nejsme na zacatku
If Not (pMesic = 1 And pRok = 2000) Then
’ nejsme na zacatku
If pMesic = 2 And pRok = 2000 Then
Me.minus.ForeColor = 255
Else
Me.minus.ForeColor = 16711680
End If
If pMesic = 1 Then
pMesic = 12
pRok = pRok - 1
Else
pMesic = pMesic - 1
End If
Me.mesicVyber.Value = pMesic
Me.rokVyber.Value = pRok
’ spustime proceduru na nacteni noveho mesice
NoveNacteni pMesic, pRok
End If
End Sub
Private Sub plus_Click()
’ posun o jeden mesic vpred, pokud to jde
Dim pMesic As Integer, pRok As Integer
’ nacteme mesic a rok
pMesic = Me.mesicVyber.Value
pRok = Me.rokVyber.Value
’ obarvime placitlo minus
Me.minus.ForeColor = 16711680
’ pridame jeden mesic pokud nejsme na konci
If Not (pMesic = 12 And pRok = 2005) Then
’ nejsme na konci
If pMesic = 11 And pRok = 2005 Then
Me.plus.ForeColor = 255
End If
If pMesic = 12 Then
pMesic = 1
pRok = pRok + 1
Else
pMesic = pMesic + 1
End If
Me.mesicVyber.Value = pMesic
Me.rokVyber.Value = pRok
’ spustime proceduru na nacteni noveho mesice
NoveNacteni pMesic, pRok
End If
End Sub
Private Sub rokVyber_AfterUpdate()
’ pri vlastnim vyberu roku
’ obarvime na cerveno sipku vpravo nebo vlevo, pokud jsme na zacatku nebo konci
84
If Me.mesicVyber.Value = 1 And Me.rokVyber.Value = 2000 Then
Me.minus.ForeColor = 255
Else
Me.minus.ForeColor = 16711680
End If
If Me.mesicVyber.Value = 12 And Me.rokVyber.Value = 2005 Then
Me.plus.ForeColor = 255
Else
Me.plus.ForeColor = 16711680
End If
’ spustime proceduru na nacteni noveho mesice
NoveNacteni Me.mesicVyber.Value, Me.rokVyber.Value
End Sub
Private Sub tlacitko11_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko11.ForeColor = 255) Then
Vystup = Me.tlacitko11.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
Private Sub tlacitko12_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko12.ForeColor = 255) Then
Vystup = Me.tlacitko12.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
Private Sub tlacitko13_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko13.ForeColor = 255) Then
Vystup = Me.tlacitko13.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
Private Sub tlacitko14_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko14.ForeColor = 255) Then
Vystup = Me.tlacitko14.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
85
Private Sub tlacitko15_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko15.ForeColor = 255) Then
Vystup = Me.tlacitko15.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
Private Sub tlacitko16_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko16.ForeColor = 255) Then
Vystup = Me.tlacitko16.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
Private Sub tlacitko17_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko17.ForeColor = 255) Then
Vystup = Me.tlacitko17.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
Private Sub tlacitko21_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko21.ForeColor = 255) Then
Vystup = Me.tlacitko21.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
Private Sub tlacitko22_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko22.ForeColor = 255) Then
Vystup = Me.tlacitko22.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
Private Sub tlacitko23_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
86
If Not (Me.tlacitko23.ForeColor = 255) Then
Vystup = Me.tlacitko23.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
Private Sub tlacitko24_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko24.ForeColor = 255) Then
Vystup = Me.tlacitko24.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
Private Sub tlacitko25_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko25.ForeColor = 255) Then
Vystup = Me.tlacitko25.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
Private Sub tlacitko26_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko26.ForeColor = 255) Then
Vystup = Me.tlacitko26.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
Private Sub tlacitko27_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko27.ForeColor = 255) Then
Vystup = Me.tlacitko27.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
Private Sub tlacitko31_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko31.ForeColor = 255) Then
Vystup = Me.tlacitko31.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
87
Private Sub tlacitko32_Click()
Dim Vystup As String
If Not (Me.tlacitko32.ForeColor = 255) Then
Vystup = Me.tlacitko32.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
Private Sub tlacitko33_Click()
Dim Vystup As String
If Not (Me.tlacitko33.ForeColor = 255) Then
Vystup = Me.tlacitko33.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
Private Sub tlacitko34_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko34.ForeColor = 255) Then
Vystup = Me.tlacitko34.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
Private Sub tlacitko35_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko35.ForeColor = 255) Then
Vystup = Me.tlacitko35.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
Private Sub tlacitko36_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko36.ForeColor = 255) Then
Vystup = Me.tlacitko36.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
Private Sub tlacitko37_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko37.ForeColor = 255) Then
88
Vystup = Me.tlacitko37.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
Private Sub tlacitko41_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko41.ForeColor = 255) Then
Vystup = Me.tlacitko41.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
Private Sub tlacitko42_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko42.ForeColor = 255) Then
Vystup = Me.tlacitko42.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
Private Sub tlacitko43_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko43.ForeColor = 255) Then
Vystup = Me.tlacitko43.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
Private Sub tlacitko44_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko44.ForeColor = 255) Then
Vystup = Me.tlacitko44.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
Private Sub tlacitko45_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko45.ForeColor = 255) Then
Vystup = Me.tlacitko45.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
89
Private Sub tlacitko46_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko46.ForeColor = 255) Then
Vystup = Me.tlacitko46.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
Private Sub tlacitko47_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko47.ForeColor = 255) Then
Vystup = Me.tlacitko47.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
Tisk Vystup
End If
End Sub
Private Sub tlacitko51_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko51.ForeColor = 255) Then
If Val(Me.tlacitko51.Caption) < 15 Then
’ jsme v novem mesici
If Val(Me.mesicVyber.Value) = 12 Then
’ jsme v novem roce
Vystup = Me.tlacitko51.Caption + ".1." + Str(Val(Me.rokVyber.Value) + 1)
Else
Vystup = Me.tlacitko51.Caption + "." + Str(Val(Me.mesicVyber.Value) + 1) + "." +
Str(Me.rokVyber.Value)
End If
Else
Vystup = Me.tlacitko51.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
End If
Tisk Vystup
End If
End Sub
Private Sub tlacitko52_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko52.ForeColor = 255) Then
If Val(Me.tlacitko52.Caption) < 15 Then
’ jsme v novem mesici
If Val(Me.mesicVyber.Value) = 12 Then
’ jsme v novem roce
Vystup = Me.tlacitko52.Caption + ".1." + Str(Val(Me.rokVyber.Value) + 1)
Else
Vystup = Me.tlacitko52.Caption + "." + Str(Val(Me.mesicVyber.Value) + 1) + "." +
Str(Me.rokVyber.Value)
End If
Else
90
Vystup = Me.tlacitko52.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
End If
Tisk Vystup
End If
End Sub
Private Sub tlacitko53_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko53.ForeColor = 255) Then
If Val(Me.tlacitko53.Caption) < 15 Then
’ jsme v novem mesici
If Val(Me.mesicVyber.Value) = 12 Then
’ jsme v novem roce
Vystup = Me.tlacitko53.Caption + ".1." + Str(Val(Me.rokVyber.Value) + 1)
Else
Vystup = Me.tlacitko53.Caption + "." + Str(Val(Me.mesicVyber.Value) + 1) + "." +
Str(Me.rokVyber.Value)
End If
Else
Vystup = Me.tlacitko53.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
End If
Tisk Vystup
End If
End Sub
Private Sub tlacitko54_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko54.ForeColor = 255) Then
If Val(Me.tlacitko54.Caption) < 15 Then
’ jsme v novem mesici
If Val(Me.mesicVyber.Value) = 12 Then
’ jsme v novem roce
Vystup = Me.tlacitko54.Caption + ".1." + Str(Val(Me.rokVyber.Value) + 1)
Else
Vystup = Me.tlacitko54.Caption + "." + Str(Val(Me.mesicVyber.Value) + 1) + "." +
Str(Me.rokVyber.Value)
End If
Else
Vystup = Me.tlacitko54.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
End If
Tisk Vystup
End If
End Sub
Private Sub tlacitko55_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko55.ForeColor = 255) Then
If Val(Me.tlacitko55.Caption) < 15 Then
’ jsme v novem mesici
If Val(Me.mesicVyber.Value) = 12 Then
’ jsme v novem roce
91
Vystup = Me.tlacitko55.Caption + ".1." + Str(Val(Me.rokVyber.Value) + 1)
Else
Vystup = Me.tlacitko55.Caption + "." + Str(Val(Me.mesicVyber.Value) + 1) + "." +
Str(Me.rokVyber.Value)
End If
Else
Vystup = Me.tlacitko55.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
End If
Tisk Vystup
End If
End Sub
Private Sub tlacitko56_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko56.ForeColor = 255) Then
If Val(Me.tlacitko56.Caption) < 15 Then
’ jsme v novem mesici
If Val(Me.mesicVyber.Value) = 12 Then
’ jsme v novem roce
Vystup = Me.tlacitko56.Caption + ".1." + Str(Val(Me.rokVyber.Value) + 1)
Else
Vystup = Me.tlacitko56.Caption + "." + Str(Val(Me.mesicVyber.Value) + 1) + "." +
Str(Me.rokVyber.Value)
End If
Else
Vystup = Me.tlacitko56.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
End If
Tisk Vystup
End If
End Sub
Private Sub tlacitko57_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko57.ForeColor = 255) Then
If Val(Me.tlacitko57.Caption) < 15 Then
’ jsme v novem mesici
If Val(Me.mesicVyber.Value) = 12 Then
’ jsme v novem roce
Vystup = Me.tlacitko57.Caption + ".1." + Str(Val(Me.rokVyber.Value) + 1)
Else
Vystup = Me.tlacitko57.Caption + "." + Str(Val(Me.mesicVyber.Value) + 1) + "." +
Str(Me.rokVyber.Value)
End If
Else
Vystup = Me.tlacitko57.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
End If
Tisk Vystup
End If
End Sub
Private Sub tlacitko61_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
92
If Not (Me.tlacitko61.ForeColor = 255) Then
If Val(Me.tlacitko61.Caption) < 15 Then
’ jsme v novem mesici
If Val(Me.mesicVyber.Value) = 12 Then
’ jsme v novem roce
Vystup = Me.tlacitko61.Caption + ".1." + Str(Val(Me.rokVyber.Value) + 1)
Else
Vystup = Me.tlacitko61.Caption + "." + Str(Val(Me.mesicVyber.Value) + 1) + "." +
Str(Me.rokVyber.Value)
End If
Else
Vystup = Me.tlacitko61.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
End If
Tisk Vystup
End If
End Sub
Private Sub tlacitko62_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko62.ForeColor = 255) Then
If Val(Me.tlacitko62.Caption) < 15 Then
’ jsme v novem mesici
If Val(Me.mesicVyber.Value) = 12 Then
’ jsme v novem roce
Vystup = Me.tlacitko62.Caption + ".1." + Str(Val(Me.rokVyber.Value) + 1)
Else
Vystup = Me.tlacitko62.Caption + "." + Str(Val(Me.mesicVyber.Value) + 1) + "." +
Str(Me.rokVyber.Value)
End If
Else
Vystup = Me.tlacitko62.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
End If
Tisk Vystup
End If
End Sub
Private Sub tlacitko63_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko63.ForeColor = 255) Then
If Val(Me.tlacitko63.Caption) < 15 Then
’ jsme v novem mesici
If Val(Me.mesicVyber.Value) = 12 Then
’ jsme v novem roce
Vystup = Me.tlacitko63.Caption + ".1." + Str(Val(Me.rokVyber.Value) + 1)
Else
Vystup = Me.tlacitko63.Caption + "." + Str(Val(Me.mesicVyber.Value) + 1) + "." +
Str(Me.rokVyber.Value)
End If
Else
Vystup = Me.tlacitko63.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
End If
Tisk Vystup
End If
End Sub
93
Private Sub tlacitko64_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko64.ForeColor = 255) Then
If Val(Me.tlacitko64.Caption) < 15 Then
’ jsme v novem mesici
If Val(Me.mesicVyber.Value) = 12 Then
’ jsme v novem roce
Vystup = Me.tlacitko64.Caption + ".1." + Str(Val(Me.rokVyber.Value) + 1)
Else
Vystup = Me.tlacitko64.Caption + "." + Str(Val(Me.mesicVyber.Value) + 1) + "." +
Str(Me.rokVyber.Value)
End If
Else
Vystup = Me.tlacitko64.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
End If
Tisk Vystup
End If
End Sub
Private Sub tlacitko65_Click()
Dim Vystup As String
If Not (Me.tlacitko65.ForeColor = 255) Then
If Val(Me.tlacitko65.Caption) < 15 Then
’ jsme v novem mesici
If Val(Me.mesicVyber.Value) = 12 Then
’ jsme v novem roce
Vystup = Me.tlacitko65.Caption + ".1." + Str(Val(Me.rokVyber.Value) + 1)
Else
Vystup = Me.tlacitko65.Caption + "." + Str(Val(Me.mesicVyber.Value) + 1) + "." +
Str(Me.rokVyber.Value)
End If
Else
Vystup = Me.tlacitko65.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
End If
Tisk Vystup
End If
End Sub
Private Sub tlacitko66_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko66.ForeColor = 255) Then
If Val(Me.tlacitko66.Caption) < 15 Then
’ jsme v novem mesici
If Val(Me.mesicVyber.Value) = 12 Then
’ jsme v novem roce
Vystup = Me.tlacitko66.Caption + ".1." + Str(Val(Me.rokVyber.Value) + 1)
Else
Vystup = Me.tlacitko66.Caption + "." + Str(Val(Me.mesicVyber.Value) + 1) + "." +
Str(Me.rokVyber.Value)
End If
Else
94
Vystup = Me.tlacitko66.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
End If
Tisk Vystup
End If
End Sub
Private Sub tlacitko67_Click()
’ vlastni vlozeni datumu
Dim Vystup As String
If Not (Me.tlacitko67.ForeColor = 255) Then
If Val(Me.tlacitko67.Caption) < 15 Then
’ jsme v novem mesici
If Val(Me.mesicVyber.Value) = 12 Then
’ jsme v novem roce
Vystup = Me.tlacitko67.Caption + ".1." + Str(Val(Me.rokVyber.Value) + 1)
Else
Vystup = Me.tlacitko67.Caption + "." + Str(Val(Me.mesicVyber.Value) + 1) + "." +
Str(Me.rokVyber.Value)
End If
Else
Vystup = Me.tlacitko67.Caption + "." + Str(Me.mesicVyber.Value) + "." + Str(Me.rokVyber.Value)
End If
Tisk Vystup
End If
End Sub
Private Sub zpet_Click()
’ navrat zpet do formulare NovaRezervace
Navrat
Form_NovaRezervace.Visible = True
End Sub
5.3.2.18
Formular Klienti
Option Compare Database
Option Explicit
Private Sub Form_Load()
’ zavedeni formulare
Me.zpet.SetFocus
End Sub
Private Sub zpet_Click()
’ navrat do formulare FirmaData
Navrat
Form_FirmaData.Visible = True
End Sub
Private Sub uloz_Click()
’ procedura na ulozeni nove zadaneho klienta a prechod na dalsi novy zaznam
On Error GoTo Err_uloz_Click
DoCmd.GoToRecord , , acNewRec
95
Exit_uloz_Click:
Exit Sub
Err_uloz_Click:
MsgBox Err.Description
Resume Exit_uloz_Click
End Sub
5.3.2.19
Formular Lide
Option Compare Database
Option Explicit
Private Sub Form_Load()
’ zavedeni formulare
Me.zpet.SetFocus
End Sub
Private Sub zpet_Click()
’ navrat do formulare FirmaData
Navrat
Form_FirmaData.Visible = True
End Sub
Private Sub uloz_Click()
’ ulozeni prave zadaneho noveho herce nebo rezisera a prejdeme
’ na novy prazdny zaznam
On Error GoTo Err_uloz_Click
DoCmd.GoToRecord , , acNewRec
Exit_uloz_Click:
Exit Sub
Err_uloz_Click:
MsgBox Err.Description
Resume Exit_uloz_Click
End Sub
5.3.2.20
Formular Nabidka
Option Compare Database
Option Explicit
Private Sub filmvyber_AfterUpdate()
’ test, jestli jsme vybrali nejaky film
If Me.filmvyber.Value <> "" Then
Me.filmvyber.Tag = "ano"
Else
Me.filmvyber.Tag = "ne"
End If
End Sub
96
Private Sub Form_Load()
’ nastaveni nekterych vlastnosti pri spusteni formulare
Me.filmvyber.Tag = "ne"
Me.klientvyber.Tag = "ne"
Me.konec.SetFocus
’ zobrazovani aktualniho stavu zadosti o nove heslo
If StavZadosti > 0 Then
Form_Nabidka.Pocet.Value = StavZadosti
Else
Form_Nabidka.Pocet.Value = 0
End If
End Sub
Private Sub Form_Timer()
’ zobrazovani aktualniho stavu zadosti o nove heslo
’ tato funkce se spousti 1x za 10 minut - nastaveno ve vlastnostech Formulare
If StavZadosti > 0 Then
Form_Nabidka.Pocet.Value = StavZadosti
Else
Form_Nabidka.Pocet.Value = 0
End If
End Sub
Private Sub klientvyber_AfterUpdate()
’ test, jestli jsme vybrali nejakeho klienta
If Me.klientvyber.Value <> "" Then
Me.klientvyber.Tag = "ano"
Else
Me.klientvyber.Tag = "ne"
End If
End Sub
Private Sub vraceni_Click()
’ procedura na vraceni filmu
Dim stDocName As String, MaxDatum As Date, Klient As Integer, Pom As Integer
Dim stLinkCriteria As String, Cena As Integer, CelkemDnu As Integer
On Error GoTo Err_vraceni_Click
If filmvyber.Tag = "ne" Then
MsgBox "Nenı zada n na zev filmu"
Exit Sub
Else
’ pokud je zadan nazev filmu
stDocName = "film"
stLinkCriteria = "[IDfilmu] = " & Me![filmvyber]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Cena = Form_Film.Cena_za_1_den.Value
If Form_Film.Pujceny.Value = False Then
’ pokud je film jiz vraceny, tak to napiseme
DoCmd.Close acForm, stDocName, acSaveNo
MsgBox "Film je jiz vra ceny ."
97
Exit Sub
Else
Form_Film.Pujceny = False
End If
DoCmd.Close acForm, stDocName, acSaveYes
End If
’ prohledame formular Vypujcka a najdeme nestarsi datum pujceni
stDocName = "Vypujcka"
stLinkCriteria = "[Nazev_filmu] = " & Me![filmvyber]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Form_Vypujcka.Visible = False
DoCmd.GoToRecord acDataForm, stDocName, acLast
’ Pom - pomocna promenna urcujici, jestli jsme na prvnim zaznamu
’ do MaxDatum dame nejstarsi datum vypujcky
Pom = 0
While (Form_Vypujcka.CurrentRecord >= 1) And (Pom = 0)
If Form_Vypujcka.Datum.Value > MaxDatum Then
MaxDatum = Form_Vypujcka.Datum.Value
CelkemDnu = Form_Vypujcka.Celkem_dnu.Value
Klient = Form_Vypujcka.Klient.Value
End If
If Form_Vypujcka.CurrentRecord = 1 Then
Pom = 1
Else
DoCmd.GoToRecord acDataForm, stDocName, acPrevious
End If
Wend
If Klient <> Form_Nabidka.klientvyber.Value Then
’ film vraci nekdo jiny, nez ten co si ji pujcil
MsgBox "Spatne zadanŘ jmŘ no klienta.", , "Chyba"
DoCmd.Close acForm, stDocName, acSaveNo
’ nyni musime znovu otevrit formular film a nastavit, ze film je stale pujcen
stDocName = "film"
stLinkCriteria = "[IDfilmu] = " & Me![filmvyber]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Form_Film.Pujceny = True
’ zavreme formular a take celou proceduru
DoCmd.Close acForm, stDocName, acSaveYes
Exit Sub
End If
’ kontrola, zda nebude platit upomınku
If Date > MaxDatum Then
’ budeme platit upominku
MsgBox " Budede platit upomınku, neboójste mel film vra tit dne " & Str(MaxDatum)
’ zviditelnime formular Vypujcka a prejdeme na novy zaznam
Form_Nabidka.Visible = False
Form_Vypujcka.Visible = True
DoCmd.GoToRecord acDataForm, stDocName, acNewRec
’ do Vypujcky vyplnime nektere udaje - placeni upominky
Form_Vypujcka.Nazev_filmu.Value = Form_Nabidka.filmvyber.Value
Form_Vypujcka.Klient.Value = Klient
Form_Vypujcka.Klient.Tag = "ano"
Form_Vypujcka.Klient.Locked = True
Form_Vypujcka.Nazev_filmu.Locked = True
Form_Vypujcka.Vypujcni_den.Value = -(Date - MaxDatum)
98
Form_Vypujcka.Celkem_dnu.Value = CelkemDnu
Form_Vypujcka.cenafilmu.Value = Cena
’ zde da zmenit cena za kazdy prekroceny den vypujcky
’ standartne je nastavena na dvojnasobek soucinu ceny filmu a prekrocenych dni
Form_Vypujcka.Cena.Value = 2 * (Date - MaxDatum) * Cena
Form_Vypujcka.Cena.Locked = True
Form_Vypujcka.Datum.Value = Date
Form_Vypujcka.zpet.Enabled = False
Else
DoCmd.Close acForm, stDocName, acSaveNo
MsgBox "Film byl vra cen."
End If
Exit_vraceni_Click:
Exit Sub
Err_vraceni_Click:
MsgBox Err.Description
Resume Exit_vraceni_Click
End Sub
Private Sub pujceni_Click()
’ procedura na otevreni formulare Vypujcka pri pujcovani filmu
Dim stDocName As String, pom1 As Integer, pom3 As Boolean, pom6 As Date
Dim stLinkCriteria As String, pom2 As Integer, pom4 As Date, pom5 As Date
On Error GoTo Err_pujceni_Click
’ z formulare film zjistime cenu a delku vypujcky, pokud je fim vybrany
If filmvyber.Tag = "ano" Then
stDocName = "iFilm"
stLinkCriteria = "[IDfilmu]=" & Me![filmvyber]
DoCmd.OpenForm stDocName, , , stLinkCriteria
pom1 = Form_Ifilm.Cena_za_1_den.Value
pom2 = Form_Ifilm.Delka_vypujcky.Value
pom3 = Form_Ifilm.Pujceny.Value
If Form_Ifilm.RezervaceDo.Value > Date - 1 Then pom4 = Form_Ifilm.RezervaceDo.Value
If Form_Ifilm.RezervaceOd.Value > Date - 1 Then pom5 = Form_Ifilm.RezervaceOd.Value
If Form_Ifilm.PujcenyDo.Value > Date - 1 Then pom6 = Form_Ifilm.PujcenyDo.Value
DoCmd.Close acForm, stDocName, acSaveNo
End If
’ pokud je film jiz pujceny, tak vyskocime
If pom3 Then
If pom6 > Date - 1 Then
MsgBox "Film je az do " & pom6 & " pujc eny . Vyberte jiny ."
Exit Sub
Else
MsgBox "Film jeste nebyl vra cen. Vyberte jiny ."
Exit Sub
End If
End If
’ zjistime na jak dlouho si muzeme film vypujcit (z formulare rezervace)
If pom4 > Date - 1 Then
MsgBox "Film je az do " & pom4 & " rezervova n."
Exit Sub
Else
If (pom2 > pom5 - Date) And (pom5 > Date) Then
pom2 = pom5 - Date
99
End If
End If
’ otevreme formular Vypujcka
stDocName = "Vypujcka"
stLinkCriteria = ""
DoCmd.OpenForm stDocName, , , stLinkCriteria
’ prejdeme na novy zaznam a doplnime nektere hodnoty
DoCmd.GoToRecord , , acNewRec
Form_Nabidka.Visible = False
Form_Vypujcka.Klient.Value = klientvyber.Value
Form_Vypujcka.Nazev_filmu.Value = filmvyber.Value
Form_Vypujcka.Datum.Value = Date
Form_Vypujcka.pridej.SetFocus
If filmvyber.Tag = "ano" Then
Form_Vypujcka.Cena = pom1
Form_Vypujcka.cenafilmu = pom1
Form_Vypujcka.Celkem_dnu = pom2
MaxDnu = pom2
If MaxDnu > 1 Then Form_Vypujcka.minus.Enabled = True
End If
’ abychom vedeli, ze jsme formular Vypujcka otevreli z formulare Nabidka
Form_Vypujcka.zpet.Tag = "Nabidka"
Exit_pujceni_Click:
Exit Sub
Err_pujceni_Click:
MsgBox Err.Description
Resume Exit_pujceni_Click
End Sub
Private Sub rezervace_Click()
’ vstup do formulare Rezervace
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_rezervace_Click
’ otevreni formulare rezervace
stDocName = "Rezervace"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Form_Rezervace.film.Value = filmvyber.Value
Form_Rezervace.Klient.Value = klientvyber.Value
Form_Nabidka.Visible = False
Exit_rezervace_Click:
Exit Sub
Err_rezervace_Click:
MsgBox Err.Description
Resume Exit_rezervace_Click
End Sub
Private Sub film_Click()
’ zobrazeni informaci o filmech
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_film_Click
100
If filmvyber.Tag = "ne" Then
’ pokud neni vybran zadny film, tak o tom dame hlasku
MsgBox "Nenı zada n na zev filmu"
Exit Sub
End If
stDocName = "Ifilm"
stLinkCriteria = "[IDfilmu]=" & Me![filmvyber]
’ otevreni formulare s podminkou
DoCmd.OpenForm stDocName, , , stLinkCriteria
Form_Ifilm.zpet.Tag = "nabidka"
Form_Nabidka.Visible = False
Exit_film_Click:
Exit Sub
Err_film_Click:
MsgBox Err.Description
Resume Exit_film_Click
End Sub
Private Sub klient_Click()
’ zobrazeni informaci o klientech
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_klient_Click
If klientvyber.Tag = "ne" Then
’ pokud neni vybran zadny klient, tak o tom dame hlasku
MsgBox "Nenı zada no jmŘ no klienta"
Exit Sub
End If
stDocName = "Iklienti"
stLinkCriteria = "[IDklient]=" & Me![klientvyber]
’ otevreni formulare s podminkou
DoCmd.OpenForm stDocName, , , stLinkCriteria
Form_Iklienti.zpet.Tag = "nabidka"
Form_Nabidka.Visible = False
Exit_klient_Click:
Exit Sub
Err_klient_Click:
MsgBox Err.Description
Resume Exit_klient_Click
End Sub
Private Sub firma_Click()
’ zobrazeni formulare s informacemi o Firme
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_firma_Click
stDocName = "Firma"
101
’ zobrazeni formulare Firma
Form_Nabidka.Visible = False
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_firma_Click:
Exit Sub
Err_firma_Click:
MsgBox Err.Description
Resume Exit_firma_Click
End Sub
Private Sub konec_Click()
’ zavreni formulare, tj. cele Videopujcovny
Navrat
End Sub
Private Sub hledani_Click()
’ zobrazeni formulare pro vyhledavani filmu
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_hledani_Click
stDocName = "HledaniFilmu"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Form_Nabidka.Visible = False
Exit_hledani_Click:
Exit Sub
Err_hledani_Click:
MsgBox Err.Description
Resume Exit_hledani_Click
End Sub
5.3.2.21
Formular NovaRezervace
Option Compare Database
Option Explicit
Private Sub Form_Load()
’ nacterni formulare
Me.Rezervace_od.SetFocus
End Sub
Private Sub ok_Click()
’ ulozeni rezervace
DoCmd.Close acForm, "novarezervace", acSaveYes
Form_Rezervace.Visible = True
End Sub
Private Sub Rezervace_do_Click()
’ otevreni kalendare pro rezervaci
102
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_Click
kalend = "rezervace_do"
stDocName = "KalendarRez"
’ vlastni otevreni formulare KalendarRez
DoCmd.OpenForm stDocName, , , stLinkCriteria
Form_NovaRezervace.Visible = False
Exit_Click:
Exit Sub
Err_Click:
MsgBox Err.Description
Resume Exit_Click
End Sub
Private Sub Rezervace_od_Click()
’ otevreni kalendare pro rezervaci
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_Click
kalend = "rezervace_od"
stDocName = "KalendarRez"
’ vlastni otevreni formulare KalendarRez
DoCmd.OpenForm stDocName, , , stLinkCriteria
Form_NovaRezervace.Visible = False
Exit_Click:
Exit Sub
Err_Click:
MsgBox Err.Description
Resume Exit_Click
End Sub
Private Sub zpet_Click()
’ navrat zpet do formulare Rezervace
On Error GoTo Err_zpet_Click
’ abychom mohli smazat aktualni zaznam, je potreba doplnit nektere udaje
If IsNull(Me.Rezervace_od.Value) And IsNull(Me.Rezervace_do.Value) Then
Me.Rezervace_od.Value = Date + 10000
Me.Rezervace_do.Value = Date + 10000
ElseIf IsNull(Me.Rezervace_do.Value) Then
Me.Rezervace_do.Value = Me.Rezervace_od.Value
Else
Me.Rezervace_od.Value = Me.Rezervace_do.Value
End If
’ nyni tento aktualni zaznam smazeme
103
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
DoCmd.Close acForm, "NovaRezervace", acSaveNo
Form_Rezervace.Visible = True
Exit_zpet_Click:
Exit Sub
Err_zpet_Click:
MsgBox Err.Description
Resume Exit_zpet_Click
End Sub
5.3.2.22
Formular NoveHeslo
Option Compare Database
Option Explicit
Private Sub Form_Current()
’ pri kazdem prechodu po zaznamech bude aktivni tlacitko Zpet
Me.zpet.SetFocus
If Me.Vyrizeno.Value = False Then
’ pokud zadost jeste nebyla vyrizena, tak zpristupnime tlacitko generuj
Me.generuj.Enabled = True
Else
Me.generuj.Enabled = False
End If
End Sub
Private Sub zpet_Click()
’ navrat do formulare Firma
Navrat
Form_Firma.Visible = True
End Sub
Private Sub generuj_Click()
’ generovani noveho hesla
Dim Nove As Long, Predmet As String, Adresa As String
Dim stDocName As String, stLinkCriteria As String, stAppName As String
On Error GoTo Err_generuj_Click
’ vyplnime datum a cas vyrizeni noveho hesla a to ze k vyrizeni doslo
Me.Vyrizeno.Value = True
Me.VyrizenoDatum.Value = Date
Me.VyrizenoCas.Value = Time()
’ inicializace generatoru nahodnych cisel
Randomize
’ vygenerovane heslo bude 5 mistne cislo
Nove = Int((100000 - 10000 + 1) * Rnd + 10000)
’ nyni otevreme formular Klienti, kde zjistime E-mail adresu a zmenime heslo
stDocName = "Klienti"
104
stLinkCriteria = "[IDklient]=" & Me![Klient]
’ vlastni otevreni formulare s podminkou
DoCmd.OpenForm stDocName, , , stLinkCriteria
Form_Klienti.Visible = False
Form_Klienti.Heslo.Value = Nove
Form_Klienti.ZablokovaneHeslo.Value = False
Adresa = Form_Klienti.Mail.Value
DoCmd.Close acForm, stDocName, acSaveYes
’ nyni pomoci programe send posleme zpravu o novem hesle
stAppName = "send\send.EXE " + Adresa + " " + Str(Nove)
Call Shell(stAppName, 1)
Me.zpet.SetFocus
Me.generuj.Enabled = False
Exit_generuj_Click:
Exit Sub
Err_generuj_Click:
MsgBox Err.Description
Resume Exit_generuj_Click
End Sub
5.3.2.23
Formular NoveRezervace
Option Compare Database
Option Explicit
Private Sub Form_Load()
’ zavedeni formulare, pokud neni zadny zaznam, tak o tom dame zpravu
If Me.CurrentRecord = 0 Then
Form_Iklienti.Visible = True
DoCmd.Close acForm, "noverezervace", acSaveNo
MsgBox "Nenı z a dna nova rezervace."
Else
Me.zpet.SetFocus
End If
End Sub
Private Sub zpet_Click()
’ navrat do formulare Iklienti
Navrat
Form_Iklienti.Visible = True
End Sub
5.3.2.24
Formular Obsazeni
Option Compare Database
Option Explicit
Private Sub zpet_Click()
’ navrat do formulare Film
105
Navrat
Form_Film.Visible = True
End Sub
Private Sub uloz_Click()
’ ulozeni informaci do tabulky
Dim PomNazev As String, PomID As Integer, PomHerec As Boolean
On Error GoTo Err_uloz_Click
’ nejprve otestujeme, jestli je vybran nejaky ucinkujici
If IsNull(Me.Osoba.Value) Then
MsgBox "Musite vybrat nejakŘ ho ďc inkujıcıho"
Exit Sub
End If
’ do pomocnych promennych si dame informace o filmu a jestli ucinkujici byl herec
PomNazev = Me.film.Value
PomID = Me.IDfilmu.Value
PomHerec = Me.Herec.Value
’ prejdeme na novy zaznam
DoCmd.GoToRecord , , acNewRec
’ doplnime pomocne informace
Me.Herec.Value = PomHerec
Me.film.Value = PomNazev
Me.IDfilmu.Value = PomID
Exit_uloz_Click:
Exit Sub
Err_uloz_Click:
MsgBox Err.Description
Resume Exit_uloz_Click
End Sub
5.3.2.25
Formular PropadleRezervace
Option Compare Database
Option Explicit
Private Sub Form_Load()
’ zavedeni formulare, pokud neni zadny zaznam, tak o tom dame zpravu
If Me.CurrentRecord = 0 Then
Form_Iklienti.Visible = True
DoCmd.Close acForm, "propadlerezervace", acSaveNo
MsgBox "Nenı z a dna propadla rezervace."
Else
Me.zpet.SetFocus
End If
End Sub
Private Sub zpet_Click()
’ navrat do formulare Iklienti
Navrat
Form_Iklienti.Visible = True
End Sub
106
5.3.2.26
Formular PujceneFilmy
Option Compare Database
Option Explicit
Private Sub Form_Current()
’ pro kazdy zaznam vypocitame datum vraceni
vraceni.Value = Datum.Value + Celkem_dnu.Value - 1
End Sub
Private Sub Form_Load()
’ pri zavedeni formulare testujeme, jestli mame nejaky zaznam
If Me.CurrentRecord = 0 Then
DoCmd.Close
Form_Iklienti.Visible = True
MsgBox "V tomto obdobı nebyl nalezen z a dny za znam."
Else
Celkem_dnu.Visible = False
zpet.SetFocus
End If
End Sub
Private Sub zpet_Click()
’ navrat do formulare Iklienti
Navrat
Form_Iklienti.Visible = True
End Sub
5.3.2.27
Formular Rezervace
Option Compare Database
Option Explicit
Private Sub film_AfterUpdate()
’ testujeme, jestli byl vybran nejaky film
If Me.film.Value <> "" Then
Me.film.Tag = "ano"
Else
Me.film.Tag = "ne"
End If
End Sub
Private Sub Form_Load()
’ pri zavedeni formulare testujeme jestli jiz byl ve formulari Nabidka
’ vybran nejaky film a nejaky klient
If Form_Nabidka.filmvyber.Tag = "ano" Then
Me.film.Tag = "ano"
Else
Me.film.Tag = "ne"
End If
If Form_Nabidka.klientvyber.Tag = "ano" Then
Me.Klient.Tag = "ano"
Else
Me.Klient.Tag = "ne"
End If
End Sub
107
Private Sub klient_AfterUpdate()
’ testujeme, jestli byl vybran nejaky klient
If Me.Klient.Value <> "" Then
Me.Klient.Tag = "ano"
Else
Me.Klient.Tag = "ne"
End If
End Sub
Private Sub NovaRezervace_Click()
’ pokud je vybran film i klient, tak prejdeme do fomulare NovaRezervace
On Error GoTo Err_NovaRezervace_Click
If Klient.Tag = "ne" Then
MsgBox "Nenı zada no jmŘ no klienta"
Exit Sub
End If
If film.Tag = "ne" Then
MsgBox "Nenı zada n na zev filmu"
Exit Sub
End If
Dim stDocName As String
Dim stLinkCriteria As String
’ otevreni formulare nova rezervace a doplneni nekterych udaju
stDocName = "NovaRezervace"
DoCmd.OpenForm stDocName, , , stLinkCriteria
’ prechod na novy zaznam a predvyplneni nekterych hodnot
DoCmd.GoToRecord , , acNewRec
Form_NovaRezervace.film.Value = film.Value
Form_NovaRezervace.Datum.Value = Date
Form_NovaRezervace.IDklient.Value = Klient.Value
Form_NovaRezervace.Datum.Locked = True
Me.Visible = False
Exit_NovaRezervace_Click:
Exit Sub
Err_NovaRezervace_Click:
MsgBox Err.Description
Resume Exit_NovaRezervace_Click
End Sub
Private Sub Vyrizeni_Click()
’ kdyz klient si prijde vypujcit film, ktery ma rezervovany
Dim stDocName As String, stLinkCriteria As String, stLinkCriteria1 As String
On Error GoTo Err_Vyrizeni_Click
If Klient.Tag = "ne" Then
MsgBox "Nenı zada no jmŘ no klienta."
Exit Sub
End If
108
’ vytvoreni kriterii vyberu pro otevreni formulare DnesniRezervace
stDocName = "DnesniRezervace"
stLinkCriteria = "[Klient]=" & Me![Klient] & " and " & "[Vyrizena]= " & "False"
If film.Tag = "ano" Then
stLinkCriteria1 = "[Film]=" & Me![film]
stLinkCriteria = stLinkCriteria & " and " & stLinkCriteria1
End If
’ vlastni ovtevreni formulare DnesniRezervace
Form_Rezervace.Visible = False
AktualForm = "rezervace"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Vyrizeni_Click:
Exit Sub
Err_Vyrizeni_Click:
MsgBox Err.Description
Resume Exit_Vyrizeni_Click
End Sub
Private Sub zpet_Click()
’ navrat do formulare Nabidka
Navrat
Form_Nabidka.Visible = True
End Sub
Private Sub zruseni_Click()
’ moznost zruseni rezervace
Dim stDocName As String, stLinkCriteria1 As String, stLinkCriteria As String
On Error GoTo Err_zruseni_Click
If Me.Klient.Tag = "ne" Then
MsgBox "Nenı zadanŘ jmŘ no klienta."
Exit Sub
End If
’ vytvoreni kriterii pro otevreni formulare na roseni rezervaci
stDocName = "RuseniRezervace"
stLinkCriteria = "[Klient]=" & Me![Klient] & " and " & "[Rezervace_do] > " & "Date()"
If film.Tag = "ano" Then
stLinkCriteria1 = " and [Film]=" & Me![film]
stLinkCriteria = stLinkCriteria & stLinkCriteria1
End If
’ vlastni otevreni formulare RuseniRezervace
Form_Rezervace.Visible = False
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_zruseni_Click:
Exit Sub
Err_zruseni_Click:
MsgBox Err.Description
Resume Exit_zruseni_Click
End Sub
109
Private Sub iklient_Click()
’ zobrazeni informaci o klientech
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_iklient_Click
stDocName = "Iklienti"
stLinkCriteria = "[IDklient]=" & Me![Klient]
’ vlastni otevreni formulare Iklienti
DoCmd.OpenForm stDocName, , , stLinkCriteria
Form_Iklienti.zpet.Tag = "rezervace"
Form_Rezervace.Visible = False
Exit_iklient_Click:
Exit Sub
Err_iklient_Click:
MsgBox Err.Description
Resume Exit_iklient_Click
End Sub
Private Sub ifilm_Click()
’ zobrazeni informaci o filmech
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_ifilm_Click
stDocName = "Ifilm"
stLinkCriteria = "[IDfilmu]=" & Me![film]
’ vlastni otevreni formulare Ifilm
DoCmd.OpenForm stDocName, , , stLinkCriteria
Form_Ifilm.zpet.Tag = "rezervace"
Form_Rezervace.Visible = False
Exit_ifilm_Click:
Exit Sub
Err_ifilm_Click:
MsgBox Err.Description
Resume Exit_ifilm_Click
End Sub
5.3.2.28
Formular RezervaceInfo
Option Compare Database
Option Explicit
Private Sub zpet_Click()
’ navrat do formulare Ifilm
Navrat
Form_Ifilm.Visible = True
End Sub
110
5.3.2.29
Formular RezervaceTab
’ tento formula r nema zdrojovy ko d a slouz ı jen jako podformula r
5.3.2.30
Formular Reziser
’ tento formula r nema zdrojovy ko d a slouz ı jen jako podformula r
5.3.2.31
Formular RuseniRezervace
Option Compare Database
Option Explicit
Private Sub Form_Current()
’ pro kazdy zaznam nastavime aktivni prvek na tlacitko Smaz
Me.smaz.SetFocus
End Sub
Private Sub Form_Load()
’ pri zavedeni formulare zjistujeme, jestli jsou nejake rezervace na zruseni
If Me.CurrentRecord = 0 Then
Form_Rezervace.Visible = True
MsgBox "Nenı z a dna rezervace k rusenı."
DoCmd.Close acForm, "RuseniRezervace", acSaveNo
End If
End Sub
Private Sub zpet_Click()
’ navrat zpet do formulare Rezervace
Navrat
Form_Rezervace.Visible = True
End Sub
Private Sub smaz_Click()
’ smazani vybrabe rezervace
On Error GoTo Err_smaz_Click
’ muzeme smazat jen rezervaci, ktera jeste neprodadla
If Me.Rezervace_do.Value >= Date Then
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
DoCmd.GoToRecord acDataForm, "RuseniRezervace", acFirst
End If
Exit_smaz_Click:
Exit Sub
Err_smaz_Click:
MsgBox Err.Description
Resume Exit_smaz_Click
End Sub
5.3.2.32
Formular UpominkyKlienta
Option Compare Database
Option Explicit
111
Private Sub Form_Current()
’ pro kazdy zaznam pocitame datum, kdy byl film pujcen a do kdy
PujcenoDo.Value = Datum.Value + Me.Vypujcni_den.Value
PujcenoOd.Value = PujcenoDo.Value - Me.Celkem_dnu.Value + 1
End Sub
Private Sub Form_Load()
’ pri zavedeni formulare zjistujeme, jestli obsahuje nejaky zaznam
’ pokud ne, tak o tom dame zpravu a tento formular zavreme
If Me.CurrentRecord = 0 Then
DoCmd.Close
Form_Iklienti.Visible = True
MsgBox "V tomto obdobı nebyl nalezen z a dny za znam."
Else
zpet.SetFocus
End If
End Sub
Private Sub zpet_Click()
’ navrat do formulare Iklienti
Navrat
Form_Iklienti.Visible = True
End Sub
5.3.2.33
Formular UpominkyKlientu
Option Compare Database
Option Explicit
Private Sub Form_Current()
’ pro kazdy zaznam nastavime jako aktivni prvek tlacitko Zpet
Me.zpet.SetFocus
End Sub
Private Sub zpet_Click()
’ navrat do formulare FirmaInfo
Navrat
Form_FirmaInfo.Visible = True
End Sub
5.3.2.34
Formular UtrataKlienta
Option Compare Database
Option Explicit
Private Sub Form_Load()
’ pri zavedeni formulare testujeme, jestli obsahuje nejaky zaznam
If Me.CurrentRecord = 0 Then
DoCmd.Close
Form_Iklienti.Visible = True
MsgBox "V tomto obdobı nebyl nalezen z a dny za znam."
Else
112
zpet.SetFocus
End If
End Sub
Private Sub zpet_Click()
’ navrat do formulare Iklienti
Navrat
Form_Iklienti.Visible = True
End Sub
5.3.2.35
Formular UtrataKlientu
Option Compare Database
Option Explicit
Private Sub Form_Current()
’ pro kazdy zaznam nastavime jako aktivni prvek tlacitko Zpet
Me.zpet.SetFocus
End Sub
Private Sub zpet_Click()
’ navrat do formulare FirmaInfo
Navrat
Form_FirmaInfo.Visible = True
End Sub
5.3.2.36
Formular VydelekFilmu
Option Compare Database
Option Explicit
Private Sub Form_Current()
’ pro kazdy zaznam nastavime jako aktivni prvek tlacitko Zpet
Me.zpet.SetFocus
End Sub
Private Sub zpet_Click()
’ navrat do formulare FirmaInfo
Navrat
Form_FirmaInfo.Visible = True
End Sub
5.3.2.37
Formular VydelekFirmy
Option Compare Database
Option Explicit
Private Sub Form_Load()
’ pro kazdy zaznam nastavime jako aktivni prvek tlacitko Zpet
Me.zpet.SetFocus
End Sub
Private Sub zpet_Click()
’ navrat do formulare FirmaInfo
Navrat
Form_FirmaInfo.Visible = True
End Sub
113
5.3.2.38
Formular VydelekZanru
Option Compare Database
Option Explicit
Private Sub Form_Current()
’ pro kazdy zaznam nastavime jako aktivni prvek tlacitko Zpet
Me.zpet.SetFocus
End Sub
Private Sub zpet_Click()
’ navrat do formulare FirmaInfo
Navrat
Form_FirmaInfo.Visible = True
End Sub
5.3.2.39
Formular Vypujcka
Option Compare Database
Option Explicit
Private Sub Form_Load()
’ pri zavedeni formulare predvyplnime nektere udaje
Me.plus.Enabled = False
Me.minus.Enabled = False
Me.pridej.SetFocus
Klient.Tag = "ne"
If Form_Nabidka.klientvyber.Tag = "ano" Then Klient.Tag = "ano"
Nazev_filmu.Tag = "ne"
If Form_Nabidka.filmvyber.Tag = "ano" Then Nazev_filmu.Tag = "ano"
Me.cenafilmu.Visible = False
End Sub
Private Sub ifilm_Click()
’ zobrazeni informaci o filmu
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_info_Click
’ pokud neni zadan nazev filmu, tak o tom dame hlasku
If Nazev_filmu.Tag = "ne" Then
MsgBox "Nenı zada n na zev filmu"
Exit Sub
End If
’ vytvoreni kriterii pro otevreni formulare
stDocName = "iFilm"
stLinkCriteria = "[IDfilmu]=" & Me![Nazev_filmu]
’ vlastni otevreni formulare Ifilm
DoCmd.OpenForm stDocName, , , stLinkCriteria
Form_Ifilm.zpet.Tag = "vypujcka"
Form_Vypujcka.Visible = False
Exit_info_Click:
Exit Sub
114
Err_info_Click:
MsgBox Err.Description
Resume Exit_info_Click
End Sub
Private Sub klient_AfterUpdate()
’ testujeme, jestli byl vybran nejaky klient
If Me.Klient.Value <> "" Then
Me.Klient.Tag = "ano"
Else
Me.Klient.Tag = "ne"
End If
End Sub
Private Sub minus_Click()
’ ubrani poctu vypujcnich dnu
If Me.Celkem_dnu.Value = MaxDnu Then
Me.Celkem_dnu.Value = Me.Celkem_dnu.Value - 1
plus.Enabled = True
ElseIf Me.Celkem_dnu.Value = 2 Then
Me.Celkem_dnu.Value = Me.Celkem_dnu.Value - 1
Me.plus.SetFocus
Me.minus.Enabled = False
Else
Me.Celkem_dnu.Value = Me.Celkem_dnu.Value - 1
End If
End Sub
Private Sub Nazev_filmu_AfterUpdate()
’ po zmene filmu je potreba vyplnit nektere udaje do formulare, napr. tyto
’ cena filmu, delka vypujcky, ...
Dim stDocName As String, pom1 As Integer, pom3 As Boolean
Dim stLinkCriteria As String, pom2 As Integer
Dim pom4 As Date, pom5 As Date, pom6 As Date
On Error GoTo Err_film_Click
’ testujeme, jestli byl vybran nejaky film
If Me.Nazev_filmu.Value <> "" Then
Me.Nazev_filmu.Tag = "ano"
Else
Me.Nazev_filmu.Tag = "ne"
Exit Sub
End If
’ z formulare film zjistime cenu a delku vypujcky
stDocName = "iFilm"
stLinkCriteria = "[IDfilmu]=" & Me![Nazev_filmu]
DoCmd.OpenForm stDocName, , , stLinkCriteria
pom1 = Form_Ifilm.Cena_za_1_den.Value
pom2 = Form_Ifilm.Delka_vypujcky.Value
pom3 = Form_Ifilm.Pujceny.Value
If Form_Ifilm.RezervaceDo.Value > Date - 1 Then pom4 = Form_Ifilm.RezervaceDo.Value
If Form_Ifilm.RezervaceOd.Value > Date - 1 Then pom5 = Form_Ifilm.RezervaceOd.Value
If Form_Ifilm.PujcenyDo.Value > Date - 1 Then pom6 = Form_Ifilm.PujcenyDo.Value
DoCmd.Close acForm, stDocName, acSaveNo
115
’ pokud je film jiz pujceny, tak vyskocime
If pom3 Then
MsgBox "Film je az do " & pom6 & " pujc eny . Vyberte jiny ."
Me.Cena.Value = 0
Me.Celkem_dnu.Value = 0
Exit Sub
End If
’ zjistime na jak dlouho si muzeme film vypujcit (z formulare rezervace)
If pom4 > Date - 1 Then
MsgBox "Film je az do " & pom4 & " rezervova n."
Exit Sub
Else
If (pom2 > pom5 - Date) And (pom5 > Date) Then
pom2 = pom5 - Date
End If
End If
’ doplnime cenu filmu a delku vypujcky
Me.Cena.Value = pom1
Me.cenafilmu = pom1
Me.Celkem_dnu.Value = pom2
MaxDnu = pom2
Me.plus.Enabled = False
If MaxDnu > 1 Then
Me.minus.Enabled = True
Else
Me.pridej.SetFocus
Me.minus.Enabled = False
End If
Exit_film_Click:
Exit Sub
Err_film_Click:
MsgBox Err.Description
Resume Exit_film_Click
End Sub
Private Sub plus_Click()
’ pridani poctu vypujcnich dnu
If Me.Celkem_dnu.Value = MaxDnu - 1 Then
Me.Celkem_dnu.Value = Me.Celkem_dnu.Value + 1
Me.minus.SetFocus
plus.Enabled = False
ElseIf Me.Celkem_dnu.Value = 1 Then
Me.Celkem_dnu.Value = Me.Celkem_dnu.Value + 1
Me.minus.Enabled = True
Else
Me.Celkem_dnu.Value = Me.Celkem_dnu.Value + 1
End If
End Sub
Private Sub pridej_Click()
’ vlastni vypujceni filmu
Dim I As Integer, p1 As Integer, p5 As Date, p6 As Integer
Dim p2 As String, p3 As Double, p4 As Integer, Nepridano As Boolean
116
Dim stDocName As String, stLinkCriteria As String, stLinkCriteria1 As String
On Error GoTo Err_pridat_Click
’ test, zda-li je zada n na zev filmu a jmŘ no klienta
If Nazev_filmu.Tag = "ne" Then
MsgBox "Nenı zada n na zev filmu"
Exit Sub
End If
If Klient.Tag = "ne" Then
MsgBox "Nenı zada no jmŘ no klienta"
Exit Sub
End If
p1 = Celkem_dnu.Value
p2 = Nazev_filmu.Value
p3 = Klient.Value
p4 = cenafilmu.Value
p5 = Datum.Value
p6 = Vypujcni_den.Value
If p6 > 0 Then
’ pokud neplati upominku, tak otevreme formular film a zmenime hodnotu vypujceny na true
stDocName = "Film"
stLinkCriteria = "[IDfilmu]=" & Me![Nazev_filmu]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Form_Film.Pujceny = True
DoCmd.Close acForm, "Film", acSaveYes
’ nyni pridame nove zaznamy
Form_Vypujcka.Visible = True
DoCmd.GoToRecord , , acNewRec
For I = 1 To p1 - 1
With Form_Vypujcka
.Datum = p5 + I
.Nazev_filmu = p2
.Klient = p3
’ vypocet ceny za dalsi vypujcni dny; tato cena se zde da zmenit
’ nyni je nastaveno, ze kazdy dalsi den se plati o 10% mene nez prvni den
.Cena = Int((10 - I) * p4 * 0.1)
.Vypujcni_den = p6 + I
.Celkem_dnu = p1
End With
DoCmd.GoToRecord , , acNewRec
Next I
’ vytvorime kriteria na tiskovou sestavu
stDocName = "Vypujcka"
stLinkCriteria = "[Klient]=" & p3 & " AND " & "[Nazev_filmu]=" & p2
stLinkCriteria1 = "[Datum] > Date() - 1" & " AND " & "[Datum] < Date() + 1 + " & p1
stLinkCriteria = stLinkCriteria & " AND " & stLinkCriteria1
’ otevreme tiskovou sestavu
DoCmd.OpenReport stDocName, acPreview, , stLinkCriteria
Form_Vypujcka.Visible = False
Else
’ pokud plati upominku, tak pridame jen 1 novy zaznam
DoCmd.GoToRecord , , acNewRec
117
’ vytvorime kriteria na tiskovou sestavu
stDocName = "Vypujcka"
stLinkCriteria = "[Klient]=" & p3 & " AND " & "[Nazev_filmu]=" & p2
stLinkCriteria1 = "[Datum] = Date()" & " AND " & "[Vypujcni_den] < 0"
stLinkCriteria = stLinkCriteria & " AND " & stLinkCriteria1
’ dale otevreme tiskovou sestavu
DoCmd.OpenReport stDocName, acPreview, , stLinkCriteria
Form_Vypujcka.Visible = False
End If
’ znepristupnime nektera tlacitka a naopak tlacitko Zpet zpristupnime
Me.plus.Enabled = False
Me.minus.Enabled = False
Me.Datum.Value = Date
Me.zpet.Enabled = True
Me.zpet.SetFocus
Me.pridej.Enabled = False
Klient.Tag = "ne"
Nazev_filmu.Tag = "ne"
Exit_pridat_Click:
Exit Sub
Err_pridat_Click:
MsgBox Err.Description
Resume Exit_pridat_Click
End Sub
Private Sub zpet_Click()
’ navrat z tohoto formulare do formulare odkud jsme se sem dostali
Dim stDocName As String, stLinkCriteria3 As String, stLinkCriteria2 As String
Dim stLinkCriteria As String, stLinkCriteria1 As String
On Error GoTo Err_zpet_Click
’ musıme zjistit z ktereho formulare jsme se sem dostali a kam se tedy mame vratit
If Me.zpet.Tag = "DnesniRezervace" Then
’ pokud jsme se sem dostali pres vyber rezervace, ale film jsme si nepujcili
Form_DnesniRezervace.Visible = True
Form_DnesniRezervace.Vyrizena.Value = False
Else
If Me.zpet.Tag = "Nabidka" Then
Form_Nabidka.Visible = True
Else
’ pokud jsme se sem dostali pres vyber rezervace a film jsme si pujcili,
’ tak se vratime do formulare nabidka a formular Dnesni rezervace zavreme
Form_Nabidka.Visible = True
DoCmd.Close acForm, "DnesniRezervace", acSaveYes
’ dale zavreme formular, ze ktereho jsme se dostali do formulare DnesniRezervace
If AktualForm = "iklienti" Then
DoCmd.Close acForm, "Iklienti", acSaveNo
Else
DoCmd.Close acForm, "Rezervace", acSaveNo
End If
End If
End If
DoCmd.Close acForm, "Vypujcka", acSaveNo
118
Exit_zpet_Click:
Exit Sub
Err_zpet_Click:
MsgBox Err.Description
Resume Exit_zpet_Click
End Sub
Private Sub iklient_Click()
’ zobrazeni informaci o filmu
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_iklient_Click
’ pokud neni zadano jmeno klienta, tak o tom dame hlasku
If Klient.Tag = "ne" And Form_Nabidka.klientvyber.Tag = "ne" Then
MsgBox "Nenı zada no jmŘ no klienta"
Exit Sub
End If
’ vytvoreni kriterii pro otevreni formulare
stDocName = "Iklienti"
stLinkCriteria = "[IDklient]=" & Me![Klient]
’ vlastni otevreni formulare Ifilm
DoCmd.OpenForm stDocName, , , stLinkCriteria
Form_Iklienti.zpet.Tag = "vypujcka"
Form_Vypujcka.Visible = False
Exit_iklient_Click:
Exit Sub
Err_iklient_Click:
MsgBox Err.Description
Resume Exit_iklient_Click
End Sub
5.3.2.40
Formular VyrizeneRezervace
Option Compare Database
Option Explicit
Private Sub Form_Load()
’ zavedeni formulare, pokud neni zadny zaznam, tak o tom dame zpravu
If Me.CurrentRecord = 0 Then
Form_Iklienti.Visible = True
DoCmd.Close acForm, "vyrizenerezervace", acSaveNo
MsgBox "Nenı z a dna vyrızena rezervace."
Else
Me.zpet.SetFocus
End If
End Sub
Private Sub zpet_Click()
’ navrat do formulare Iklienti
Navrat
Form_Iklienti.Visible = True
End Sub
119
5.3.2.41
Formular VysledkyHledani1
Option Compare Database
Option Explicit
Private Sub Form_Current()
’ nastavime fokus na tlacitko vloz
Me.vloz.SetFocus
End Sub
Private Sub Form_Load()
’ zneviditelnime formular
Me.Visible = False
End Sub
Private Sub vloz_Click()
’ vlozeni nazvu filmu do formulare HledaniFilmu a zavreni aktualniho formulare
Dim pom1 As String, pom2 As Integer
On Error GoTo Err_vloz_Click
pom1 = Me.Nazev_filmu.Value
pom2 = Me.IDfilmu.Value
DoCmd.Close
’ zviditelneni formulare HledaniFilmu a vlozeni nazvu filmu
Form_HledaniFilmu.Visible = True
Form_HledaniFilmu.NazevFilmu.Visible = True
Form_HledaniFilmu.vloz.Visible = True
Form_HledaniFilmu.NazevFilmu.Value = pom1
Form_HledaniFilmu.IDfilmu.Value = pom2
Exit_vloz_Click:
Exit Sub
Err_vloz_Click:
MsgBox Err.Description
Resume Exit_vloz_Click
End Sub
Private Sub zpet_Click()
’ navrat do formulare HledaniFilmu
Navrat
Form_HledaniFilmu.Visible = True
Form_HledaniFilmu.NazevFilmu.Visible = False
Form_HledaniFilmu.vloz.Visible = False
End Sub
5.3.2.42
Formular VysledkyHledani2
Option Compare Database
Option Explicit
Private Sub Form_Current()
’ nastavime fokus na tlacitko vloz
Me.vloz.SetFocus
End Sub
Private Sub Form_Load()
’ zneviditelnime formular
120
Me.Visible = False
End Sub
Private Sub vloz_Click()
’ vlozeni nazvu filmu do formulare HledaniFilmu a zavreni aktualniho formulare
Dim pom1 As String, pom2 As Integer
On Error GoTo Err_vloz_Click
pom1 = Me.Nazev_filmu.Value
pom2 = Me.IDfilmu.Value
DoCmd.Close
’ zviditelneni formulare HledaniFilmu a vlozeni nazvu filmu
Form_HledaniFilmu.Visible = True
Form_HledaniFilmu.NazevFilmu.Visible = True
Form_HledaniFilmu.vloz.Visible = True
Form_HledaniFilmu.NazevFilmu.Value = pom1
Form_HledaniFilmu.IDfilmu.Value = pom2
Exit_vloz_Click:
Exit Sub
Err_vloz_Click:
MsgBox Err.Description
Resume Exit_vloz_Click
End Sub
Private Sub zpet_Click()
’ navrat do formulare HledaniFilmu
Navrat
Form_HledaniFilmu.Visible = True
Form_HledaniFilmu.NazevFilmu.Visible = False
Form_HledaniFilmu.vloz.Visible = False
End Sub
5.3.2.43
Formular Zeme
Option Compare Database
Option Explicit
Private Sub zpet_Click()
’ navrat do formulare FirmaData
Navrat
Form_FirmaData.Visible = True
End Sub
5.3.3
Zdrojovykod Modulu
Option Compare Database
Option Explicit
Public kalend As String, MaxDnu As Integer, AktualForm As String, OdDatum As Date, DoDatum As Date
Function DatumOd()
’ globalni funkce pro dotazy UtrataKlientuPom, VydelekFilmuPom, VydelekZanruPom
DatumOd = OdDatum
End Function
121
Function DatumDo()
’ globalni funkce pro dotazy UtrataKlientuPom, VydelekFilmuPom, VydelekZanruPom
DatumDo = DoDatum
End Function
Sub OtevreniKalendare()
’ procedura na otevreni formulare Kalendar
On Error GoTo Err_Click
Dim stDocName As String
Dim stLinkCriteria As String
’ vlastni otevreni formulare Kalendar
stDocName = "Kalendar"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Click:
Exit Sub
Err_Click:
MsgBox Err.Description
Resume Exit_Click
End Sub
Function KriteriaDatumu(HodnotaOd, HodnotaDo, Kriteria)
’ funkce na vytvoreni kriterii na datum
’ pouziva se ve formulari Iklienti
Dim stLinkCriteria1 As String, stLinkCriteria2 As String
Dim PomOd As Integer, PomDo As Integer
If Not IsNull(HodnotaOd) And Not IsNull(HodnotaDo) Then
’ pokud je zadano datum Od i Do
PomOd = Date - HodnotaOd
PomDo = Date - HodnotaDo
stLinkCriteria1 = "[Datum] > " & "Date() - " & Str(PomOd) & " - 1"
stLinkCriteria2 = "[Datum] < " & "Date() - " & Str(PomDo) & " + 1"
KriteriaDatumu = Kriteria & " and " & stLinkCriteria1 & " and " & stLinkCriteria2
Else
If Not IsNull(HodnotaOd) Then
’ pokud je zadano jen datum Od
PomOd = Date - HodnotaOd
stLinkCriteria1 = "[Datum] > " & "Date() - " & Str(PomOd) & " - 1"
KriteriaDatumu = Kriteria & " and " & stLinkCriteria1
ElseIf Not IsNull(HodnotaDo) Then
’ pokud je zadano jen datum Do
PomDo = Date - HodnotaDo
stLinkCriteria1 = "[Datum] < " & "Date() - " & Str(PomDo) & " + 1"
KriteriaDatumu = Kriteria & " and " & stLinkCriteria1
Else
KriteriaDatumu = Kriteria
End If
End If
End Function
Function StavZadosti()
’ zobrazovani aktualniho stavu zadosti o nove heslo
122
Dim stDocName As String, stLinkCriteria As String
On Error GoTo Err_info_Click
stDocName = "NoveHeslo"
stLinkCriteria = "[Vyrizeno]=false"
’ otevreme formular NoveHeslo s podminkou
DoCmd.OpenForm stDocName, , , stLinkCriteria
Form_NoveHeslo.Visible = False
’ zjistime, kolik zaznamu je ve formulari
If Form_NoveHeslo.CurrentRecord <> 0 Then
DoCmd.GoToRecord acDataForm, stDocName, acLast
StavZadosti = Form_NoveHeslo.CurrentRecord
DoCmd.Close acForm, stDocName, acSaveNo
Else
StavZadosti = 0
End If
Exit_info_Click:
Exit Function
Err_info_Click:
MsgBox Err.Description
Resume Exit_info_Click
End Function
Sub Navrat()
’ navrat z formularu
On Error GoTo Err_zpet_Click
DoCmd.Close
Exit_zpet_Click:
Exit Sub
Err_zpet_Click:
MsgBox Err.Description
Resume Exit_zpet_Click
End Sub
5.4
5.4.1
Videopujc ovna na WWW
Adrsarova struktura ulozenı souboru
Root
Ø Pictures
Ø Private
Ø Video
Ø Chyby
Ø Klient
Ø Rezervace
Ø Vstupy
Ø Vysledky
123
5.4.2
Adresar Root
v Obsahuje tyto soubory: Global.asa
Index.htm
5.4.2.1
Soubor Global.asa
<SCRIPT LANGUAGE="VBScript" RUNAT=Server>
option explicit
Sub Session_OnStart
’ nastaveni nekterych globalnich promennych pro kazdeho uzivatele
’ Film-pocet filmu, na ktere se podival
Session("Film")="0"
’ Heslo-pocet, kolikrat se jiz spletl v hesle
Session("Heslo")="0"
End Sub
</SCRIPT>
<OBJECT RUNAT=Server SCOPE=Session ID=MyInfo PROGID="MSWC.MyInfo">
</OBJECT>
5.4.2.2
Soubor Index.htm
<HTML>
<!-rozdeleni okna na nekolik ramu
-->
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
<TITLE>Videopujcovna Vitezslava Kristofa</TITLE>
</HEAD>
<FRAMESET COLS="225,*" >
<FRAME SRC="Video\MenuHledani.html" framespacing="0" NAME="menu" target="contents" >
<FRAMESET ROWS="70,*" noresize>
<FRAME SRC="Video\Title.html" NAME="title" SCROLLING=NO>
<FRAME SRC="Video\HledaniUvod.html" NAME="main">
</FRAMESET>
</FRAMESET>
<NOFRAMES>
<p>This page uses frames, but your browser doesn’t support them.</p>
</NOFRAMES>
</HTML>
5.4.3
Adresar Root/Video
v Obsahuje tyto soubory: Title.html
MenuHledani.html
HledaniUvod.html
Hledani1.html
Hledani2.asp
Klient.html
124
5.4.3.1
Soubor Title.html
<HTML>
<!--zobrazeni nadpisu videopujcovny-->
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
<TITLE>Titulek</TITLE>
</HEAD>
<BODY background=..\Pictures\Pozadi08.jpg text=Black>
<center>
<H1>Videopujc ovna</H1>
</center>
</BODY>
</HTML>
5.4.3.2
Soubor MenuHledani.html
<HTML>
<!-zobrazeni hlavniho menu videopujcovny
-->
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
<style type="text/css">
a:visited { text-decoration: none; color: brown }
a:link
{ text-decoration: none; color: brown }
</style>
<TITLE>Hledani filmu</TITLE>
<SCRIPT language="VBScript">
<!-option explicit
sub over(i)
’ procedura na zmenu barev okraju pri najeti nad pozadovane menu
if i=11 then
Hledani1.style.color=rgb(0,0,255)
Hledani2.style.color=rgb(0,0,255)
elseif i=12 then
Hledani1.style.color=rgb(255,0,0)
Hledani2.style.color=rgb(255,0,0)
elseif i=13 then
Hledani3.style.color=rgb(0,0,255)
Hledani4.style.color=rgb(0,0,255)
elseif i=14 then
Hledani3.style.color=rgb(255,0,0)
Hledani4.style.color=rgb(255,0,0)
elseif i=15 then
Info1.style.color=rgb(0,0,255)
Info2.style.color=rgb(0,0,255)
elseif i=16 then
Info1.style.color=rgb(255,0,0)
Info2.style.color=rgb(255,0,0)
125
elseif i=21 then
Vysledky1.style.color=rgb(0,0,255)
Vysledky2.style.color=rgb(0,0,255)
elseif i=22 then
Vysledky1.style.color=rgb(255,0,0)
Vysledky2.style.color=rgb(255,0,0)
elseif i=01 then
Uvod1.style.color=rgb(0,0,255)
Uvod2.style.color=rgb(0,0,255)
elseif i=02 then
Uvod1.style.color=rgb(255,0,0)
Uvod2.style.color=rgb(255,0,0)
end if
end sub
-->
</SCRIPT>
</HEAD>
<base target="main">
<BODY background=..\Pictures\Pozadi04.gif id=Body text=Yellow>
<!-zobrazeni jednotlivych polozek menu
-->
<table border=0 width=*>
<tr><td align=center><img src=..\Pictures\video.jpg><P>
<tr>
<td align=center><font size=7 color=Blue>
<SPAN ID="Uvod1"><B>.</B></font><A Href=HledaniUvod.html onmouseover="over 01"
onmouseout="over 02" ><font size=4><B>Švod</B></font></A><font size=25 color=Blue><SPAN
ID="Uvod2"><B>.</B></font>
<tr>
<td align=center>
<font size=7 color=Blue>
<SPAN ID="Hledani1"><B>.</B></font><A Href=Hledani1.html onmouseover="over 11"
onmouseout="over 12" ><font size=4><B>Hleda nı&nbsp;&nbsp;za kladnı</B></font></A><font
size=25 color=Blue><SPAN ID="Hledani2"><B>.</B></font>
<tr>
<td align=center>
<font size=7 color=Blue>
<SPAN ID="Hledani3"><B>.</B></font><A Href=Hledani2.asp onmouseover="over 13"
onmouseout="over 14" ><font size=4><B>Hleda nı&nbsp;&nbsp;pokroc ilŘ </B></font></A><font
size=25 color=Blue><SPAN ID="Hledani4"><B>.</B></font>
<tr>
<td align=center>
<font size=7 color=Blue>
<SPAN ID="Info1"><B>.</B></font><A Href=Klient.html onmouseover="over 15"
onmouseout="over 16" ><font size=4><B>Informace&nbsp;o&nbsp;klientovi</B></font></A><font
size=25 color=Blue><SPAN ID="Info2"><B>.</B></font>
<tr>
<td align=center>
<font size=25 color=Blue>
<SPAN ID="Vysledky1"><B>.</B></font><A Href="vysledky/vysledky3.asp" onmouseover="over
21" onmouseout="over 22"><font size=4><B>Vy sledky&nbsp;hleda nı</B></font></A><font size=25
color=Blue><SPAN ID="Vysledky2"><B>.</B></font>
<tr>
<td align=center>
</table>
126
</BODY>
</HTML>
5.4.3.3
Soubor HledaniUvod.html
<HTML>
<!Ž
zobrazeni informaci o videopujcovne
-->
<HEAD>
<META name=VI60_defaultClientScript content=VBScript>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
<TITLE></TITLE>
</HEAD>
<BODY background=..\Pictures\Pozadi03.gif text=black>
<P>&nbsp;</P>
<font size=5 color=blue><center><EM>
Vıtejte na&nbsp;stra nka ch virtua lnı videopujc ovny.
</EM></center></font>
<P>&nbsp;<P>
<font size=4>
&nbsp;&nbsp;&nbsp;&nbsp;V tŘ to virtua lnı videopujc ovne muz ete vyhleda vat filmy podle ruzny ch kritŘ riı.
C lenovŘ videopujc ovny si mohou jednotlivŘ filmy takŘ rezervovat. Da le majı c lenovŘ moz nost se dozvedet
informace, kterŘ filmy majı pujc enŘ a kterŘ rezervovanŘ . Navıc je zde moz nost si zmenit heslo pro vstup
z internetu.
<P>
&nbsp;&nbsp;&nbsp;&nbsp;Pokud si zvolıte vyhleda va nı za kladnı, tak muz ete vyhleda vat bu“ na zvu filmu,
nebo prıjmenı herce a nebo prıjmenı rez isŘ ra.
<P>
&nbsp;&nbsp;&nbsp;&nbsp;Pokud si zvolıte vyhleda va nı pokroc ilŘ , potom budete vyhleda vat film podle
nekolika ruzny ch kritŘ riı. Vsechna tato kritŘ ria se budou vyhodnocovat pomocı logickŘ spojky "AND", tzn.
vy sledkem vyhleda va nı budou jen ty filmy, kteŘ budou vyhovovat vsem va mi zadany m kritŘ riım.
<P>
&nbsp;&nbsp;&nbsp;&nbsp;Poloz ka informace o klientovi je jen pro c leny videopujc ovny. V&nbsp;prıpade
spra vne zadanŘ ho identifikac nıho c ısla a hesla se klient dostane do svŘ identifikac nı karty, kde vidı svŘ osobnı
ďdaje, jakŘ filmy ma pujc enŘ a rezervovanŘ , da le ma moz nost si zde zmenit svoje heslo a takŘ zrusit libovolnou
svoji rezervaci.
<P>
<b>&nbsp;&nbsp;&nbsp;&nbsp;Pozor! Vase heslo bude zablokova no po 5-ti neďspesny ch pokusech.</b>
<P>
&nbsp;&nbsp;&nbsp;&nbsp;Pod oznac enım Vy sledky vyhleda va nı se skry vajı vsechny filmy, na kterŘ jste se
behem svŘ dnesnı na vstevy videopujc ovny dıvali.
</font></P>
</BODY>
</HTML>
5.4.3.4
Soubor Hledani1.html
<HTML>
<!-zobrazeni formulare pro jednoduche vyhledavani
-->
<HEAD>
<META name=VI60_defaultClientScript content=VBScript>
<TITLE>Hledani ve videopujcovne</TITLE>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
127
<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
<!-Function Hledani1_onsubmit
’ odeslani formulare na vyhledani nazvu filmu, pokud je dobre vyplnen
if (len(trim(hledani1.film.value))>0) and (len(trim(hledani1.film.value))<3) and
(hledani1.checknazev.checked=false) then
msgbox "Musıte zadat minima lne 3 pısmena na zvu filmu"
Hledani1.film.select
Hledani1_OnSubmit = False
end if
End Function
-->
</SCRIPT>
</HEAD>
<BODY background=..\Pictures\Pozadi03.gif text=Black>
<!-- zobrazeni nadpisu stanky -->
<table border="1" width="100%">
<tr>
<td width="100%" bgcolor="#000080">
<p align="center"><b><font face="Arial" size="5" color="#ffffff">
Vyhleda va nı&nbsp;filmu&nbsp;podle&nbsp;zadany ch&nbsp;kritŘ riı</font></b></p>
</td>
</tr>
</table>
<P>&nbsp;</P>
<!-- formular pro vyhledavani nazvu filmu -->
<form method="get" action="Vysledky/vysledky1f.asp" name=Hledani1>
<table>
<tr>
<td width=150>Zadej&nbsp;c a st&nbsp;na zvu&nbsp;filmu: </td>
<td><INPUT id=film name=film style="HEIGHT: 22px; WIDTH: 98px"></td>
<td>&nbsp;&nbsp;je&nbsp;od&nbsp;zac a tku? </td>
<td><INPUT id=checknazev name=checknazev type=checkbox checked></td>
</tr>
<tr>
<td>&nbsp; </td>
</tr>
<tr>
<!-- vyber po kolikati zaznamech se budou vysledky zobrazovat -->
<td>Zobrazuj&nbsp;po
<SELECT id=zobraz name=zobraz value="5">
<OPTION value=5>5</OPTION>
<OPTION value=10>10</OPTION>
<OPTION value=15>15</OPTION>
<OPTION value=20>20</OPTION>
</SELECT>
vy sledcıch</td>
<td align=right><IMG src="..\Pictures\ruka1.gif" >&nbsp;&nbsp; </td>
<td><INPUT id=poslatF name=poslatF type=submit value=Hledej>
<INPUT id=str name=str value=1 style="HEIGHT: 5px; VISIBILITY: hidden; WIDTH: 5px"
>
</td>
</tr>
</table>
<P>
128
<table>
<tr>
<td style="TEXT-ALIGN: left" vAlign=top><STRONG>Upozornenı:&nbsp;&nbsp;&nbsp;
</STRONG></td>
<td>Pokud&nbsp;nebude&nbsp;polıc ko&nbsp;"Je&nbsp;od&nbsp;zac a tku?"&nbsp;zaskrtnut
o, je nutnŘ zadat alespon3 pısmena.</td>
</tr>
</table>
</form>
<hr>
<!-- formular pro vyhledavani jmena herce -->
<form method="get" action="Vysledky/vysledky1h.asp" name=Hledani2>
<table>
<tr>
<td>Zadej&nbsp;c a st&nbsp;prıjmenı&nbsp;herce: </td>
<td><INPUT id=herec name=herec style="HEIGHT: 22px; WIDTH: 98px"></td>
<td>&nbsp; </td>
<td>&nbsp; </td>
<td>&nbsp; </td>
</tr>
<tr>
<td>&nbsp; </td>
</tr>
<tr>
<!-- vyber po kolikati zaznamech se budou vysledky zobrazovat -->
<td>Zobrazuj&nbsp;po
<SELECT id=zobraz name=zobraz value="5">
<OPTION value=5>5</OPTION>
<OPTION value=10>10</OPTION>
<OPTION value=15>15</OPTION>
<OPTION value=20>20</OPTION>
</SELECT>
vy sledcıch</td>
<td align=right><IMG src="..\Pictures\ruka1.gif" >&nbsp;&nbsp; </td>
<td><INPUT id=poslatH name=poslatH type=submit value=Hledej>
<INPUT id=str name=str value=1 style="HEIGHT: 5px; VISIBILITY: hidden; WIDTH:
5px" > </td>
</tr>
</table>
</form>
<hr>
<!-formular pro vyhledavani jmena rezisera
-->
<form method="get" action="Vysledky/vysledky1r.asp" name=Hledani3>
<table>
<tr>
<td>Zadej&nbsp;c a st&nbsp;prıjmenı&nbsp;rez isŘ ra: </td>
<td><INPUT id=reziser name=reziser style="HEIGHT: 22px; WIDTH: 99px"></td>
</tr>
<tr>
<td>&nbsp; </td>
</tr>
<tr>
<!-- vyber po kolikati zaznamech se budou vysledky zobrazovat -->
<td>Zobrazuj&nbsp;po
<SELECT id=zobraz name=zobraz value="5">
<OPTION value=5>5</OPTION>
129
<OPTION value=10>10</OPTION>
<OPTION value=15>15</OPTION>
<OPTION value=20>20</OPTION>
</SELECT>
vy sledcıch</td>
<td align=right><IMG src="..\Pictures\ruka1.gif" >&nbsp;&nbsp; </td>
<td><INPUT id=poslatR name=poslatR type=submit value=Hledej>
<INPUT id=str name=str value=1 style="HEIGHT: 5px; VISIBILITY: hidden; WIDTH: 5px">
</td>
</tr>
</table>
</form>
<hr>
</BODY>
</HTML>
5.4.3.5
Soubor Hledani2.asp
<%@ Language=VBScript %>
<%
’ zobrazeni formulare pro pokrocile vyhledavani
option explicit
Dim Conn,Data,I
’ vytorime spojeni na databazi
Set Conn = Server.CreateObject("ADODB.Connection")
Set Data = Server.CreateObject("ADODB.recordset")
Conn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\private") &
"\VideoWWW.mdb;"
%>
<HTML>
<HEAD>
<TITLE>Hledani ve videopujcovne</TITLE>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
<!-Function Hledani2_onsubmit
’ odeslani formulare pokud jsou splneny nektere podminky
if (len(trim(hledani2.nazev.value))>0) and (len(trim(hledani2.nazev.value))<3) and
(hledani2.checknazev.checked=false) then
msgbox "Musıte zadat minima lne 3 pısmena na zvu filmu"
Hledani2.nazev.select
Hledani2_OnSubmit = False
end if
End Function
-->
</SCRIPT>
</HEAD>
<BODY background=..\Pictures\Pozadi03.gif text=Black>
<!-- zobrazeni nadpisu stanky -->
<table border="1" width="100%">
<tr>
130
<td width="100%" bgcolor="#000080">
<p align="center"><b><font face="Arial" size="5" color="#FFFFFF">
Vyhleda va nı&nbsp;filmu&nbsp;podle zadany ch kritŘ riı</font></b></p>
</td>
</tr>
</table>
<form method="GET" action="Vysledky/vysledky2.asp" name=Hledani2>
<table>
<tr>
<!-- policko pro vyhledavani nazvu filmu -->
<td>Zadej&nbsp;c a st&nbsp;na zvu&nbsp;filmu:</td>
<td><INPUT id=nazev name=nazev>&nbsp;&nbsp;</td>
<td>je&nbsp;od&nbsp;zac a tku?</td>
<td><INPUT id=checknazev name=checknazev type=checkbox checked></td>
</tr>
<tr>
<!-- policko pro vyhledavani jmena herce -->
<td>Zadej&nbsp;c a st&nbsp;prıjmenı&nbsp;herce:</td>
<td><INPUT id=herec name=herec></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<!-- policko pro vyhledavani jmena rezisera -->
<td>Zadej&nbsp;c a st&nbsp;prıjmenı&nbsp;rez isŘ ra:</td>
<td><INPUT id=reziser name=reziser></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
<hr>
<!-- zobrazeni upozorneni -->
<table>
<tr>
<td style="TEXT-ALIGN: left" vAlign=top>
<STRONG>Upozornenı:&nbsp;&nbsp;&nbsp;&nbsp;</STRONG></td>
<td>Pokud&nbsp;nebude&nbsp;polıc ko&nbsp;"Je&nbsp;od&nbsp;zac a tku?"&nbsp;zaskrtnuto,
je nutnŘ zadat alespon3 pısmena.</td>
</tr>
</table>
<hr>
<table>
<tr>
<!-- vyber zanru filmu -->
<td>Vyber&nbsp;z a nr&nbsp;filmu:</td>
<td><SELECT id=zanr name=Zanr style="HEIGHT: 22px; WIDTH: 160px" value="vyber
z a nr filmu">
<OPTION value=0>vyber z a nr filmu
</OPTION>
<%’ zobrazeni nazvu zanru
Data.open "SELECT * FROM zanr ORDER BY zanr",Conn
I=1
do while Not Data.eof%>
<OPTION value=<%=Data("IDzanru")%>><%=Data("Zanr")%>
</OPTION>
131
<%Data.MoveNext
I=I+1
loop
Set Data=Nothing
%>
</SELECT></td>
</tr>
<tr>
<!-- vyber roku vyroby -->
<td>Vyber&nbsp;rok&nbsp;vy roby:&nbsp;&nbsp;</td>
<td><SELECT id=rokVyroby name=Rok style="HEIGHT: 22px; WIDTH: 160px"
value="vyber rok vy roby">
<OPTION value=0>vyber rok vy roby
</OPTION>
<%’ zobrazeni roku vyroby filmu
Set Data = Server.CreateObject("ADODB.recordset")
Data.open "SELECT DISTINCT rok_vyroby FROM film",Conn
do while Not Data.eof%>
<OPTION value=<%=Data("rok_vyroby")%>><%=Data("rok_vyroby")%>
</OPTION>
<%Data.MoveNext
loop
Set Data=Nothing
%>
</SELECT></td>
</tr>
<tr>
<!-- vyber zeme, kde byl film vyroben -->
<td>Vyber&nbsp;zemi,&nbsp;kde&nbsp;byl&nbsp;vyroben:&nbsp;&nbsp;</td>
<td><SELECT id=zeme name=zeme style="HEIGHT: 22px; WIDTH: 160px" value="vyber
zemi">
<OPTION value=0>vyber zemi
</OPTION>
<%’ zobrazeni nazvu zeme
Set Data = Server.CreateObject("ADODB.recordset")
Data.open "SELECT * FROM zeme",Conn
do while Not Data.eof%>
<OPTION value=<%=Data("IDzeme")%>><%=Data("nazev_zeme")%>
</OPTION>
<%Data.MoveNext
loop
Set Data=Nothing
%>
</SELECT></td>
</tr>
<tr>
<!-- vyber delky filmu -->
<td>Zvol&nbsp;dŘ lku&nbsp;filmu&nbsp;(minuty):&nbsp;&nbsp;</td>
<td><SELECT id=delka name=delka style="HEIGHT: 22px; WIDTH: 160px" value="vyber
delku filmu">
<OPTION value=0>vyber delku filmu
</OPTION>
<%’ zobrazeni delky filmu
Set Data = Server.CreateObject("ADODB.recordset")
Data.open "SELECT DISTINCT Delka_filmu FROM film",Conn
do while Not Data.eof%>
132
<OPTION value=<%=Data("Delka_filmu")%>>
<%=Data("Delka_filmu")%>
</OPTION>
<%Data.MoveNext
loop
Set Data=Nothing
%>
</SELECT></td>
</tr>
<tr>
<!-- vyber ceny filmu -->
<td>Zvol&nbsp;cenu&nbsp;filmu&nbsp;za&nbsp;1&nbsp;den&nbsp;(Kc ):&nbsp;&nbsp;</td>
<td><SELECT id=cena name=cena style="HEIGHT: 22px; WIDTH: 160px" value="vyber
cenu filmu">
<OPTION value=0>vyber cenu filmu
</OPTION>
<%’ zobrazeni ceny vypujcky na 1 den
Set Data = Server.CreateObject("ADODB.recordset")
Data.open "SELECT DISTINCT Cena_za_1_den FROM film",Conn
do while Not Data.eof%>
<OPTION value=<%=Data("Cena_za_1_den")%>>
<%=Data("Cena_za_1_den")%>
</OPTION>
<%Data.MoveNext
loop
Set Data=Nothing
%>
</SELECT></td>
</tr>
<tr>
<!-- vyber delky vypujcky -->
<td>Zvol&nbsp;maxima lnı&nbsp;dŘ lku&nbsp;vy pujc ky&nbsp;(dny):&nbsp;&nbsp;</td>
<td><SELECT id=vypujcka name=vypujcka style="HEIGHT: 22px; WIDTH: 160px"
value="vyber delku vypujcky">
<OPTION value=0>vyber delku vypujcky
</OPTION>
<%’ zobrazeni delky vypujcky
Set Data = Server.CreateObject("ADODB.recordset")
Data.open "SELECT DISTINCT Delka_vypujcky FROM film",Conn
do while Not Data.eof%>
<OPTION value=<%=Data("Delka_vypujcky")%>>
<%=Data("Delka_vypujcky")%>
</OPTION>
<%Data.MoveNext
loop
Set Data=Nothing
%>
</SELECT></td>
</tr>
<tr>
<!-- vyber zda je film pujceny -->
<td>Zvol,&nbsp;zda&nbsp;je&nbsp;film&nbsp;vypujc eny :&nbsp;&nbsp;</td>
<td><SELECT id=pujceny name=pujceny style="HEIGHT: 22px; WIDTH: 160px"
value="vyber, zda je pujc eny ">
<OPTION value=0>vyber, zda je pujc eny
</OPTION>
133
<OPTION value=1>ANO - je pujc eny
</OPTION>
<OPTION value=2>NE - nenı pujc eny
</OPTION>
</SELECT></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<!-- vyber po kolikati zaznamech se budou vysledky zobrazovat -->
<td>Zobrazuj&nbsp;po
<SELECT id=zobraz name=zobraz value="5">
<OPTION value=5>5</OPTION>
<OPTION value=10>10</OPTION>
<OPTION value=15>15</OPTION>
<OPTION value=20>20</OPTION>
</SELECT>
vy sledcıch</td>
<td align=right><img src=..\Pictures\ruka1.gif>&nbsp;&nbsp;
<input name=hledat type=submit value="Hledej" id=hledat style="HEIGHT: 24px; WIDTH:
78px">
</tr>
</table>
<INPUT id=str name=str value=1 style="HEIGHT: 5px; VISIBILITY: hidden; WIDTH: 5px" >
</form>
<hr>
<%
Conn.close
Set Conn=Nothing
%>
</BODY>
</HTML>
5.4.3.6
Soubor Klient.html
<HTML>
<!-zobrazeni formulare pro identofikaci klienta do systemu
-->
<HEAD>
<META name=VI60_defaultClientScript content=VBScript>
<title>Informace o klientovi</title>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
<!-Function vstup_onsubmit
’ odeslani dat o klientovi
if IsNumeric(vstup.klient.value) then
’ pokud je vyplneno ID klienta, pak formular odesleme
vstup_onsubmit = true
134
else
’ pokud neni zadano cislo klienta
msgbox "Ma te spatne zadanŘ ID klienta."
vstup_onsubmit = false
end if
End Function
-->
</SCRIPT>
</HEAD>
<BODY background=..\Pictures\Pozadi03.gif text=Black>
<!-- zobrazeni nadpisu stranky -->
<table border="1" width="100%">
<tr>
<td width="100%" bgcolor="#000080">
<p align="center"><b><font face="Arial" size="5" color="#ffffff">
Identifikace&nbsp;klienta</font></b></p>
</td>
</tr>
</table>
<P>&nbsp;</P>
<!-- zobrazeni formulare na zadani ID klienta a hesla -->
<center>
<form method="post" action="Vstupy/Vstup1.asp" name=vstup>
<table border=0>
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td><font STYLE="font-weight=bold"
size=4>Zadejte&nbsp;Vase&nbsp;ID:&nbsp;</font></td>
<td><INPUT type="text" id=klient name=klient style="HEIGHT: 22px; WIDTH:
100px"></td>
<tr>
<tr>
<td><font STYLE="font-weight=bold" size=4>Zadejte&nbsp;heslo:&nbsp;</font></td>
<td><INPUT type="password" id=heslo name=heslo style="HEIGHT: 22px; WIDTH:
100px"></td>
</tr>
</table>
<P><BR>
<INPUT type=submit value="Vstupte" id=ok name=ok style="HEIGHT: 24px; WIDTH: 70px">
</form>
</center>
</BODY>
</HTML>
5.4.4
Adresar Root/Video/Vysledky
v Obsahuje tyto soubory: Vysledky1f.asp
Vysledky1h.asp
Vysledky1r.asp
Vysledky2.asp
Vysledky3.asp
Film.asp
Herec.asp
Reziser.asp
135
5.4.4.1
Soubor Vysledky1f.asp
<%@ Language=VBScript %>
<%
’ zobrazeni vysledku vyhledavani jmena filmu
option explicit
Dim Conn,Data,Kriteria,film,Pocet,vysledky,stranka,I
’ vytorime spojeni na databazi
Set Conn = Server.CreateObject("ADODB.Connection")
Set Data = Server.CreateObject("ADODB.recordset")
Conn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="&Server.MapPath("\private") &
"\VideoWWW.mdb;"
%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
<style type="text/css">
a:visited { text-decoration: none; color: white }
a:link
{ text-decoration: none; color: white }
a:hover
{ text-decoration: underline; color: yellow; font-weight: bold }
</style>
</HEAD>
<BODY background=..\..\Pictures\Pozadi02.gif text=Bisque>
<!-- zobrazeni nadpisu stranky -->
<table border="1" width="100%">
<tr>
<td width="100%" bgcolor="#000080">
<p align="center"><b><font face="Arial" size="5" color="#ffffff">Vy sledky
vyhleda va nı</font></b></p>
</td>
</tr>
</table>
<BR>&nbsp;<BR>
<%
’ zjistime si po kolika vysledcich zobrazovat
vysledky=cint(Request.QueryString("zobraz"))
’ zjistime si na jake jsme strance
stranka=cint(Request.QueryString("str"))
’ zjistime jaky text mame hledat, pak ho priradime do promenne film
’ a ulozime take text kriteria
if len(trim(Request.QueryString("film")))>0 then
’ pokud bylo zadano nejake kriterium na vyhledavani filmu
film=Request.QueryString("film")
’ zjistime, jestli mame hledat od zacatku nebo i z prostredka
if Request.QueryString("checknazev")="on" then
Kriteria="na zev filmu zac ına na: &#34 " & film & " &#34 "
’ otevreme databazi se zadanou podminkou na zacatek nazvu filmu
Set Data = Server.CreateObject("ADODB.recordset")
Data.open "SELECT Nazev_filmu,IDfilmu FROM film WHERE
(Ucase(left([Nazev_filmu],len(’"+film+"’))) = Ucase(’"+film+"’)) ORDER BY
Nazev_filmu",Conn
else
Kriteria="na zev filmu obsahuje: &#34 " & film & " &#34 "
’ otevreme databazi se zadanou podminkou i uprostred nazvu filmu
136
Set Data = Server.CreateObject("ADODB.recordset")
Data.open "SELECT Nazev_filmu,IDfilmu FROM film WHERE ([Nazev_filmu]=
iif(instr([Nazev_filmu],Ucase(’"+film+"’)),[Nazev_filmu],false)) ORDER BY
Nazev_filmu",Conn
end if
else
’ nebylo zadano zadne kriterium otevreme databazi bez podminky
Set Data = Server.CreateObject("ADODB.recordset")
Data.open "SELECT * FROM film ORDER BY Nazev_filmu",Conn
end if
’ vypiseme kriteria na obrazovku
%>
<table>
<tr>
<td style="TEXT-ALIGN: left" vAlign=top width=110>
<STRONG>ZadanŘ &nbsp;kritŘ rium: &nbsp;&nbsp;&nbsp;&nbsp;</STRONG></td>
<td vAlign=top> <%=Kriteria%></td>
</tr>
</table>
<hr>
<br>
<%
’ spocitame celkovy pocet nalezenych zaznamu
Pocet=0
do while not Data.eof
Pocet=Pocet+1
Data.moveNext
loop
’ zobrazeni vysledku hledani
if Pocet=0 then
’ pokud nebyl nalezen zadny zaznam%>
<font color=Yellow>
<%Response.Write "Lituji, ale v databa zi nebyl nalezen z a dny film, kterŘ by vyhovoval vasemu
poz adavku."%>
</font>
<%else
Data.MoveFirst
I=1
if stranka<>1 then
’ pokud nesme na prvni strance, tak na zacatek name sipku s odkazem pro moznost
’ preskoceni na predchozi stranku
%>&nbsp;&nbsp;&nbsp;
<a href="vysledky1f.asp?film=<%=film%>&zobraz=<%=vysledky%>&str=<%=stranka1%>">
<img src=..\..\Pictures\sipka2.gif border=0 align=absmiddle></a> &nbsp;&nbsp;Zobraz
&nbsp;<%=(stranka-2)*vysledky+1%>.&nbsp;-&nbsp;<%=(stranka-1)*vysledky%>.
&nbsp;vy sledek&nbsp;z&nbsp;celkovŘ ho&nbsp;poc tu&nbsp;<%=Pocet%>.
<%
’ presuneme se na prvni zaznam na teto strance
data.move (stranka-1)*vysledky
end if
I=(1+(stranka-1)*vysledky)
do while (not Data.eof) and I<(1+stranka*vysledky)
’ vypisovani dokud neskoncime, nebo dokud nejsme na dalsi strance
%><P>&nbsp;&nbsp;&nbsp;
<img src=..\..\Pictures\ruka2.gif border=0 align=absmiddle>&nbsp;&nbsp;&nbsp;
<%Response.Write "<A HREF=""film.asp?id="&Data("IDfilmu")&""">" +
Data("Nazev_filmu")+"</A>"%>
137
</P>
<%I=I+1
Data.moveNext
loop
’ pokud jsme jeste neskoncili, tak zobrazime sipku s odkazem na dalsi stranku
if Pocet>I-1 then
if pocet=stranka*vysledky+1 then
’ pokud na dalsi strance je jiz jen posledni vysledek%>
&nbsp;&nbsp;&nbsp;
<a href="vysledky1f.asp?film=<%=film%>&zobraz=<%=vysledky%>
&str=<%=stranka+1%>">
<img src=..\..\Pictures\sipka3.gif border=0 align=absmiddle></a>
&nbsp;&nbsp;Zobraz&nbsp; <%=Pocet%>.&nbsp;vy sledek&nbsp;z&nbsp;
celkovŘ ho&nbsp;poc tu&nbsp;<%=Pocet%>.
<%else
if Pocet<(stranka+1)*vysledky then
’ pokud nasledujici stranka nebude plna, ale budou tam alespon 2
vysledky%>
&nbsp;&nbsp;&nbsp;
<a href="vysledky1f.asp?film=<%=film%>&zobraz=<%=vysledky%>
&str=<%=stranka+1%>">
<img src=..\..\Pictures\sipka3.gif border=0 align=absmiddle></a>
&nbsp;&nbsp;Zobraz&nbsp;<%=stranka*vysledky+1%>.&nbsp;&nbsp;<%=Pocet%>.&nbsp;vy sledek&nbsp;z&nbsp;celkovŘ ho&nbsp;poc tu
&nbsp;<%=Pocet%>.
<%else
’ pokud nasledujici stranka bude plna%>
&nbsp;&nbsp;&nbsp;
<a href="vysledky1f.asp?film=<%=film%>&zobraz=<%=vysledky%>
&str=<%=stranka+1%>">
<img src=..\..\Pictures\sipka3.gif border=0 align=absmiddle></a>
&nbsp;&nbsp;Zobraz&nbsp;<%=stranka*vysledky+1%>.&nbsp;&nbsp;<%=(stranka+1)*vysledky%>.&nbsp;vy sledek&nbsp;z&nbsp;celkov
Ř ho &nbsp;poc tu&nbsp;<%=Pocet%>.
<%end if
end if
end if
end if
’ uzavreme spojeni na databazi a odstranime z pameti promenne
Conn.close
Set Conn=Nothing
Set Data=Nothing
%>
</BODY>
</HTML>
5.4.4.2
Soubor Vysledky1h.asp
<%@ Language=VBScript %>
<%’ zobrazeni vysledku vyhledavani jmena herce
option explicit
Dim Conn,Data,Kriteria,herec,Pocet,vysledky,stranka,I
’ vytorime spojeni na databazi
Set Conn = Server.CreateObject("ADODB.Connection")
Set Data = Server.CreateObject("ADODB.recordset")
Conn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("\private") &
"\VideoWWW.mdb;"
%>
138
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
<style type="text/css">
a:visited { text-decoration: none; color: white }
a:link
{ text-decoration: none; color: white }
a:hover
{ text-decoration: underline; color: yellow; font-weight: bold }
</style>
</HEAD>
<BODY background=..\..\Pictures\Pozadi02.gif text=Bisque>
<!-- zobrazeni nadpisu stranky -->
<table border="1" width="100%">
<tr>
<td width="100%" bgcolor="#000080">
<p align="center"><b><font face="Arial" size="5" color="#ffffff">Vy sledky
vyhleda va nı</font></b></p>
</td>
</tr>
</table>
<BR>&nbsp;<BR>
<%
’ zjistime si po kolika vysledcich zobrazovat
vysledky=cint(Request.QueryString("zobraz"))
’ zjistime si na jake jsme strance
stranka=cint(Request.QueryString("str"))
’ zjistime jake prijmeni herce mame hledat, pak ho priradime do promenne herec
’ a ulozime take text kriteria
if len(trim(Request.QueryString("herec")))>0 then
’ pokud bylo zadano nejake kriterium na vyhledavani herce
herec=Request.QueryString("herec")
Kriteria=Kriteria & "prıjmenı herce zac ına na: &#34 " & herec & " &#34 "
’ otevreme databazi se zadanou podminkou
Set Data = Server.CreateObject("ADODB.recordset")
Data.open "SELECT DISTINCT prijmeniH,jmenoH,IDherec FROM Herci WHERE
(Ucase(left([prijmeniH],len(’"+herec+"’))) = Ucase(’"+herec+"’)) ORDER BY prijmeniH",Conn
else
’ nebylo zadano zadne kriterium otevreme databazi bez podminky
Set Data = Server.CreateObject("ADODB.recordset")
Data.open "SELECT * FROM herci ORDER BY prijmeniH",Conn
end if
’ vypiseme kriteria na obrazovku%>
<table>
<tr>
<td style="TEXT-ALIGN: left" vAlign=top width=110>
<STRONG>ZadanŘ &nbsp;kritŘ rium: &nbsp;&nbsp;&nbsp;&nbsp; </STRONG></td>
<td vAlign=top> <%=Kriteria%></td>
</tr>
</table>
<hr>
<br>
<%
’ spocitame celkovy pocet nalezenych zaznamu
Pocet=0
do while not Data.eof
Pocet=Pocet+1
139
Data.moveNext
loop
’ zobrazeni vysledku hledani
if Pocet=0 then
’ pokud nebyl nalezen zadny zaznam%>
<font color=Yellow>
<%Response.Write "Lituji, ale v databa zi nebylo nalezeno z a dnŘ jmŘ no herce, kterŘ by vyhovovalo
vasemu poz adavku."%>
</font>
<%else
Data.MoveFirst
I=1
if stranka<>1 then
’ pokud nesme na prvni strance, tak na zacatek name sipku s odkazem pro moznost
’ preskoceni na predchozi stranku
%>&nbsp;&nbsp;&nbsp;
<a href="vysledky1h.asp?herec=<%=herec%>&zobraz=<%=vysledky%>&str=<%=stranka1%>">
<img src=..\..\Pictures\sipka2.gif border=0 align=absmiddle></a>
&nbsp;&nbsp;Zobraz&nbsp;<%=(stranka-2)*vysledky+1%>.&nbsp;-&nbsp; <%=(stranka1)*vysledky%>.&nbsp;vy sledek&nbsp;z&nbsp;celkovŘ ho&nbsp;poc tu&nbsp;<%=Pocet%>.
<%
’ presuneme se na prvni zaznam na teto strance
data.move (stranka-1)*vysledky
end if
I=(1+(stranka-1)*vysledky)
do while (not Data.eof) and I<(1+stranka*vysledky)
’ vypisovani dokud neskoncime, nebo dokud nejsme na dalsi strance
%><P>&nbsp;&nbsp;&nbsp;
<img src=..\..\Pictures\ruka2.gif>&nbsp;&nbsp;&nbsp;<%Response.Write "<A
HREF=""herec.asp?id="&Data("IDherec")&""">" +
Data("JmenoH")%>&nbsp;<%Response.Write Data("PrijmeniH")+"</A>"%>
</P>
<%I=I+1
Data.moveNext
loop
’ pokud jsme jeste neskoncili, tak zobrazime sipku s odkazem na dalsi stranku
if Pocet>I-1 then
if pocet=stranka*vysledky+1 then
’ pokud na dalsi strance je jiz jen posledni vysledek%>
&nbsp;&nbsp;&nbsp;
<a href="vysledky1h.asp?herec=<%=herec%>&zobraz=<%=vysledky%>
&str=<%=stranka+1%>">
<img src=..\..\Pictures\sipka3.gif border=0 align=absmiddle></a>
&nbsp;&nbsp;Zobraz&nbsp;<%=Pocet%>.&nbsp;vy sledek&nbsp;z&nbsp;celkovŘ ho
&nbsp;poc tu&nbsp;<%=Pocet%>.
<%else
if Pocet<(stranka+1)*vysledky then
’ pokud nasledujici stranka nebude plna, ale budou tam alespon 2
vysledky%>
&nbsp;&nbsp;&nbsp;
<a href="vysledky1h.asp?herec=<%=herec%>&zobraz=<%=vysledky%>
&str=<%=stranka+1%>">
<img src=..\..\Pictures\sipka3.gif border=0 align=absmiddle></a>
&nbsp;&nbsp;Zobraz&nbsp;<%=stranka*vysledky+1%>.&nbsp;&nbsp;<%=Pocet%>.&nbsp;vy sledek&nbsp;z&nbsp;celkovŘ ho&nbsp;poc tu
&nbsp;<%=Pocet%>.
<%else
’ pokud nasledujici stranka bude plna%>
140
&nbsp;&nbsp;&nbsp;
<a href="vysledky1h.asp?herec=<%=herec%>&zobraz=<%=vysledky%>
&str=<%=stranka+1%>">
<img src=..\..\Pictures\sipka3.gif border=0 align=absmiddle></a>
&nbsp;&nbsp;Zobraz&nbsp;<%=stranka*vysledky+1%>.&nbsp;&nbsp;<%=(stranka+1)*vysledky%>.&nbsp;vy sledek&nbsp;z&nbsp;celkov
Ř ho &nbsp;poc tu&nbsp;<%=Pocet%>.
<%end if
end if
end if
end if
’ uzavreme spojeni na databazi a odstranime z pameti promenne
Conn.close
Set Conn=Nothing
Set Data=Nothing%>
</BODY>
</HTML>
5.4.4.3
Soubor Vysledky1r.asp
<%@ Language=VBScript %>
<%
’ zobrazeni vysledku vyhledavani jmena rezisera
option explicit
Dim Conn,Data,Kriteria,reziser,Pocet,vysledky,stranka,I
’ vytorime spojeni na databazi
Set Conn = Server.CreateObject("ADODB.Connection")
Set Data = Server.CreateObject("ADODB.recordset")
Conn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("\private") &
"\VideoWWW.mdb;"
%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
<style type="text/css">
a:visited { text-decoration: none; color: white }
a:link
{ text-decoration: none; color: white }
a:hover
{ text-decoration: underline; color: yellow; font-weight: bold }
</style>
</HEAD>
<BODY background=..\..\Pictures\Pozadi02.gif text=Bisque>
<!-- zobrazeni nadpisu stranky -->
<table border="1" width="100%">
<tr>
<td width="100%" bgcolor="#000080">
<p align="center"><b><font face="Arial" size="5" color="#ffffff">Vy sledky
vyhleda va nı</font></b></p>
</td>
</tr>
</table>
<BR>&nbsp;<BR>
<%
’ zjistime si po kolika vysledcich zobrazovat
141
vysledky=cint(Request.QueryString("zobraz"))
’ zjistime si na jake jsme strance
stranka=cint(Request.QueryString("str"))
’ zjistime jake prijmeni rezisera mame hledat, pak ho priradime do promenne reziser
’ a ulozime take text kriteria
if len(trim(Request.QueryString("reziser")))>0 then
’ pokud bylo zadano nejake kriterium na vyhledavani rezisera
reziser=Request.QueryString("reziser")
Kriteria="prıjmenı rez isŘ ra zac ına na: &#34 " & reziser & " &#34 "
’ otevreme databazi se zadanou podminkou
Set Data = Server.CreateObject("ADODB.recordset")
Data.open "SELECT DISTINCT jmenoR,prijmeniR,IDreziser FROM Reziser WHERE
(Ucase(left([prijmeniR],len(’"+reziser+"’))) = Ucase(’"+reziser+"’)) ORDER BY prijmeniR",Conn
else
’ nebylo zadano zadne kriterium otevreme databazi bez podminky
Set Data = Server.CreateObject("ADODB.recordset")
Data.open "SELECT * FROM Reziser ORDER BY prijmeniR",Conn
end if
’ vypiseme kriteria na obrazovku
%>
<table>
<tr>
<td style="TEXT-ALIGN: left" vAlign=top width=110>
<STRONG>ZadanŘ &nbsp;kritŘ rium:&nbsp;&nbsp;&nbsp;&nbsp;</STRONG></td>
<td vAlign=top><%=Kriteria%></td>
</tr>
</table>
<hr>
<br>
<%
’ spocitame celkovy pocet nalezenych zaznamu
Pocet=0
do while not Data.eof
Pocet=Pocet+1
Data.moveNext
loop
’ zobrazeni vysledku hledani
if Pocet=0 then
’ pokud nebyl nalezen zadny zaznam%>
<font color=Yellow>
<%
Response.Write "Lituji, ale v databa zi nebylo nalezeno z a dnŘ jmŘ no rez isŘ ra, kterŘ by vyhovovalo
vasemu poz adavku."%>
</font>
<%else
Data.MoveFirst
if stranka<>1 then
’ pokud nesme na prvni strance, tak na zacatek name sipku s odkazem pro moznost
’ preskoceni na predchozi stranku
%>&nbsp;&nbsp;&nbsp;
<a href="vysledky1r.asp?reziser=<%=reziser%>&zobraz=<%=vysledky%>&str=<%=stranka1%>">
<img src=..\..\Pictures\sipka2.gif border=0 align=absmiddle></a>
&nbsp;&nbsp;Zobraz&nbsp;<%=(stranka-2)*vysledky+1%>.&nbsp;-&nbsp;<%=(stranka1)*vysledky%>.&nbsp;vy sledek&nbsp;z&nbsp;celkovŘ ho&nbsp;poc tu&nbsp;<%=Pocet%>.
<%
’ presuneme se na prvni zaznam na teto strance
142
data.move (stranka-1)*vysledky
end if
I=(1+(stranka-1)*vysledky)
do while (not Data.eof) and I<(1+stranka*vysledky)
’ vypisovani dokud neskoncime, nebo dokud nejsme na dalsi strance
%><P>&nbsp;&nbsp;&nbsp;
<img src=..\..\Pictures\ruka2.gif>&nbsp;&nbsp;&nbsp;<%Response.Write "<A
HREF=""reziser.asp?id="&Data("IDreziser")&""">" + Data("JmenoR")%>&nbsp;
<%Response.Write Data("PrijmeniR")+"</A>"%>
</P>
<%I=I+1
Data.moveNext
loop
’ pokud jsme jeste neskoncili, tak zobrazime sipku s odkazem na dalsi stranku
if Pocet>I-1 then
if pocet=stranka*vysledky+1 then
’ pokud na dalsi strance je jiz jen posledni vysledek%>
&nbsp;&nbsp;&nbsp;
<a href="vysledky1r.asp?reziser=<%=reziser%>&zobraz=<%=vysledky%>
&str=<%=stranka+1%>">
<img src=..\..\Pictures\sipka3.gif border=0 align=absmiddle></a>
&nbsp;&nbsp;Zobraz&nbsp;<%=Pocet%>.&nbsp;vy sledek&nbsp;z&nbsp;celkovŘ ho
&nbsp;poc tu&nbsp;<%=Pocet%>.
<%else
if Pocet<(stranka+1)*vysledky then
’ pokud nasledujici stranka nebude plna, ale budou tam alespon 2
vysledky%>
&nbsp;&nbsp;&nbsp;
<a href="vysledky1r.asp?reziser=<%=reziser%>&zobraz=<%=vysledky%>
&str=<%=stranka+1%>">
<img src=..\..\Pictures\sipka3.gif border=0 align=absmiddle></a>
&nbsp;&nbsp;Zobraz&nbsp;<%=stranka*vysledky+1%>.&nbsp;&nbsp;<%=Pocet%>.&nbsp;vy sledek&nbsp;z&nbsp;celkovŘ ho&nbsp;poc tu
&nbsp;<%=Pocet%>.
<%else
’ pokud nasledujici stranka bude plna%>
&nbsp;&nbsp;&nbsp;
<a href="vysledky1r.asp?reziser=<%=reziser%>&zobraz=<%=vysledky%>
&str=<%=stranka+1%>">
<img src=..\..\Pictures\sipka3.gif border=0 align=absmiddle></a>
&nbsp;&nbsp;Zobraz&nbsp;<%=stranka*vysledky+1%>.&nbsp;&nbsp;<%=(stranka+1)*vysledky%>.&nbsp;vy sledek&nbsp;z&nbsp;celkov
Ř ho &nbsp;poc tu&nbsp;<%=Pocet%>.
<%end if
end if
end if
end if
’ uzavreme spojeni na databazi a odstranime z pameti promenne
Conn.close
Set Conn=Nothing
Set Data=Nothing
%>
</BODY>
</HTML>
5.4.4.4
Soubor Vysledky2.asp
<%@ Language=VBScript %>
<%
’ zobrazeni vysledku pokrocileho vyhledavani filmu
143
option explicit
Dim Conn,Data,I,Kriteria,nazev,herec,reziser,rok,zanr,delkaFilmu,zeme
Dim delka,cena,vypujcka,pujceny,Odrezano,vysledky,stranka,Pocet,J,Podminka
’ vytorime spojeni na databazi
Set Conn = Server.CreateObject("ADODB.Connection")
Set Data = Server.CreateObject("ADODB.recordset")
Conn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\private") &
"\VideoWWW.mdb;"
%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
<style type="text/css">
a:visited { text-decoration: none; color: white }
a:link
{ text-decoration: none; color: white }
a:hover
{ text-decoration: underline; color: yellow; font-weight: bold }
</style>
</HEAD>
<BODY background=..\..\Pictures\Pozadi02.gif text=Bisque>
<!-- zobrazeni nadpisu stranky -->
<table border="1" width="100%">
<tr>
<td width="100%" bgcolor="#000080">
<p align="center"><b><font face="Arial" size="5" color="#ffffff">Vy sledky
vyhleda va nı</font></b></p>
</td>
</tr>
</table>
<BR>&nbsp;<BR>
<%
’ zjistime si po kolika vysledcich zobrazovat
vysledky=cint(Request.QueryString("zobraz"))
’ zjistime si na jake jsme strance
stranka=cint(Request.QueryString("str"))
’ zjistime jaky nazev filmu mame hledat, pak ho priradime do promenne nazev
’ a ulozime take text kriteria
if len(trim(Request.QueryString("nazev")))>0 then
’ pokud bylo zadano nejake kriterium na vyhledavani filmu
nazev=Request.QueryString("nazev")
’ zjistime, jestli mame hledat od zacatku nebo i z prostredka
if Request.QueryString("checknazev")="on" then
Kriteria="na zev filmu zac ına na: &#34 " & nazev & " &#34 ; "
’ vytvorime podminku na zacatek nazvu filmu
if Podminka="" then
Podminka="(Ucase(left([Nazev_filmu],len(’"+nazev+"’))) = Ucase(’"+nazev+"’))"
else
Podminka=Podminka + " AND (Ucase(left([Nazev_filmu],len(’"+nazev+"’))) =
Ucase(’"+nazev+"’))"
end if
else
Kriteria="na zev filmu obsahuje: &#34 " & nazev & " &#34 ; "
’ vytvorime podminku na hledani retezce i uprostred nazvu filmu
if Podminka="" then
144
Podminka="([Nazev_filmu]=
iif(instr([Nazev_filmu],Ucase(’"+nazev+"’)),[Nazev_filmu],false))"
else
Podminka=Podminka+"AND ([Nazev_filmu]=iif(instr([Nazev_filmu],Ucase(’"+nazev+"’)),
[Nazev_filmu],false))"
end if
end if
end if
’ zjistime jake prijmeni herce mame hledat, pak ho priradime do promenne herec
’ a ulozime take text kriteria
if len(trim(Request.QueryString("herec")))>0 then
’ pokud bylo zadano nejake kriterium na vyhledavani herce
herec=Request.QueryString("herec")
Kriteria=Kriteria & "prıjmenı herce zac ına na: &#34 " & herec & " &#34 ; "
’ vytvorime podminku na prijmeni herce
if Podminka="" then
Podminka="(Ucase(left([prijmeniH],len(’"+herec+"’))) = Ucase(’"+herec+"’))"
else
Podminka=Podminka + "AND (Ucase(left([prijmeniH],len(’"+herec+"’))) =
Ucase(’"+herec+"’))"
end if
end if
’ zjistime jake prijmeni rezisera mame hledat, pak ho priradime do promenne reziser
’ a ulozime take text kriteria
if len(trim(Request.QueryString("reziser")))>0 then
’ pokud bylo zadano nejake kriterium na vyhledavani rezisera
reziser=Request.QueryString("reziser")
Kriteria=Kriteria & "prıjmenı rez isŘ ra zac ına na: &#34 " & reziser & " &#34 ; "
’ vytvorime podminku na prijmeni rezisera
if Podminka="" then
Podminka="(Ucase(left([prijmeniR],len(’"+reziser+"’))) = Ucase(’"+reziser+"’))"
else
Podminka=Podminka + "AND (Ucase(left([prijmeniR],len(’"+reziser+"’))) =
Ucase(’"+reziser+"’))"
end if
end if
’ zjistime jaky zanr mame hledat, pak ho priradime do promenne reziser
’ a ulozime take text kriteria
if Request.QueryString("zanr")<>0 then
zanr=Request.QueryString("zanr")
’ otevreme databazi a nalezneme odpovidajici Nazev zanru
Set Data = Server.CreateObject("ADODB.recordset")
Data.open "SELECT zanr FROM zanr WHERE IDzanru="&zanr,Conn
Kriteria=Kriteria & "z a nr filmu je: &#34 " & Data("zanr") & " &#34 ; "
Set Data=Nothing
if Podminka="" then
Podminka="[IDzanru]=" + zanr
else
Podminka=Podminka + " and [IDzanru]=" + zanr
end if
end if
’ zjistime jaky rok vyroby mame hledat, pak ho priradime do promenne reziser
’ a ulozime take text kriteria
if Request.QueryString("rok")<>0 then
145
rok=Request.QueryString("rok")
Kriteria=Kriteria & "rok vy roby je: &#34 " & rok & " &#34 ; "
if Podminka="" then
Podminka="[Rok_vyroby]=" + rok
else
Podminka=Podminka + " and [Rok_vyroby]=" + rok
end if
end if
’ zjistime jakou zemi mame hledat, pak ho priradime do promenne reziser
’ a ulozime take text kriteria
if Request.QueryString("zeme")<>0 then
zeme=Request.QueryString("zeme")
’ otevreme databazi a nalezneme odpovidajici Nazev zeme
Set Data = Server.CreateObject("ADODB.recordset")
Data.open "SELECT nazev_zeme FROM zeme WHERE IDzeme="&zeme,Conn
Kriteria=Kriteria & "film byl vyroben v zemi &#34 " & Data("nazev_zeme") & " &#34 ; "
Set Data=Nothing
if Podminka="" then
Podminka= "[IDzeme]="&zeme
else
Podminka=Podminka & " and [IDzeme]="&zeme
end if
end if
’ zjistime jakou delku filmu mame hledat, pak ho priradime do promenne reziser
’ a ulozime take text kriteria
if Request.QueryString("delka")<>0 then
delka=Request.QueryString("delka")
Kriteria=Kriteria & "dŘ kla filmu je: &#34 " & delka & " &#34 minut; "
if Podminka="" then
Podminka="[Delka_filmu]="&delka
else
Podminka=Podminka & " and [Delka_filmu]="&delka
end if
end if
’ zjistime jakou cenu za 1 den pujceni mame hledat, pak ho priradime do promenne reziser
’ a ulozime take text kriteria
if Request.QueryString("cena")<>0 then
cena=Request.QueryString("cena")
Kriteria=Kriteria & "cena filmu za 1 den je: &#34 " & cena & " Kc &#34 ;"
if Podminka="" then
Podminka="[Cena_za_1_den]="&cena
else
Podminka=Podminka & " and [Cena_za_1_den]="&cena
end if
end if
’ zjistime jakou mximalni delku vypujcky mame hledat, pak ho priradime do promenne reziser
’ a ulozime take text kriteria
if Request.QueryString("vypujcka")<>0 then
vypujcka=Request.QueryString("vypujcka")
if int(vypujcka)<5 then
Kriteria=Kriteria & "maxima lnı dŘ lka vy pujc ky je: &#34 " + vypujcka + " dny &#34; "
else
Kriteria=Kriteria & "maxima lı dŘ lka vy pujc ky je: &#34 " + vypujcka + " dnu &#34; "
end if
146
if Podminka="" then
Podminka="[Delka_vypujcky]="&vypujcka
else
Podminka=Podminka & " and [Delka_vypujcky]="&vypujcka
end if
end if
’ zjistime jestli ma byt film vypujceny nebo ne, pak ho priradime do promenne reziser
’ a ulozime take text kriteria
if Request.QueryString("pujceny")=1 then
pujceny=Request.QueryString("pujceny")
Kriteria=Kriteria & "film &#34 je &#34 pujc eny ;"
if Podminka="" then
Podminka="[Pujceny]=true"
else
Podminka=Podminka & " and [Pujceny]=true"
end if
elseif Request.QueryString("pujceny")=2 then
pujceny=Request.QueryString("pujceny")
Kriteria=Kriteria & "film &#34 nenı &#34 pujc eny ;"
if Podminka="" then
Podminka="[Pujceny]=false"
else
Podminka=Podminka & " and [Pujceny]=false"
end if
end if
’ otevreni databaze
if Podminka="" then
’ nebylo zadano zadne kriterium otevreme databazi bez podminky
Set Data = Server.CreateObject("ADODB.recordset")
Data.open "SELECT * FROM film ORDER BY Nazev_filmu",Conn
else
’ otevreme databazi se zadanou podminkou
Set Data = Server.CreateObject("ADODB.recordset")
Data.open "SELECT DISTINCT Nazev_filmu,IDfilmu FROM HledaniFilmu2 WHERE" & Podminka
& " ORDER BY Nazev_filmu",Conn
end if
%>
<table>
<tr>
<td style="TEXT-ALIGN: left" vAlign=top width=110>
<STRONG>Zadana &nbsp;kritŘ ria:&nbsp;&nbsp;&nbsp;&nbsp;</STRONG></td>
<td vAlign=top> <%=Kriteria%></td>
</tr>
</table>
<hr>
<br>
<%
’ spocitame celkovy pocet nalezenych zaznamu
Pocet=0
do while not Data.eof
Pocet=Pocet+1
Data.moveNext
loop
’ urcime o kolik pismen mame oriznout volane parametry, abychom mohli menit cisla stranek
I=stranka\10
J=1
147
do while I>=1
I=I\10
J=J+1
loop
Odrezano=Left(Request.ServerVariables("Query_String"),Len(Request.ServerVariables("Query_String"))-J)
’ zobrazeni vysledku hledani
if Pocet=0 then
’ pokud nebyl nalezen zadny zaznam%>
<font color=Yellow>
<%
Response.Write "Lituji, ale v databa zi nebyl nalezen z a dny film, kterŘ by vyhovoval vasemu
poz adavku."%>
</font>
<%else
Data.MoveFirst
if stranka<>1 then
’ pokud nesme na prvni strance, tak na zacatek name sipku s odkazem pro moznost
’ preskoceni na predchozi stranku
%>&nbsp;&nbsp;&nbsp;
<a href="vysledky2.asp?<%=Odrezano%><%=stranka-1%>">
<img src=..\..\Pictures\sipka2.gif border=0 align=absmiddle></a>
&nbsp;&nbsp;Zobraz&nbsp;<%=(stranka-2)*vysledky+1%>.&nbsp;-&nbsp;<%=(stranka1)*vysledky%>.&nbsp;vy sledek&nbsp;z&nbsp;celkovŘ ho&nbsp;poc tu&nbsp;<%=Pocet%>.
<%
’ presuneme se na prvni zaznam na teto strance
data.move (stranka-1)*vysledky
end if
I=(1+(stranka-1)*vysledky)
do while (not Data.eof) and I<(1+stranka*vysledky)
’ vypisovani dokud neskoncime, nebo dokud nejsme na dalsi strance
%><P>&nbsp;&nbsp;&nbsp;
<img src=..\..\Pictures\ruka2.gif>&nbsp;&nbsp;&nbsp;<%Response.Write "<A
HREF=""film.asp?id="&Data("IDfilmu")&""">" + Data("Nazev_filmu")+"</A>"%>
</P>
<%Data.moveNext
I=I+1
loop
’ pokud jsme jeste neskoncili, tak zobrazime sipku s odkazem na dalsi stranku
if Pocet>I-1 then
if pocet=stranka*vysledky+1 then
’ pokud na dalsi strance je jiz jen posledni vysledek%>
&nbsp;&nbsp;&nbsp;
<a href="vysledky2.asp?<%=Odrezano%><%=stranka+1%>">
<img src=..\..\Pictures\sipka3.gif border=0 align=absmiddle></a>
&nbsp;&nbsp;Zobraz&nbsp;<%=Pocet%>.&nbsp;vy sledek&nbsp;z&nbsp;celkovŘ ho
&nbsp;poc tu&nbsp;<%=Pocet%>.
<%else
if Pocet<(stranka+1)*vysledky then
’ pokud nasledujici stranka nebude plna, ale budou tam alespon 2
vysledky%>
&nbsp;&nbsp;&nbsp;
<a href="vysledky2.asp?<%=Odrezano%><%=stranka+1%>">
<img src=..\..\Pictures\sipka3.gif border=0 align=absmiddle></a>
&nbsp;&nbsp;Zobraz&nbsp;<%=stranka*vysledky+1%>.&nbsp;&nbsp;<%=Pocet%>.&nbsp;vy sledek&nbsp;z&nbsp;celkovŘ ho&nbsp;poc tu
&nbsp;<%=Pocet%>.
<%else
’ pokud nasledujici stranka bude plna%>
148
&nbsp;&nbsp;&nbsp;
<a href="vysledky2.asp?<%=Odrezano%><%=stranka+1%>">
<img src=..\..\Pictures\sipka3.gif border=0 align=absmiddle></a>
&nbsp;&nbsp;Zobraz&nbsp;<%=stranka*vysledky+1%>.&nbsp;&nbsp;<%=(stranka+1)*vysledky%>.&nbsp;vy sledek&nbsp;z&nbsp;celkov
Ř ho &nbsp;poc tu&nbsp;<%=Pocet%>.
<%end if
end if
end if
end if
’ uzavreme spojeni na databazi a odstranime z pameti promenne
Conn.close
Set Conn=Nothing
Set Data=Nothing
%>
</BODY>
</HTML>
5.4.4.5
Soubor Vysledky3.asp
<%@ Language=VBScript %>
<%’ zobrazeni formulare pro filmy, na kterŘ jsme se jiz divali
option explicit
Dim nazev,ID,I%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
<style type="text/css">
a:visited { text-decoration: none; color: blue }
a:link
{ text-decoration: none; color: blue }
a:hover { text-decoration: underline; color: brown; font-weight: bold }
</style>
</HEAD>
<BODY background=..\..\Pictures\Pozadi03.gif text=Black>
<!-- zobrazeni nadpisu stranky -->
<table border="1" width="100%">
<tr>
<td width="100%" bgcolor="#000080">
<p align="center"><b><font face="Arial" size="5" color="#ffffff">Vy sledky vsech vasich
vyhleda va nı</font></b></p>
</td>
</tr>
</table>
<BR>&nbsp;<BR>
<center><b><font size=4 color=Black>
Zde jsou vsechny filmy, na kterŘ jste se podrobneji dıvali.
A to v poradı, jak jste se na ne naposledy dıvali.
</center></b></font>
<P><BR>
<%if Session("Film")<>0 then
’ pokud jsme se jiz na nejake filmy divaly, tak je ukazeme
’ jsou ulozeny v globalnich promennych Session("ID") a Session("nazev"),
’ kde nazev="nazev"+cislo a ID="ID"+cislo
149
for I=cint(Session("Film")) to 1 step -1
nazev="nazev" & cstr(I)
ID="ID" & cstr(I)%>
<P>&nbsp;&nbsp;&nbsp;
<img src=..\..\Pictures\sipka1.gif border=0 align=absmiddle>&nbsp;&nbsp;&nbsp;
<%Response.Write "<A HREF=""film.asp?id="&Session(ID)&""">" +
Session(nazev)+"</A>"%>
</P><%
next
else
’ pokud jsme se jeste na zadny film nedivali
%>
<center><b><font color=Purple>
Zatım jste se jeste na z a dny film nedıvali, nebo od Vası poslednı na vstevy tŘ to stra nky ubehlo vıce nez
20 minut.
</center></b></font><P><%
end if%>
</BODY>
</HTML>
5.4.4.6
Soubor Film.asp
<%@ Language=VBScript %>
<%
’ formular na zobrazeni informaci o vybranem filmu
option explicit
Dim Conn,Data,IDfilm,Data2,ID,nazev,I,Nalezeno,Misto,url
Set Conn = Server.CreateObject("ADODB.Connection")
Set Data = Server.CreateObject("ADODB.recordset")
Set Data2 = Server.CreateObject("ADODB.recordset")
Conn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("\private") &
"\VideoWWW.mdb;"
%>
<HTML>
<HEAD>
<META name=VI60_defaultClientScript content=VBScript>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
<!-Sub Otevrit(IDfilm)
’ otevreni formulare Rezervace
Dim url
url="../Rezervace/rezervace.asp?IDfilm="+cstr(IDfilm)+"&Mesic="+cstr(Month(Date()))+"&Rok="
+cstr(Year(Date()))
window.open url,"Rezervace","toolbar=no,scrollbars=no,location=no,status=no,width=560,height=450,
resizable=0","replace"
End Sub
-->
</SCRIPT>
</HEAD>
<BODY background=..\..\Pictures\Pozadi10.jpg>
<%IDfilm=Request.QueryString("id")
Set Data = Server.CreateObject("ADODB.recordset")
Data.open "SELECT * FROM film WHERE IDfilmu=" & IDfilm,Conn
150
’ nyni do globalni promenne Session("Film") pripocteme jeden film
Nalezeno=false
if Session("Film")<>"0" then
’ pokud jsme se jiz na nejake filmy divali, tak zjistime, jestli i na tento
for I=1 to cint(Session("Film"))
ID="ID"+cstr(I)
if Session(ID)=IDfilm then
Nalezeno=true
Misto=I
end if
next
if not Nalezeno then
’ pokud jsme se na tento film jeste nedivali, tak ho pridame na zacatek pole
Session("Film")=cstr(cint(Session("Film"))+1)
nazev="nazev" & Session("Film")
ID="ID" & Session("Film")
Session(nazev)=Data("Nazev_filmu")
Session(ID)=IDfilm
else
’ pokud jsme se na nej jiz divali, tak ho jenom presuneme na zacatek pole
for I=Misto to (cint(Session("Film"))-1)
Session("nazev" & cstr(I))=Session.Contents.Item("nazev" & cstr(I+1))
Session("ID" & cstr(I))=Session("ID" & cstr(I+1))
next
nazev="nazev" & Session("Film")
ID="ID" & Session("Film")
Session(nazev)=Data("Nazev_filmu")
Session(ID)=IDfilm
end if
else
’ pokud je to prvni film, na ktery jsme se divali
Session("Film")="1"
Session("nazev1")=cstr(Data("Nazev_filmu"))
Session("ID1")=IDfilm
end if
%>
<!-- zobrazeni nadpisu stranky -->
<table border="1" width="100%">
<tr>
<td width="100%" bgcolor="#000080">
<p align="center"><b><font face="Arial" size="5" color="#ffffff">
Informace&nbsp;o&nbsp;filmu</font></b></p>
</td>
</tr>
</table>
<BR>&nbsp;<BR>
<!-- zobrazeni informaci o filmu -->
<table border="1" width="100%" cellpadding=5 background=..\..\Pictures\Pozadi09.jpg>
<tr>
<!-- zobrazeni nazvu filmu -->
<td width=170>Na zev&nbsp;filmu</td>
<td><b><%Response.Write Data("nazev_filmu")%></b></td>
</tr>
<tr>
<!-- zobrazeni jmena rezisera -->
<td width=170>Rez isŘ r&nbsp;filmu</td>
<td><%Set Data2 = Server.CreateObject("ADODB.recordset")
Data2.open "SELECT * FROM Reziser WHERE film=" & IDfilm,Conn
151
do while not Data2.eof
Response.Write "<A HREF=""reziser.asp?id="&Data2("IDreziser")&""">" +
Data2("JmenoR")%>&nbsp;<%Response.Write Data2("PrijmeniR") +
"</A>"%>; <%Data2.MoveNext
loop
Set Data2=Nothing%></td>
</tr>
<tr>
<!-- zobrazeni jmen hercu -->
<td width=170 valign=top>Herci&nbsp;ve&nbsp;filmu</td>
<td><%Set Data2 = Server.CreateObject("ADODB.recordset")
Data2.open "SELECT * FROM Herci WHERE film=" & IDfilm,Conn
do while not Data2.eof
Response.Write "<A HREF=""herec.asp?id="&Data2("IDherec")&""">" +
Data2("JmenoH")%>&nbsp;<%Response.Write
Data2("PrijmeniH")+"</A>"%>;
<%Data2.MoveNext
loop
Set Data2=Nothing%></td>
</tr>
<tr>
<!-- zobrazeni nazvu zanru -->
<td width=170>Za nr&nbsp;filmu</td>
<td><%Set Data2 = Server.CreateObject("ADODB.recordset")
Data2.open "SELECT * FROM zanr WHERE IDzanru=" & Data("zanr"),Conn
Response.Write Data2("zanr")
Set Data2=Nothing%></td>
</tr>
<tr>
<!-- zobrazeni roku vyroby -->
<td width=170>Rok&nbsp;vy roby</td>
<td><%Response.Write Data("rok_vyroby")%></td>
</tr>
<tr>
<!-- zobrazeni zeme, kde byl film vyroben -->
<td width=170>Zeme</td>
<td><%Set Data2 = Server.CreateObject("ADODB.recordset")
Data2.open "SELECT * FROM zeme WHERE IDzeme=" & Data("zeme"),Conn
Response.Write Data2("nazev_zeme")
Set Data2=Nothing%></td>
</tr>
<tr>
<!-- zobrazeni delky filmu -->
<td width=170>DŘ lka&nbsp;filmu</td>
<td><%Response.Write Data("Delka_filmu")%>&nbsp;minut</td>
</tr>
<tr>
<!-- zobrazeni ceny vypujcky za 1 den -->
<td width=170>Cena&nbsp;vy pujc ky&nbsp;za&nbsp;1&nbsp;den</td>
<td><%Response.Write Data("Cena_za_1_den")%>&nbsp;Kc </td>
</tr>
<tr>
<!-- zobrazeni delky vypujcky -->
<td width=170>DŘ lka&nbsp;vy pujc ky</td>
<td><%Response.Write Data("Delka_vypujcky")
if cint(Data("Delka_vypujcky"))<5 then%>
&nbsp;dny<%
else%>
&nbsp;dnu<%
end if
152
%></td>
</tr>
<tr>
<!-- zobrazeni jestli je film pujceny -->
<td width=170>Stav&nbsp;filmu</td>
<td><%
if Data("Pujceny")=false then%>
Film&nbsp;nenı&nbsp;vypujc eny <%
else%>
Film&nbsp;je&nbsp;vypujc eny <%
end if
%></td>
</tr>
<tr>
<!-- zobrazeni tlacitka pro rezervaci filmu -->
<td valign=center align=middle><INPUT type="button" value="Rezervace" id=Rezervace
name=Rezervace align=middle alt=Rezervovat style="TEXT-ALIGN: center; WIDTH: 100px"
width="120" onclick=Otevrit(<%=IDfilm%>)></td>
<td>Po&nbsp;stisknutı&nbsp;tlac ıtka&nbsp;"Rezervace" je moz no si film rezervovat na urc itŘ
datum.</td>
</tr>
</table>
<%
Conn.close
Set Conn=Nothing
Set Data=Nothing
%>
</BODY>
</HTML>
5.4.4.7
Soubor Herec.asp
<%@ Language=VBScript %>
<%
’ formular na zobrazeni informaci o vybranem herci
option explicit
Dim Conn,Data,IDherec,Data2,zeme
Set Conn = Server.CreateObject("ADODB.Connection")
Set Data = Server.CreateObject("ADODB.recordset")
Set Data2 = Server.CreateObject("ADODB.recordset")
Conn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("\private") &
"\VideoWWW.mdb;"
%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
</HEAD>
<BODY background=..\..\Pictures\Pozadi10.jpg>
<%IDherec=Request.QueryString("id")
Set Data = Server.CreateObject("ADODB.recordset")
Data.open "SELECT * FROM Herci WHERE IDherec=" & IDherec,Conn
%>
<!-- zobrazeni nadpisu stranky -->
<table border="1" width="100%">
<tr>
<td width="100%" bgcolor="#000080">
153
<p align="center"><b><font face="Arial" size="5" color="#ffffff">
Informace&nbsp;o&nbsp;herci</font></b></p>
</td>
</tr>
</table>
<BR>&nbsp;<BR>
<!-- zobrazeni informaci o herci -->
<table border="1" width="100%" cellpadding=5 background=..\..\Pictures\Pozadi09.jpg>
<tr>
<!-- zobrazeni jmena herce -->
<td width=170>JmŘ no&nbsp;herce</td>
<td><b><%Response.Write Data("jmenoH")%></b></td>
</tr>
<tr>
<!-- zobrazeni prijmeni herce -->
<td width=170>Prıjmenı&nbsp;herce</td>
<td><b><%Response.Write Data("prijmeniH")%></b>
</td>
</tr>
<tr>
<!-- zobrazeni zeme, odkud pochazi -->
<td width=170>Zeme</td>
<td>
<%zeme=Data("zeme")
if zeme<>"" then
Set Data2 = Server.CreateObject("ADODB.recordset")
Data2.open "SELECT * FROM zeme WHERE IDzeme=" & Data("zeme"),Conn
Response.Write Data2("nazev_zeme")
Set Data2=Nothing
else
%>&nbsp;<%
end if%>
</td>
</tr>
<tr>
<!-- zobrazeni nazvu filmu, ve kterych hral a jsou ve videopujcovne -->
<td width=170>Filmy,&nbsp;ve&nbsp;ktery ch&nbsp;hra l</td>
<td><%
Set Data2 = Server.CreateObject("ADODB.recordset")
do while not data.eof
Data2.open "SELECT * FROM film WHERE IDfilmu=" & Data("film"),Conn
Response.Write "<A HREF=""film.asp?id="&Data2("IDfilmu")&""">" +
Data2("Nazev_filmu") + "</A>"
%>;&nbsp;<%
data2.close
data.movenext
loop
Set Data2=Nothing%>
</td>
</tr>
</table>
<%
Conn.close
Set Conn=Nothing
Set Data=Nothing
%>
</BODY>
</HTML>
154
5.4.4.8
Soubor Reziser.asp
<%@ Language=VBScript %>
<%
’ formular na zobrazeni informaci o vybranem reziserovi
option explicit
Dim Conn,Data,IDreziser,Data2,zeme
Set Conn = Server.CreateObject("ADODB.Connection")
Set Data = Server.CreateObject("ADODB.recordset")
Set Data2 = Server.CreateObject("ADODB.recordset")
Conn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\private") &
"\VideoWWW.mdb;"
%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
</HEAD>
<BODY background=..\..\Pictures\Pozadi10.jpg>
<%IDreziser=Request.QueryString("id")
Set Data = Server.CreateObject("ADODB.recordset")
Data.open "SELECT * FROM Reziser WHERE IDreziser=" & IDreziser,Conn
%>
<!-- zobrazeni nadpisu stranky -->
<table border="1" width="100%">
<tr>
<td width="100%" bgcolor="#000080">
<p align="center"><b><font face="Arial" size="5" color="#ffffff">
Informace&nbsp;o&nbsp;rez isŘ rovi</font></b></p>
</td>
</tr>
</table>
<BR>&nbsp;<BR>
<!-- zobrazeni informaci o reziserovi -->
<table border="1" width="100%" cellpadding=5 background=..\..\Pictures\Pozadi09.jpg>
<tr>
<!-- zobrazeni jmena rezisera -->
<td width=170>JmŘ no&nbsp;rez isŘ ra</td>
<td><b><%Response.Write Data("jmenoR")%></b></td>
</tr>
<tr>
<!-- zobrazeni prijmeni rezisera -->
<td width=170>Prıjmenı&nbsp;rez isŘ ra</td>
<td><b><%Response.Write Data("prijmeniR")%></b>
</td>
</tr>
<tr>
<!-- zobrazeni zeme, odkud pochazi -->
<td width=170>Zeme</td>
<td>
<%zeme=Data("zeme")
if zeme<>"" then
Set Data2 = Server.CreateObject("ADODB.recordset")
Data2.open "SELECT * FROM zeme WHERE IDzeme=" & Data("zeme"),Conn
Response.Write Data2("nazev_zeme")
Set Data2=Nothing
else
155
%>&nbsp;<%
end if%>
</td>
</tr>
<tr>
<!-- zobrazeni nazvu filmu, ktere reziroval a jsou ve videopujcovne -->
<td width=170>Filmy,&nbsp;kterŘ &nbsp;rez ıroval</td>
<td><%
Set Data2 = Server.CreateObject("ADODB.recordset")
do while not data.eof
Data2.open "SELECT * FROM film WHERE IDfilmu=" & Data("film"),Conn
Response.Write "<A HREF=""film.asp?id="&Data2("IDfilmu")&""">" +
Data2("Nazev_filmu") + "</A>"
%>;&nbsp;<%
data2.close
data.movenext
loop
Set Data2=Nothing%>
</td>
</tr>
</table>
<%
Conn.close
Set Conn=Nothing
Set Data=Nothing
%>
</BODY>
</HTML>
5.4.5
Adresar Root/Video/Rezervace
v Obsahuje tyto soubory: Rezervace.asp
RezervaceVysledek.asp
5.4.5.1
Soubor Rezervace.asp
<%@ Language=VBScript %>
<%
’ formular na zjistovani rezervaci obsahujici kalendar
option explicit
Dim Conn,Data,film,Mesic,Rok,Den,I,J,klient,Pocet,PrvniDen,PomDen,PredchoziZacatek,Pozice,PujcenyDo
Set Conn = Server.CreateObject("ADODB.Connection")
Set Data = Server.CreateObject("ADODB.recordset")
Conn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\private") &
"\VideoWWW.mdb;"
%>
<HTML>
<HEAD>
<META name=VI60_defaultClientScript content=VBScript>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
<style type="text/css">
A:visited { text-decoration: none; color: blue }
A:link
{ text-decoration: none; color: blue }
A:hover
{ text-decoration: underline; color: black; font-weight: bold }
</style>
<TITLE>Rezervace filmu</TITLE>
156
<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
<!-option explicit
Sub storno_onclick
’ zavreme aktualni okno
window.close
End Sub
Sub mesic_onchange
’ pri zmene mesice obnovime formular
Form.submit
End Sub
Sub Rok_onchange
’ pri zmene roku obnovime formular
Form.submit
End Sub
Function Rezervovani_onsubmit
’ odeslani dat k rezervaci
if IsNumeric(Rezervovani.klient.value) and Rezervovani.rezervace.value<>"" then
’ pokud je vyplneno ID klienta a den rezervace, pak otevreme novou stranku
Rezervovani_onsubmit=true
’ window.close
elseif not IsNumeric(Rezervovani.klient.value) then
’ pokud neni zadano cislo klienta
msgbox "Ma te spatne zadanŘ ID klienta."
Rezervovani_onsubmit = false
elseif Rezervovani.rezervace.value="" then
’ pokud neni zadano datum rezervace
msgbox "Nema te vybra n z a dny den."
Rezervovani_onsubmit = false
end if
End Function
-->
</SCRIPT>
</HEAD>
<BODY background=..\..\Pictures\Pozadi11.jpg onload=rezervovani.storno.focus()>
<%
’ ****** Deklarovani funkci ******
Function PocetDnu(pMesic,pRok)
’ vrati pocet dnu v zadanem mesici
Select case pMesic
Case 1,3,5,7,8,10,12
PocetDnu=31
Case 4,6,9,11
PocetDnu=30
Case 2
If Isdate("2/29/" & pRok) then
PocetDnu=29
Else
PocetDnu=28
End if
157
Case Else
PocetDnu=-1
End select
End Function
Function PrvniDenMesice(libDen)
’ vrati cislo prvniho dne v mesici (1-pondeli,...)
Dim PrvniDen
PrvniDen=DateAdd("d",-(Day(libDen)),libDen)
PrvniDenMesice=WeekDay(PrvniDen)
End Function
Function RW(text)
’ funkce response.write
RW=Response.Write(text)
End Function
Function MoznoRezervovat(pDen,pMesic,pRok)
’ funkce zjistujici, jestli se da v dany den rezervovat film
dim cDen
MoznoRezervovat=true
if pMesic=13 then
pMesic=1
pRok=pRok+1
end if
if pMesic=0 then
pmesic=12
pRok=pRok-1
end if
cDen=cdate(cstr(pDen)+"."+cstr(pMesic)+"."+cstr(pRok))
if cDen<Date() then
’ datum je mensi nez dnesni den
MoznoRezervovat=false
else
if PujcenyDo<>"" then
’ film je pujceny
if cDen=<PujcenyDo then MoznoRezervovat=false
end if
’ zjistime, jestli neni rezervovany
if not Data.BOF then
do while not Data.EOF
if (cdate(Data("Rezervace_od"))=<cDen) and
(cdate(Data("Rezervace_do"))>=cDen) then
MoznoRezervovat=false
exit do
end if
Data.MoveNext
loop
Data.MoveFirst
end if
end if
End Function
’ ******** Konec deklarace funkci *********
’ nacitani promenych z hlavicky
Mesic=Request.QueryString("Mesic")
Rok=Request.QueryString("Rok")
film=Request.QueryString("IDfilm")
Session("Pomocna")=film
158
If isempty(Request.QueryString("den")) then
den=""
else
den=Request.QueryString("den")+".&nbsp;"+Mesic+".&nbsp;"+Rok
end if
’ zjistime pocet dnu v aktualnim mesici a roce
Pocet = PocetDnu(Mesic,Rok)
PomDen="1."+Mesic+"."+Rok
’ zjistime kterym dnem zacina mesic
PrvniDen = PrvniDenMesice(PomDen)
’ zjistime, ktery den minuleho mesice bylo posledni pondeli
if PrvniDen=1 then
PredchoziZacatek=0
else
if Mesic=1 then
PredchoziZacatek=PocetDnu(12,Rok-1)-PrvniDen+2
else
PredchoziZacatek=PocetDnu(Mesic-1,Rok)-PrvniDen+2
end if
end if
’ v databazi otevreme dotaz PujcenyDo a pokud film je pujceny, tak
’ do promenne PujcenyDo ulozime datum do kdy je pujceny
Data.open "SELECT * FROM PujcenyDo WHERE Nazev_filmu=" & film,Conn
PujcenyDo=""
if not Data.BOF then
if cdate(Data("PujcenyDo"))<Date() then
PujcenyDo=Date()
else
PujcenyDo=cdate(Data("PujcenyDo"))
end if
end if
Data.Close
’ v databazi otevreme tabulku rezervace
Data.open "SELECT * FROM NoveRezervace WHERE film=" & film,Conn
%>
<!-- zobrazeni cele stranky -->
<table border=1 borderColor=blue bordercolordark=yellow bordercolorlight=orangered
background=..\..\Pictures\Pozadi09.jpg width=545>
<tr><td width=200>
<table border=0>
<tr><td>&nbsp;</td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td>
<!-- zobrazeni formulare pro provedeni rezervace -->
<form method=post action=../Vstupy/Vstup2.asp name=Rezervovani>
<table border=0>
<caption><font size=5>Rezervace</font></caption>
<tr><td>&nbsp;</td></tr>
<tr><td>&nbsp;&nbsp;Zadejte&nbsp;ID:</td>
159
<td><INPUT type="text" id=klient name=klient style="HEIGHT: 22px; WIDTH:
100px" value="<%=klient%>" <%if den="" then%> readOnly <%end
if%>>&nbsp;&nbsp;&nbsp;</td></tr>
<tr><td>&nbsp;&nbsp;Zadejte&nbsp;heslo:&nbsp;&nbsp;&nbsp;</td>
<td><INPUT type="password" id=heslo name=heslo style="HEIGHT: 22px;
WIDTH: 100px" <%if den="" then%> readOnly <%end
if%>>&nbsp;&nbsp;&nbsp;</td></tr>
<tr><td>&nbsp;&nbsp;Rezervace&nbsp;na:</td>
<td><INPUT type="text" id=rezervace name=rezervace readOnly style="HEIGHT:
22px; WIDTH: 100px" value="<%=Den%>">&nbsp;&nbsp;&nbsp;</td></tr>
<tr><td>&nbsp;</td></tr>
<tr>
<td align=middle>&nbsp;<INPUT type=submit value="Rezervuj" id=ok name=ok
style="HEIGHT: 24px; WIDTH: 70px"></td>
<td align=middle><INPUT type="button" value="Konec" id=storno name=storno
style="HEIGHT: 24px; WIDTH: 70px"></td></tr>
<tr><td>&nbsp;</td></tr>
</table>
</form>
<form method=get action=.\rezervace.asp name=Form id=Form>
<INPUT type="text" id=IDfilm name=IDfilm style="HEIGHT: 5px; VISIBILITY: hidden;
WIDTH: 5px" value="<%=film%>">
</td></tr>
</table>
<td width=345>
<!-- zobrazeni kalendare -->
<table border=0 cellpadding=0 align=center>
<caption><font size=4>Kalenda r</font></caption>
<tr><td align=middle>&nbsp;&nbsp;&nbsp;
<%if not(Mesic=1 and Rok=2000) then%>
<A href="./rezervace.asp?IDfilm=<%=film%>&mesic=<%if Mesic=1 then RW(12)
else RW(Mesic-1)%>&Rok=<%if Mesic=1 then RW(Rok-1) else
RW(Rok)%>&IDklient=<%=klient%>">&lt;&lt;</A>
<%else%>
<font color=Red>&lt;&lt;</font>
<%end if%>&nbsp;&nbsp;&nbsp;
<SELECT id=Mesic name=Mesic style="HEIGHT: 22px; WIDTH: 90px">
<OPTION <%if Mesic=1 then RW("selected")%>
value=1>leden</OPTION>
<OPTION <%if Mesic=2 then RW("selected")%> value=2>ďnor</OPTION>
<OPTION <%if Mesic=3 then RW("selected")%>
value=3>brezen</OPTION>
<OPTION <%if Mesic=4 then RW("selected")%>
value=4>duben</OPTION>
<OPTION <%if Mesic=5 then RW("selected")%>
value=5>kveten</OPTION>
<OPTION <%if Mesic=6 then RW("selected")%>
value=6>c erven</OPTION>
<OPTION <%if Mesic=7 then RW("selected")%>
value=7>c ervenec</OPTION>
<OPTION <%if Mesic=8 then RW("selected")%>
value=8>srpen</OPTION>
<OPTION <%if Mesic=9 then RW("selected")%> value=9>za rı</OPTION>
<OPTION <%if Mesic=10 then RW("selected")%>
value=10>rıjen</OPTION>
<OPTION <%if Mesic=11 then RW("selected")%>
value=11>listopad</OPTION>
<OPTION <%if Mesic=12 then RW("selected")%>
value=12>prosinec</OPTION>
</SELECT><SELECT id=Rok name=Rok style="HEIGHT: 22px; WIDTH: 70px">
160
<OPTION <%if Rok=2000 then RW("selected")%>
value=2000>2000</OPTION>
<OPTION <%if Rok=2001 then RW("selected")%>
value=2001>2001</OPTION>
<OPTION <%if Rok=2002 then RW("selected")%>
value=2002>2002</OPTION>
<OPTION <%if Rok=2003 then RW("selected")%>
value=2003>2003</OPTION>
<OPTION <%if Rok=2004 then RW("selected")%>
value=2004>2004</OPTION>
<OPTION <%if Rok=2005 then RW("selected")%>
value=2005>2005</OPTION>
</SELECT>&nbsp;&nbsp;&nbsp;
<%if Mesic=12 and Rok=2005 then%>
<font color=Red>&gt;&gt;</font>
<%else%>
<A href="./rezervace.asp?IDfilm=<%=film%>&mesic=<%if Mesic=12 then
RW(1) else RW(Mesic+1)%>&Rok=<%if Mesic=12 then RW(Rok+1) else
RW(Rok)%>&IDklient=<%=klient%>">&gt;&gt;</A>&nbsp;
<%end if%>
&nbsp;&nbsp;&nbsp;</td></tr>
</form>
<tr><td>&nbsp;</td></tr>
<tr><td><table width="100%" cellpadding=1 cellspacing=1 border=1 >
<tr height=28><td align=middle><b>Po</b></td>
<td align=middle><b>Št</b></td>
<td align=middle><b>St</b></td>
<td align=middle><b>C t</b></td>
<td align=middle><b>Pa </b></td>
<td align=middle><b>So</b></td>
<td align=middle><b>Ne</b></td></tr>
<tr height=28><%
if PrvniDen<>1 then
’ mesic nezacina od pondeli, musime dopsat konec minuleho mesice
Pozice=1
J=PredchoziZacatek
do while Pozice<PrvniDen
if MoznoRezervovat(J,Mesic-1,Rok) then
RW("<td align=middle bgcolor=Silver><A Href=
""./rezervace.asp?IDfilm="&film&"&mesic="&M
esic1&"&Rok="&Rok&"&Den="&J&""">"&J&"</A
></td>")
else
RW("<td align=middle bgcolor=Silver><font
color=Red>"&J&"</font></td>")
end if
J=J+1
Pozice=Pozice+1
loop
end if
Pozice=PrvniDen
J=1
do while J=<Pocet
’ vypsani aktualniho mesice
If Pozice=1 and PrvniDen<>1 and J=1 then
’ jsme v pondeli a musime zacit novy radek
RW("<tr height=28>")
end if
RW("<td align=middle")
161
if cstr(J)=Request.QueryString("den") then
RW(" bgcolor=Plum>")
else
RW(" bgcolor=Khaki>")
end if
if MoznoRezervovat(J,Mesic,Rok) then
RW("<A Href=
""./rezervace.asp?IDfilm="&film&"&mesic="&Mesic&"&
Rok="&Rok&"&Den="&J&""">"&J&"</A></td>")
else
RW("<font color=Red>"&J&"</font></td>")
end if
if Pozice=7 then
’ jsme v nedeli a musime skoncit radek a presunout se na
pondeli
RW("</tr>")
Pozice=0
end if
Pozice=Pozice+1
J=J+1
loop
J=1
do while J=<(42-Pocet-PrvniDen+1)
’ vypsani nasledujiciho mesice
If Pozice=1 then
’ jsme v pondeli a musime zacit novy radek
RW("<tr height=28>")
end if
if MoznoRezervovat(J,Mesic+1,Rok) then
RW("<td align=middle bgcolor=Silver><A Href=
""./rezervace.asp?IDfilm="&film&"&mesic="&Mesic+1&"
&Rok="&Rok&"&Den="&J&""">"&J&"</A></td>")
else
RW("<td align=middle bgcolor=Silver><font
color=Red>"&J&"</font></td>")
end if
if Pozice=7 then
’ jsme v nedeli a musime skoncit radek a presunout se na
pondeli
RW("</tr>")
Pozice=0
end if
J=J+1
Pozice=Pozice+1
loop
Set Data=Nothing
%>
</table></td></tr>
</table></tr>
</table>
<P>
Upozornenı: ID c ıslo a heslo je moz no zada vat jen pokud jiz ma te vybra n urc ity den.
<%
Conn.close
Set Conn=Nothing
%>
</BODY>
</HTML>
162
5.4.5.2
Soubor RezervaceVysledek.asp
<%@ Language=VBScript %>
<%
’ formular na zobrazeni vysledku rezervace
option explicit
Dim Conn,Data,Cmd,Param1,Param2,IDfilm,Datum,Klient,Heslo,Nazev,Jmeno,PujcenyDo,Rezervovan,Pom
Set Conn = Server.CreateObject("ADODB.Connection")
Set Data = Server.CreateObject("ADODB.recordset")
set Cmd = Server.CreateObject("ADODB.Command")
Conn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\private") &
"\VideoWWW.mdb;"
%>
<HTML>
<HEAD>
<META name=VI60_defaultClientScript content=VBScript>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
<TITLE>Rezervace filmu</TITLE>
<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
<!-option explicit
Sub Otevrit(IDfilm)
’ navrat do formulare Rezervace
Dim url
url="rezervace.asp?IDfilm="+cstr(IDfilm)+"&Mesic="+cstr(Month(Date()))+"&Rok="+cstr(Year(Date
()))
window.open url,"Rezervace","toolbar=no,scrollbars=no,location=no,status=no,width=560,height=450,
resizable=0","replace"
window.close
End Sub
-->
</SCRIPT>
</HEAD>
<BODY background=..\..\Pictures\Pozadi12.jpg onload=zpet.focus()>
<%
’ ****** Deklarovani funkci ******
Function RW(text)
’ funkce response.write
RW=Response.Write(text)
End Function
’ ******** Konec deklarace funkci *********
’ nacitani promenych z hlavicky
Klient=cint(Request.QueryString("klient"))
IDfilm=Session("Pomocna")
’ odrizneme prvni a posledni uvozovku
Pom=Request.QueryString("Datum")
Datum=cdate(Right(Left(Pom,len(Pom)-1),len(Pom)-2))
’ otevreme v databazi tabulku film a najdeme jmeno filmu
Data.open "SELECT * FROM film WHERE IDfilmu=" & IDfilm,Conn
163
Nazev=Data("Nazev_filmu")
Data.close
’ otevreme v databazi tabulku klienti a najdeme jmeno a prijmeni klienta
Data.open "SELECT * FROM klienti WHERE IDklient=" & Klient,Conn
%><center><%
Jmeno=Data("Jmeno")+"&nbsp;"+Data("Prijmeni")
Data.close%>
<table border=1 cellpadding=5 bordercolor=Blue>
<tr><td align=middle>JmŘ no&nbsp;klienta:</td>
<td align=left><%=Jmeno%></td></tr>
<tr><td align=middle>Na zev&nbsp;film:</td>
<td align=left><%=Nazev%></td></tr>
<tr><td align=middle>Datum&nbsp;rezervace:&nbsp;</td>
<td align=left><%=Datum%></td></tr>
<%
’ nejprve znovu otevreme dotaz PujcenyDo a zjistime, jestli film jiz neni pujceny
Data.open "SELECT * FROM PujcenyDo WHERE Nazev_filmu=" & IDfilm,Conn
PujcenyDo=""
if not Data.BOF then
if cdate(Data("PujcenyDo"))<Date() then
PujcenyDo=Date()
else
PujcenyDo=cdate(Data("PujcenyDo"))
end if
end if
if PujcenyDo="" or PujcenyDo<Datum then
’ film jeste neni pujceny
Data.close
’ nyni otevreme dotaz RezervaceNaDen a zjistime, jestli film jiz neni rezervovan
’ nejprve vytvorime spojeni na dotaz
set Cmd.ActiveConnection = Conn
Cmd.CommandType= 4
Cmd.CommandText="RezervaceNaDen"
’ nyni vytvorime parametr Den
set Param1 = Server.CreateObject("ADODB.Parameter")
Param1.Type =7
Param1.Name ="Den"
Param1.Value =Datum
set Param2 = Server.CreateObject("ADODB.Parameter")
Param2.Type =7
Param2.Name ="IDfilm"
Param2.Value =cint(IDfilm)
’ spojeni pridame parametr Den a nacteme data
cmd.Parameters.Append Param2
cmd.Parameters.Append Param1
set Data = cmd.Execute
’ odstranime z pameti parametry
set Param1=Nothing
set Param2=Nothing
set Cmd=Nothing
Rezervovan=true
if Data.bof then
’ pokud film neni rezervovan
Rezervovan=false
end if
164
’ zavreme dotaz RezervaceNaDen
Data.Close
if not Rezervovan then
’ film jeste neni rezervovan, takze muzeme rezervovat
’ otevreme tabulku rezervace pro zapis
Data.open "SELECT * FROM rezervace",Conn,,2
’ vytvorime novy zaznam v tabulce rezervace
Data.addnew
Data("Datum")=date()
Data("Rezervace_od")=Datum
Data("Rezervace_do")=Datum
Data("Klient")=Klient
Data("Film")=IDfilm
Data("Vyrizena")=false
’ provedeme zmeny a ukoncime spojeni s tabulkou
Data.Update
Set Data=Nothing%>
<tr><td align=middle>Vy sledek&nbsp;rezervace:</td>
<td align=left>Rezervace probehla ďspesne.</td></tr>
<%else
’ film je jiz rezervovan%>
<tr><td align=middle>Vy sledek&nbsp;rezervace:</td>
<td align=left><font color=red>Rezervace se bohuz el nezdarila. Film je jiz
rezervova n.</font></td></tr>
<%end if
else
’ film je jiz vypujcen%>
<tr><td align=middle>Vy sledek&nbsp;rezervace:</td>
<td align=left><font color=red>Rezervace se bohuz el nezdarila. Film je jiz
vypujc en.</font></td></tr>
<%end if%>
</table>
<P>
<INPUT type="button" value="Zpet" id=zpet name=zpet onclick=Otevrit(<%=Session("Pomocna")%>)>
</center>
<%
Conn.close
Set Conn=Nothing
%>
</BODY>
</HTML>
5.4.6
Adresar Root/Video/Klient
v Obsahuje tyto soubory: KlientVysledek.asp
NoveHeslo.asp
ZmenaHesla.asp
5.4.6.1
Soubor KlientVysledek.asp
<%@ Language=VBScript %>
<%
’ zobrazeni informaci o klientu
165
option explicit
Dim Conn,Data,Data2,Klient,HesloS,Jmeno,PujcenyDo,Rezervovan,Adresa,Zmena,I,Smazat,Film,RezervaceOd
Set Conn = Server.CreateObject("ADODB.Connection")
Set Data = Server.CreateObject("ADODB.recordset")
Set Data2 = Server.CreateObject("ADODB.recordset")
Conn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\private") &
"\VideoWWW.mdb;"
%>
<HTML>
<HEAD>
<META name=VI60_defaultClientScript content=VBScript>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
<TITLE>Informace o klientovi</TITLE>
<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
<!-Sub Smazani(cislo,klient)
’ procedura na otevreni noveho okna pro smazani rezervace
Dim url
url="KlientVysledek.asp?Klient="+cstr(klient)+"&smazani="+cstr(cislo)+"&zmena=0"
window.open
url,"Info_klient","toolbar=no,scrollbars=yes,location=no,status=no,width=500,height=300,resizable=0","replace
"
End Sub
Sub zpet_onclick
window.close
End Sub
Function ZmenaHesla_onsubmit
’ procedura na otevreni noveho okna pro zmenu hesla
Dim url
if ZmenaHesla.passwordN1.value<>ZmenaHesla.passwordN2.value then
msgbox "Chybne jste zopakovali novŘ heslo.",,"Chyba"
ZmenaHesla_onsubmit = false
else
ZmenaHesla_onsubmit = true
end if
End Function
-->
</SCRIPT>
</HEAD>
<BODY background=..\..\Pictures\Pozadi05.gif>
<%
’ ****** Deklarovani funkci ******
Function RW(text)
’ funkce response.write
RW=Response.Write(text)
End Function
’ ******** Konec deklarace funkci *********
’ nacitani promenych z hlavicky
Klient=cint(Request.QueryString("klient"))
Session("Pomocna")=Klient
Zmena=cint(Request.QueryString("zmena"))
166
Smazat=cint(Request.QueryString("smazani"))
’ nejprve zjistime, jestli se nejake rezervace budou rusit
if Smazat>0 then
’ smazani nejake rezervace
’ nejprve najdeme tu rezervaci, kterou mame smazat
Data.open "SELECT * FROM NoveRezervace WHERE Klient=" & Klient & " ORDER BY
film,Rezervace_od",Conn
I=1
do while I<Smazat
Data.MoveNext
I=I+1
loop
Film=Data("film")
RezervaceOd=Data("Rezervace_od")
Data.Close
’ nyni otevreme tabulku rezervace
Data.open "SELECT * FROM Rezervace WHERE [Klient]=" & Klient & " and [Vyrizena]=false and
[film]=" & Film,Conn,,2
’ najdeme zaznam, ktery mame smazat
do while Data("Rezervace_od")<>RezervaceOd
Data.MoveNext
loop
Data.Delete 1
Data.Close
end if
’ otevreme v databazi tabulku klienti a najdeme jmeno a prijmeni klienta
Data.open "SELECT * FROM klienti WHERE IDklient=" & Klient,Conn
if Zmena=1 then%>
<SCRIPT>
msgbox "Zmena hesla probehla uspesne.",,"Zmena hesla"
</SCRIPT><%
end if
Jmeno=Data("Jmeno")+"&nbsp;"+Data("Prijmeni")
Adresa=Data("Bydliste")%>
<center>
<!-- zobrazeni informaci o klientu -->
<table border=0 width=460>
<tr align=center><td><font size=6 color=Maroon STYLE="font-weight=bold">
Informace&nbsp;o&nbsp;klientovi</font></td></tr>
<tr><td>&nbsp;</td></tr>
<tr align=center><td>
<table border=0 cellpadding=5>
<tr><td><b>JmŘ no&nbsp;a&nbsp;prıjmenı:</b></td>
<td align=left><%=Jmeno%></td></tr>
<tr><td><b>ID&nbsp;klienta:</b></td>
<td align=left><%=Klient%></td></tr>
<tr><td><b>Adresa&nbsp;bydliste:</b></td>
<td align=left><%=Adresa%></td></tr>
<tr><td><b>E-mail&nbsp;adresa:</b></td>
<td align=left><%=Data("E-mail")%></td></tr>
<tr><td>&nbsp;</td><td>&nbsp;</td></tr>
</table></td></tr>
<tr><td><hr></td></tr>
<!-- zobrazeni formulare na zmenu hesla -->
<tr><td><font size=4 color=DarkGreen><b><center>Moz nost zmeny hesla
</center></b></font><BR></td></tr>
167
<tr align=middle><td>
<form method="post" action="ZmenaHesla.asp" name=ZmenaHesla>
<table border=0 cellpadding=5>
<tr><td><font color=Blue STYLE="font-weight=bold">
Zadejte&nbsp;starŘ &nbsp;heslo:&nbsp;</font></td><td><INPUT id=passwordS
name=passwordS type=password style="HEIGHT: 22px; WIDTH: 112px"></td></tr>
<tr><td><font color=Blue STYLE="font-weight=bold">
Zadejte&nbsp;novŘ &nbsp;heslo:&nbsp;</font></td><td><INPUT id=passwordN1
name=passwordN1 type=password style="HEIGHT: 22px; WIDTH: 110px"></td></tr>
<tr><td><font color=Blue STYLE="font-weight=bold">
Zopakujte&nbsp;novŘ &nbsp;heslo:&nbsp;</font></td><td><INPUT id=passwordN2
name=passwordN2 type=password style="HEIGHT: 22px; WIDTH: 109px"></td></tr>
<tr><td align=middle ColSpan=2><INPUT id=Zmena name=Zmena type=submit
value="Zmenit heslo"></td></tr>
</table>
</form>
</td></tr>
<tr><td><hr></td></tr>
<tr><td><font size=4 color=DarkGreen><b><center>Informace o vyp ujc eny ch filmech
</center></b></font><BR></td></tr>
<%
’ zobrazeni filmu, ktere ma klient pujcene
Data.close
’ nejprve otevreme dotaz PujcenyDo a zjistime, jestli ma klient vypujcen nejaky film
Data.open "SELECT * FROM PujcenyDo WHERE IDKlient=" & Klient,Conn
PujcenyDo=""%>
<tr align=middle><td>
<table border=1 cellpadding=5 bordercolordark=blue background=..\..\Pictures\Pozadi06.gif>
<tr bgcolor=moccasin><td align=center>Na zev&nbsp;filmu</td><td align=center>
Pujc eno&nbsp;dne</td>
<td align=center>Pujc eno&nbsp;do</td></tr>
<%if not Data.BOF then
do while not Data.eof
’ otevreme tabulku film a zjistime nazev filmu
Data2.open "SELECT * FROM film WHERE IDfilmu=" &
Data("Nazev_Filmu"),Conn
if cdate(Data("PujcenyDo"))<Date() then
’ klient jiz mel tento film vratit
PujcenyDo=cdate(Data("PujcenyDo"))
rw("<tr><td><font color=Red>"+
cstr(Data2("Nazev_Filmu"))+"</font></td>")
rw("<td align=right><font color=Red>"+
cstr(Data("MinOfPrvniDen"))+"</font></td>")
rw("<td align=right><font
color=Red>"+cstr(Data("PujcenyDo"))+"</font></td></tr>")
else
’ klient ma vypujcen film
PujcenyDo=cdate(Data("PujcenyDo"))
rw("<tr><td>"+cstr(Data2("Nazev_Filmu"))+"</td>")
rw("<td align=right>"+cstr(Data("MinOfPrvniDen"))+"</td>")
rw("<td align=right>"+cstr(Data("PujcenyDo"))+"</td></tr>")
end if
Data2.Close
Data.MoveNext
loop
else
’ klient nema vypujcen zadny film%>
<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<%end if%>
</table></td></tr>
168
<tr><td><hr></td></tr>
<tr><td><font size=4 color=DarkGreen><b><center>Informace o rezervovan y ch filmech
</center></b></font><BR></td></tr>
<%
’ zobrazeni rezervovanych filmu klienta s moznosti je smazat
Data.close
’ nyni otevreme tabulku rezervace a zjistime, jestli ma klient nejakou rezervaci
Data.open "SELECT * FROM NoveRezervace WHERE Klient=" & Klient & " ORDER BY
film,Rezervace_od",Conn
%>
<tr align=middle><td>
<table border=1 cellpadding=5 bordercolordark=bl ue background=..\..\Pictures\Pozadi06.gif>
<tr bgcolor=moccasin><td align=center>Na zev&nbsp;filmu</td><td
align=center>Rezervace&nbsp;od</td>
<td align=center>Rezervace&nbsp;do</td><td>Rusenı&nbsp;rezervace</td></tr>
<%if not Data.BOF then
I=1
do while not Data.eof
’ klient ma aktualni rezervaci
’ otevreme tabulku film a zjistime nazev filmu
Data2.open "SELECT * FROM film WHERE IDfilmu=" &
Data("film"),Conn
rw("<tr><td>"+cstr(Data2("Nazev_Filmu"))+"</td>")
rw("<td align=right>"+cstr(Data("Rezervace_od"))+"</td>")
rw("<td align=right>"+cstr(Data("Rezervace_do"))+"</td>")
rw("<td align=center>")
’ tlacitko pro zruseni rezervace%>
<INPUT type="button" value="Zrusit" name="<%=I%>" onclick="Smazani
<%=I%>,<%=Klient%>" style="HEIGHT: 29px; WIDTH: 54px">
<%rw("</td></tr>")
Data2.Close
Data.MoveNext
I=I+1
loop
else
’ klient nema rezervovan zadny film%>
<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
<%end if%>
</table></td></tr>
<%Set Data=Nothing%>
</table>
<P>
<INPUT type="button" value="Zpet" id=zpet name=zpet style="HEIGHT: 29px; WIDTH: 54px">
</center>
</P>
<%
Set Data2=Nothing
Conn.close
Set Conn=Nothing
%>
</BODY>
</HTML>
5.4.6.2
Soubor NoveHeslo.asp
<%@ Language=VBScript %>
<%’ formular pro odeslani pozadavku na nove heslo, tento formular se nezobrazuje
169
option explicit
Dim Conn,Data,Klient,Okno
Set Conn = Server.CreateObject("ADODB.Connection")
Set Data = Server.CreateObject("ADODB.recordset")
Conn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\private") &
"\VideoWWW.mdb;"
%>
<HTML>
<HEAD>
<META name=VI60_defaultClientScript content=VBScript>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
<TITLE>Nove heslo</TITLE>
</HEAD>
<BODY>
<%
’ nacitani promenych z hlavicky
Okno=Request.QueryString("okno")
Klient=cint(Request.QueryString("klient"))
Data.CursorType = 3
’ otevreme tabulky na zaznam pozadavku o nove heslo
Data.open "SELECT * FROM NoveHeslo",Conn,,2
Data.AddNew
Data("Klient")=Klient
Data("Datum")=Date()
Data("Cas")=Time()
’ ulozime data do tabulky a uzavreme ji
Data.Update
Data.Close
Set Data=Nothing
Conn.close
Set Conn=Nothing%>
<SCRIPT LANGUAGE=vbscript>
window.open "../Chyby/chyba3.asp?vyrizeno=1&klient="&cstr(<%=Klient%>)+"&Okno=rezervace",
"Zablokovane_heslo","toolbar=no,scrollbars=no,location=no,status=no,width=550,height=350,resizable
=1","replace"
window.close
</SCRIPT>
</BODY>
</HTML>
5.4.6.3
Soubor ZmenaHesla.asp
<%@ Language=VBScript %>
<%’ formular pro zmenu hesla, tento formular se nezobrazuje
option explicit
Dim Conn,Data,Klient,HesloN,HesloS
Set Conn = Server.CreateObject("ADODB.Connection")
Set Data = Server.CreateObject("ADODB.recordset")
Conn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\private") &
"\VideoWWW.mdb;"
%>
<HTML>
<HEAD>
<META name=VI60_defaultClientScript content=VBScript>
170
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
<TITLE>Zmena hesla</TITLE>
</HEAD>
<BODY>
<%
’ nacitani promenych z hlavicky
Klient=cint(Session("Pomocna"))
HesloN=Request.Form("PasswordN1")
HesloS=Request.Form("PasswordS")
’ otevreme v databazi tabulku klienti a najdeme heslo klienta
Data.open "SELECT Heslo FROM klienti WHERE IDklient="&cstr(Klient),Conn,,2
if HesloS<>Data("Heslo") then
’ pokud je zadano spatne stare heslo, tak otevreme okno s chybovou hlaskou%>
<SCRIPT Language=VBScript>
window.open "../Chyby/chyba2.asp?Klient="+cstr(<%=Klient%>)+"&Okno=klient",
"Chybne_heslo","toolbar=no,scrollbars=no,location=no,status=no,width=350,height=200,resiz
able=1","replace"
window.close
</SCRIPT>
<%else
’ provedeme zmenu hesla
Data("Heslo")=HesloN
’ ulozime ho do tabulky a uzavreme ji
Data.Update
Set Data=Nothing
Conn.close
Set Conn=Nothing%>
<SCRIPT Language=VBScript>
’ navrat do formulare KlientVysledek
Dim url
url="KlientVysledek.asp?Klient="+"<%=Klient%>"+"&zmena=1&smazani=0"
window.open url,"Info_klient","toolbar=no,scrollbars=yes,location=no,status=no,width=500,
height=300,resizable=0","replace"
</SCRIPT>
<%end if%>
</BODY>
</HTML>
5.4.7
Adresar Root/Video/Chyby
v Obsahuje tyto soubory: Chyba1.asp
Chyba2.asp
Chyba3.asp
5.4.7.1
Soubor Chyba1.asp
<%@ Language=VBScript %>
<%’ okno, ktere se objevi pri spatnem zadani ID klienta
option explicit
Dim Okno
%>
171
<HTML>
<HEAD>
<META name=VI60_defaultClientScript content=VBScript>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
<TITLE>Chyba: spatne ID klienta</TITLE>
<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
<!Ž
option explicit
Sub Otevrit(ID)
’ pokud jsme sem prisli z okna rezervace, tak se tam vratime
Dim url
url="../Rezervace/rezervace.asp?IDfilm="+cstr(ID)+"&Mesic="+cstr(Month(Date()))+"&Rok="+
cstr(Year(Date()))
window.open url,"Rezervace","toolbar=no,scrollbars=no,location=no,status=no,width=560,
height=450,resizable=0","replace"
window.close
End Sub
Sub Zavrit
window.close
End Sub
-->
</SCRIPT>
</HEAD>
<BODY background=..\..\Pictures\Pozadi07.jpg text=Black>
<%
’ nacitani promenych z hlavicky
’ okno - promenna, podle ktere zjistime, z ktereho okna se sem dostali
’ bud pri identifikaci klienta = Klient
’ nebo pri rezervaci = Rezervace
Okno=Request.QueryString("okno")
%>
<center>
<!-- napsani chybove zpravy -->
<table border=1 bordercolor=Yellow bordercolordark=Yellow bordercolorlight=Yellow>
<tr STYLE="font-weight=600">
<td valign=top>&nbsp;Chyba:&nbsp;</td>
<td>Zadali jste spatnŘ ID uz ivatele. Takovy uz ivatel zde neexistuje.</td>
</tr>
</table>
<P>
<%if Okno="klient" then
’ dostali jsme sem z okna Klient%>
<INPUT type="button" value="Zpet" id=zpet1 name=zpet1 onclick=Zavrit>
<%else%>
<INPUT type="button" value="Zpet" id=zpet2 name=zpet2
onclick=Otevrit(<%=Session("Pomocna")%>)>
<%end if%>
</center>
</BODY>
</HTML>
172
5.4.7.2
Soubor Chyba2.asp
<%@ Language=VBScript %>
<%’ pokud jsme zadali spatne heslo, tak se objevi tento formular
’ pokud zadame 5x spatne heslo, tak bude zablokovano
option explicit
Dim Okno,Conn,Data,Klient
Set Conn = Server.CreateObject("ADODB.Connection")
Set Data = Server.CreateObject("ADODB.recordset")
Conn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\private") &
"\VideoWWW.mdb;"
%>
<HTML>
<HEAD>
<META name=VI60_defaultClientScript content=VBScript>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
<TITLE>Chyba: spatne heslo</TITLE>
<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
<!-option explicit
Sub Otevrit(ID)
’ pokud jsme se sem dostali z okna rezervace, tak se tam vratime
Dim url
url="../Rezervace/rezervace.asp?IDfilm="+cstr(ID)+"&Mesic="+cstr(Month(Date()))+
"&Rok="+cstr(Year(Date()))
window.open url,"Rezervace","toolbar=no,scrollbars=no,location=no,status=no,width=560,
height=450,resizable=0","replace"
window.close
End Sub
Sub Zavrit
window.close
End Sub
-->
</SCRIPT>
</HEAD>
<BODY background=..\..\Pictures\Pozadi07.jpg text=Black>
<%’ nacitani promenych z hlavicky
Okno=cstr(Request.QueryString("okno"))
Klient=cint(Request.QueryString("Klient"))
’ zvisime pocet spatnych pokusu hesel
Session("Heslo")=cstr(cint(Session("Heslo"))+1)
if cint(Session("Heslo"))=5 then
’ jiz po 5 bylo zadano spatne heslo, proto ho zablokujeme
’ nejprve nastavime typ cursoru
Data.CursorType = 3
Data.open "SELECT * FROM klienti WHERE IDklient=" & Klient,Conn,,2
’ vyplnime udaje o zablokovani
Data("ZablokovaneHeslo")=true
Data("ZablokovanoRucne")=false
’ ulozime to do tabulky a uzavreme ji
173
Data.Update
Data.close
’ nyni zapiseme udaje do tabulky blokace
Data.open "SELECT * FROM blokace",Conn,,2
’ vytvorime novy zaznam v tabulce blokace
Data.addnew
Data("IP")=Request.ServerVariables("Remote_ADDR")
Data("Datum")=date()
Data("Cas")=time()
Data("Klient")=Klient
Data("Prohlizec")=Request.ServerVariables("HTTP_USER_AGENT")
’ provedeme zmeny a ukoncime spojeni s tabulkou
Data.Update
Set Data=Nothing
Conn.close
Set Conn=Nothing
’ dame dalsich 5 moznosti pro noveho klienta
Session("Heslo")="0"
’ nyni otevreme okno s informacemi, ze, film byl zablokovan%>
<SCRIPT>
window.open "chyba3.asp?vyrizeno=0&blokace=ano&okno=""+<%=Okno%>+""&klient="+
cstr(<%=Klient%>),"Zablokovane_heslo","toolbar=no,scrollbars=no,location=no,status=no,wi
dth=550,height=350,resizable=1","replace"
window.close
</SCRIPT>
<%else
’ uzavreme spojeni na databaci
Conn.close
Set Conn=Nothing
end if%>
<!-- napsani chybove zpravy -->
<center>
<table border=1 bordercolor=Yellow bordercolorlight=Yellow bordercolordark=Yellow>
<tr STYLE="font-weight=600">
<td valign=top>&nbsp;Chyba:&nbsp;</td>
<td>Zadali jste spatnŘ heslo.</td>
</tr>
<tr STYLE="font-weight=600">
<td valign=top>&nbsp;Upozornenı:&nbsp;</td>
<%if (5-cint(Session("Heslo"))=1) then%>
<td>Ma te jiz jen 1 moz nost zapsat spra vnŘ heslo. Pokud se va m to nepovede, tak bude Vase
heslo zablokova no!</td>
</tr>
<%else%>
<td>Ma te jeste <%=cstr(5-cint(Session("Heslo")))%> moz nosti zapsat spra vnŘ heslo. Pokud se
va m to nepovede, tak bude Vase heslo zablokova no!</td>
<%end if%>
</tr>
</table>
<P>
<%if Okno="klient" then
’ dostali jsme sem z okna Klient%>
<INPUT type="button" value="Zpet" id=zpet1 name=zpet1 onclick=Zavrit>
<SCRIPT>
Zpet1.focus
174
</SCRIPT>
<%else%>
<INPUT type="button" value="Zpet" id=zpet2 name=zpet2
onclick=Otevrit(<%=Session("Pomocna")%>)>
<SCRIPT>
Zpet2.focus
</SCRIPT>
<%end if%>
</center>
</BODY>
</HTML>
5.4.7.3
Soubor Chyba3.asp
<%@ Language=VBScript %>
<%’ zobrazeni informace, ze je heslo zablokovane, take je zde moznost si podat zadost o nove heslo
option explicit
Dim Klient,Vyrizeno,Conn,Data,Pozadavek,Okno,Pom
Set Conn = Server.CreateObject("ADODB.Connection")
Set Data = Server.CreateObject("ADODB.recordset")
Conn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\private") &
"\VideoWWW.mdb;"
%>
<HTML>
<HEAD>
<META name=VI60_defaultClientScript content=VBScript>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
<TITLE>Chyba: zablokovane heslo</TITLE>
<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
<!-Sub Otevrit(ID)
’ pokud jsme sem prisli z okna rezervace, tak se tam vratime
Dim url
url="../Rezervace/rezervace.asp?IDfilm="+cstr(ID)+"&Mesic="+cstr(Month(Date()))+"&Rok="+
cstr(Year(Date()))
window.open url,"Rezervace","toolbar=no,scrollbars=no,location=no,status=no,width=560,
height=450,resizable=0","replace"
window.close
End Sub
Sub Zavrit
window.close
End Sub
Sub Poslat(klient)
’ poslani zadosti o nove heslo
Dim url
url="../Klient/NoveHeslo.asp?Klient="+cstr(klient)+"&Okno=rezervace"
window.open url,"Chybne_ID","toolbar=no,scrollbars=no,location=no,status=no,width=150,
height=200,resizable=0","replace"
window.close
End Sub
-->
175
</SCRIPT>
</HEAD>
<BODY text=black background=..\..\Pictures\Pozadi01.gif STYLE="FONT-WEIGHT: bold">
<%’ nejprve nacteme z hlavicky ID klienta
’ nacitani promenych z hlavicky
’ okno - promenna, podle ktere zjistime, z ktereho okna se sem dostali
’ bud pri identifikaci klienta = Klient
’ nebo pri rezervaci = Rezervace
Klient=Request.QueryString("klient")
Vyrizeno=cint(Request.QueryString("Vyrizeno"))
if Request.QueryString("blokace")="ano" then
’ heslo bylo prave zablokovano
Pom=Request.QueryString("okno")
Okno=cstr(Right(Left(Pom,len(Pom)-2),len(Pom)-4))
else
Okno=Request.QueryString("okno")
end if
’ nejprve zjistime, jestli klient ma v databazi uvedenou E-mail adresu
’ dale zjistime, jestli jiz nahodou nema klient pozadavek na zaslani hesla zaregistrovan
Pozadavek=0
if Vyrizeno=1 then%>
<SCRIPT>
msgbox "Vas pozadavek byl zaregistrovan.",,"Zmena hesla"
</SCRIPT><%
Pozadavek=1
else
Data.Open "SELECT * FROM Klienti WHERE IDKlient="&Klient,Conn
if isnull(Data("E-mail")) then
’ klient nema zaregistrovany E-mail
Pozadavek=1
else
Data.Close
Data.Open "SELECT * FROM NoveHeslo WHERE Vyrizeno=False and
Klient="&Klient,Conn
if not Data.BOF then Pozadavek=1
end if
end if%>
<!-- zobrazeni infomaci o zablokovanem hesle -->
<center><font color=red>
<H1>Vase heslo je zablokova no!</H1>
</font></center>
<P><font size=4 color=blue>
Pro odblokova nı hesla muz ete pouz ıt jeden z na sledujıcıch dvou postupu:</font><BR>
<OL type=1>
<LI>Dostavit se prımo do videopujc ovny, kde muz ete zjistit kdy a&nbsp;z&nbsp;jakŘ ho poc ıtac e
probehlo
zablokova nı Vaseho hesla.
<LI>Pokud ma te ve videopujc ovne zaregistrovanou Vasi E-mail adresu, tak stiskem na sledujıcıho
tlac ıtka
<center>
<INPUT id=odeslat name=odeslat type=button value="NovŘ heslo" style="HEIGHT: 24px;
WIDTH: 87px" onclick=Poslat(<%=Klient%>) <%if Pozadavek=1 then
Response.Write("disabled")%> >
</center>
odeslete do videopujc ovny poz adavek na vygenerova nı novŘ ho hesla. Nove vygenerovanŘ heslo Va m
potom
176
prijde na Va s E-mail.
<P>
<center>
<%if Okno="rezervace" then
’ dostali jsme sem z okna Rezervace%>
<INPUT type="button" value="Zpet" id=zpet2 name=zpet2
onclick=Otevrit(<%=Session("Pomocna")%>)>
<%else%>
<INPUT type="button" value="Zpet" id=zpet1 name=zpet1 onclick=Zavrit>
<%end if%>
</center>
</LI>
</OL>
</BODY>
</HTML>
5.4.8
Adresar Root/Video/Vstupy
v Obsahuje tyto soubory: Vstup1.asp
Vstup2.asp
5.4.8.1
Soubor Vstup1.asp
<%@ Language=VBScript %>
<%
’ formular pro overeni hesla klienta pri vstupu klienta do sve osobni karty
’ graficky vzhled je stejny s formularem Klient.html
option explicit
Dim Conn,Data,Klient,Heslo
Set Conn = Server.CreateObject("ADODB.Connection")
Set Data = Server.CreateObject("ADODB.recordset")
Conn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\private") &
"\VideoWWW.mdb;"
%>
<HTML>
<HEAD>
<META name=VI60_defaultClientScript content=VBScript>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
<TITLE>Vstup:overeni </TITLE>
<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
<!-Function vstup_onsubmit
’ odeslani dat o klientovi
if IsNumeric(vstup.klient.value) then
’ pokud je vyplneno ID klienta, pak formular odesleme
vstup_onsubmit = true
else
’ pokud neni zadano cislo klienta
msgbox "Ma te spatne zadanŘ ID klienta."
vstup_onsubmit = false
end if
End Function
-->
177
</SCRIPT>
</HEAD>
<BODY background=..\..\Pictures\Pozadi03.gif text=Black>
<%
’ nacitani promenych z hlavicky
Klient=cstr(Request.Form("klient"))
Heslo=Request.Form("heslo")
’ otevreme v databazi tabulku klienti a najdeme jmeno a prijmeni klienta
Data.open "SELECT * FROM klienti WHERE IDklient="&Klient,Conn
if Data.bof then
’ pokud dany klient neexistuje%>
<SCRIPT Language=VBScript>
window.open "../Chyby/chyba1.asp?Okno=klient","Chybne_ID","toolbar=no,
scrollbars=no,location=no,status=no,width=280,height=160,resizable=1","replace"
window.close
</SCRIPT>
<%Set Data=Nothing
elseif Data("ZablokovaneHeslo")=true then
’ pokud je heslo zablokovane tak uzavreme spojeni na databazi
Set Data=Nothing
’ otevreme okno s informacemi, ze, film byl zablokovan%>
<SCRIPT Language=VBScript>
window.open "../Chyby/chyba3.asp?vyrizeno=0&blokace=ne&klient="&cstr(<%=Klient%>)+
"&Okno=klient","Zablokovane_heslo","toolbar=no,scrollbars=no,location=no,status=no,width
=550,height=350,resizable=1","replace"
window.close
</SCRIPT>
<%elseif Heslo<>Data("Heslo") then
’ pokud bylo zada no spatnŘ heslo%>
<SCRIPT Language=VBScript>
window.open "../Chyby/chyba2.asp?Klient="+cstr(<%=Klient%>)+"&Okno=klient",
"Chybne_heslo","toolbar=no,scrollbars=no,location=no,status=no,width=350,height=200,resiz
able=1","replace"
window.close
</SCRIPT>
<%Set Data=Nothing
else
’ jmeno klienta i heslo jsou spravne
’ dame mu dalsich 5 moznosti na chybne heslo
Session("Heslo")="0"
’ prejdeme do formulare RezervaceVysledek%>
<SCRIPT Language=VBScript>
window.open "../Klient/KlientVysledek.asp?Klient="+cstr(<%=Klient%>) +"&zmena=0&
smazani=0","Info_klient","toolbar=no,scrollbars=yes,location=no,status=no,width=500,height
=300, resizable=0","replace"
</SCRIPT>
<%Set Data=Nothing
end if
Conn.close
Set Conn=Nothing
%>
<!-- zobrazeni nadpisu stranky -->
<table border="1" width="100%">
<tr>
<td width="100%" bgcolor="#000080">
178
<p align="center"><b><font face="Arial" size="5" color="#ffffff">
Identifikace&nbsp;klienta</font></b></p>
</td>
</tr>
</table>
<P>&nbsp;</P>
<!-- zobrazeni formulare na zadani ID klienta a hesla -->
<center>
<form method="post" action="Vstup1.asp" name=vstup>
<table border=0>
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td><font STYLE="font-weight=bold"
size=4>Zadejte&nbsp;Vase&nbsp;ID:&nbsp;</font></td>
<td><INPUT type="text" id=klient name=klient style="HEIGHT: 22px; WIDTH:
100px"></td>
<tr>
<tr>
<td><font STYLE="font-weight=bold" size=4>Zadejte&nbsp;heslo:&nbsp;</font></td>
<td><INPUT type="password" id=heslo name=heslo style="HEIGHT: 22px; WIDTH:
100px"></td>
</tr>
</table>
<P><BR>
<INPUT type=submit value="Vstupte" id=ok name=ok style="HEIGHT: 24px; WIDTH: 70px">
</form>
</center>
</BODY>
</HTML>
5.4.8.2
Soubor Vstup2.asp
<%@ Language=VBScript %>
<%
’ formular pro overeni hesla klienta pri rezervaci filmu, tento formular se nezobrazuje
option explicit
Dim Conn,Data,Klient,Heslo,Datum
Set Conn = Server.CreateObject("ADODB.Connection")
Set Data = Server.CreateObject("ADODB.recordset")
Conn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\private") &
"\VideoWWW.mdb;"
%>
<HTML>
<HEAD>
<META name=VI60_defaultClientScript content=VBScript>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
<TITLE>Vstup:overeni </TITLE>
</HEAD>
<BODY>
<%
’ nacitani promenych z hlavicky
Klient=cstr(Request.Form("klient"))
Heslo=cstr(Request.Form("heslo"))
179
Datum=cdate(Request.form("rezervace"))
’ otevreme v databazi tabulku klienti a najdeme jmeno a prijmeni klienta
Data.open "SELECT * FROM klienti WHERE IDklient="&Klient,Conn
if Data.bof then
’ pokud dany klient neexistuje
Response.write(heslo)%>
<SCRIPT Language=VBScript>
window.open
"../Chyby/chyba1.asp?Okno=Rezervace","Chybne_ID","toolbar=no,scrollbars=no,
location=no,status=no,width=280,height=160,resizable=1","replace"
window.close
</SCRIPT>
<%Set Data=Nothing
elseif Data("ZablokovaneHeslo")=true then
’ pokud je heslo zablokovane tak uzavreme spojeni na databazi
Set Data=Nothing
’ otevreme okno s informacemi, ze, film byl zablokovan%>
<SCRIPT Language=VBScript>
window.open "../Chyby/chyba3.asp?vyrizeno=0&blokace=ne&klient="&cstr(<%=Klient%>)+
"&Okno=rezervace","Zablokovane_heslo","toolbar=no,scrollbars=no,location=no,status=no,wi
dth=550,height=350,resizable=1","replace"
window.close
</SCRIPT>
<%elseif heslo<>Data("Heslo") then
’ pokud bylo zada no spatnŘ heslo%>
<SCRIPT Language=VBScript>
window.open "../Chyby/chyba2.asp?Klient="+cstr(<%=Klient%>)+"&Okno=rezervace",
"Chybne_heslo","toolbar=no,scrollbars=no,location=no,status=no,width=350,height=200,resiz
able=1","replace"
window.close
</SCRIPT>
<%Set Data=Nothing
else
’ jmeno klienta i heslo jsou spravne
’ dame mu dalsich 5 moznosti na chybne heslo
Session("Heslo")="0"
’ prejdeme do formulare RezervaceVysledek%>
<SCRIPT Language=VBScript>
window.open "../Rezervace/RezervaceVysledek.asp?Datum=""+<%=Datum%>+""&Klient="+
cstr(<%=Klient%>),"Vy sledek_rezervace","toolbar=no,scrollbars=no,location=no,status=no,wi
dth=400,height=280,resizable=1","replace"
window.close
</SCRIPT>
<%Set Data=Nothing
end if
Conn.close
Set Conn=Nothing
%>
</BODY>
</HTML>
180

Podobné dokumenty

Kurz Databáze

Kurz Databáze ‹ Formuláře, typy formulářů, sekce formuláře. ‹ Objekty formuláře.

Více

Západočeská univerzita FAKULTA APLIKOVANÝCH VĚD

Západočeská univerzita FAKULTA APLIKOVANÝCH VĚD Procedurální jazyk zpracovává data záznam po záznamu Neprocedurální jazyk pracuje s množinou záznamů a určuje jak data vybrat - SQL Současný přístup k datům – současný přístup více uživateli ve ste...

Více

Plný text uèebnice ()

Plný text uèebnice () závislosti týkaly pouze neklíčových atributů. Definici BoyceCoddovy normální formy lze vyjádřit takto: "Schéma relace R (A) je v BC normální formě, jestliže pro každou závislost X->C, kde X je podm...

Více

Studijní text - E-learningové prvky pro podporu výuky

Studijní text  - E-learningové prvky pro podporu výuky jsou v datech hodnoty staré i nové, data ztrácí konzistenci. 3. Integrita: aby agenda byla použitelná, musí být uložená data aktuální, tedy popisovat skutečnost z reálného světa - tuto vlastnost na...

Více

primary key

primary key ZAMĚSTN (C_Z,JMÉNO_Z, ADRESA) e c a l e r á VŮZ(SPZ, VÝROBCE, MODEL) v o h a vzt POUZIVA(C_Z, SPZ) IO: POUZIVA[C_Z] ZAMĚSTN [C_Z] POUZIVA[SPZ ] VŮZ[SPZ]

Více