Videopůjčovna
Transkript
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ı 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ı 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 o 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 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> </P> <font size=5 color=blue><center><EM> Vıtejte na stra nka ch virtua lnı videopujc ovny. </EM></center></font> <P> <P> <font size=4> 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> 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> 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> Poloz ka informace o klientovi je jen pro c leny videopujc ovny. V 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> Pozor! Vase heslo bude zablokova no po 5-ti neďspesny ch pokusech.</b> <P> 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ı filmu podle zadany ch kritŘ riı</font></b></p> </td> </tr> </table> <P> </P> <!-- formular pro vyhledavani nazvu filmu --> <form method="get" action="Vysledky/vysledky1f.asp" name=Hledani1> <table> <tr> <td width=150>Zadej c a st na zvu filmu: </td> <td><INPUT id=film name=film style="HEIGHT: 22px; WIDTH: 98px"></td> <td> je od zac a tku? </td> <td><INPUT id=checknazev name=checknazev type=checkbox checked></td> </tr> <tr> <td> </td> </tr> <tr> <!-- vyber po kolikati zaznamech se budou vysledky zobrazovat --> <td>Zobrazuj 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" > </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ı: </STRONG></td> <td>Pokud nebude polıc ko "Je od zac a tku?" 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 c a st prıjmenı herce: </td> <td><INPUT id=herec name=herec style="HEIGHT: 22px; WIDTH: 98px"></td> <td> </td> <td> </td> <td> </td> </tr> <tr> <td> </td> </tr> <tr> <!-- vyber po kolikati zaznamech se budou vysledky zobrazovat --> <td>Zobrazuj 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" > </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 c a st prıjmenı rez isŘ ra: </td> <td><INPUT id=reziser name=reziser style="HEIGHT: 22px; WIDTH: 99px"></td> </tr> <tr> <td> </td> </tr> <tr> <!-- vyber po kolikati zaznamech se budou vysledky zobrazovat --> <td>Zobrazuj 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" > </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ı filmu 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 c a st na zvu filmu:</td> <td><INPUT id=nazev name=nazev> </td> <td>je od zac a tku?</td> <td><INPUT id=checknazev name=checknazev type=checkbox checked></td> </tr> <tr> <!-- policko pro vyhledavani jmena herce --> <td>Zadej c a st prıjmenı herce:</td> <td><INPUT id=herec name=herec></td> <td> </td> <td> </td> </tr> <tr> <!-- policko pro vyhledavani jmena rezisera --> <td>Zadej c a st prıjmenı rez isŘ ra:</td> <td><INPUT id=reziser name=reziser></td> <td> </td> <td> </td> </tr> </table> <hr> <!-- zobrazeni upozorneni --> <table> <tr> <td style="TEXT-ALIGN: left" vAlign=top> <STRONG>Upozornenı: </STRONG></td> <td>Pokud nebude polıc ko "Je od zac a tku?" zaskrtnuto, je nutnŘ zadat alespon3 pısmena.</td> </tr> </table> <hr> <table> <tr> <!-- vyber zanru filmu --> <td>Vyber z a nr 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 rok vy roby: </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 zemi, kde byl vyroben: </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 dŘ lku filmu (minuty): </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 cenu filmu za 1 den (Kc ): </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 maxima lnı dŘ lku vy pujc ky (dny): </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, zda je film vypujc eny : </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> </td> <td> </td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <!-- vyber po kolikati zaznamech se budou vysledky zobrazovat --> <td>Zobrazuj 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> <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 klienta</font></b></p> </td> </tr> </table> <P> </P> <!-- zobrazeni formulare na zadani ID klienta a hesla --> <center> <form method="post" action="Vstupy/Vstup1.asp" name=vstup> <table border=0> <tr> <td> </td> </tr> <tr> <td><font STYLE="font-weight=bold" size=4>Zadejte Vase ID: </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 heslo: </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> <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: " " & film & " " " ’ 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: " " & film & " " " ’ 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Ř kritŘ rium: </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 %> <a href="vysledky1f.asp?film=<%=film%>&zobraz=<%=vysledky%>&str=<%=stranka1%>"> <img src=..\..\Pictures\sipka2.gif border=0 align=absmiddle></a> Zobraz <%=(stranka-2)*vysledky+1%>. - <%=(stranka-1)*vysledky%>. vy sledek z celkovŘ ho poc tu <%=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> <img src=..\..\Pictures\ruka2.gif border=0 align=absmiddle> <%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%> <a href="vysledky1f.asp?film=<%=film%>&zobraz=<%=vysledky%> &str=<%=stranka+1%>"> <img src=..\..\Pictures\sipka3.gif border=0 align=absmiddle></a> Zobraz <%=Pocet%>. vy sledek z celkovŘ ho poc tu <%=Pocet%>. <%else if Pocet<(stranka+1)*vysledky then ’ pokud nasledujici stranka nebude plna, ale budou tam alespon 2 vysledky%> <a href="vysledky1f.asp?film=<%=film%>&zobraz=<%=vysledky%> &str=<%=stranka+1%>"> <img src=..\..\Pictures\sipka3.gif border=0 align=absmiddle></a> Zobraz <%=stranka*vysledky+1%>. <%=Pocet%>. vy sledek z celkovŘ ho poc tu <%=Pocet%>. <%else ’ pokud nasledujici stranka bude plna%> <a href="vysledky1f.asp?film=<%=film%>&zobraz=<%=vysledky%> &str=<%=stranka+1%>"> <img src=..\..\Pictures\sipka3.gif border=0 align=absmiddle></a> Zobraz <%=stranka*vysledky+1%>. <%=(stranka+1)*vysledky%>. vy sledek z celkov Ř ho poc tu <%=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> <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: " " & herec & " " " ’ 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Ř kritŘ rium: </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 %> <a href="vysledky1h.asp?herec=<%=herec%>&zobraz=<%=vysledky%>&str=<%=stranka1%>"> <img src=..\..\Pictures\sipka2.gif border=0 align=absmiddle></a> Zobraz <%=(stranka-2)*vysledky+1%>. - <%=(stranka1)*vysledky%>. vy sledek z celkovŘ ho poc tu <%=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> <img src=..\..\Pictures\ruka2.gif> <%Response.Write "<A HREF=""herec.asp?id="&Data("IDherec")&""">" + Data("JmenoH")%> <%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%> <a href="vysledky1h.asp?herec=<%=herec%>&zobraz=<%=vysledky%> &str=<%=stranka+1%>"> <img src=..\..\Pictures\sipka3.gif border=0 align=absmiddle></a> Zobraz <%=Pocet%>. vy sledek z celkovŘ ho poc tu <%=Pocet%>. <%else if Pocet<(stranka+1)*vysledky then ’ pokud nasledujici stranka nebude plna, ale budou tam alespon 2 vysledky%> <a href="vysledky1h.asp?herec=<%=herec%>&zobraz=<%=vysledky%> &str=<%=stranka+1%>"> <img src=..\..\Pictures\sipka3.gif border=0 align=absmiddle></a> Zobraz <%=stranka*vysledky+1%>. <%=Pocet%>. vy sledek z celkovŘ ho poc tu <%=Pocet%>. <%else ’ pokud nasledujici stranka bude plna%> 140 <a href="vysledky1h.asp?herec=<%=herec%>&zobraz=<%=vysledky%> &str=<%=stranka+1%>"> <img src=..\..\Pictures\sipka3.gif border=0 align=absmiddle></a> Zobraz <%=stranka*vysledky+1%>. <%=(stranka+1)*vysledky%>. vy sledek z celkov Ř ho poc tu <%=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> <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: " " & reziser & " " " ’ 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Ř kritŘ rium: </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 %> <a href="vysledky1r.asp?reziser=<%=reziser%>&zobraz=<%=vysledky%>&str=<%=stranka1%>"> <img src=..\..\Pictures\sipka2.gif border=0 align=absmiddle></a> Zobraz <%=(stranka-2)*vysledky+1%>. - <%=(stranka1)*vysledky%>. vy sledek z celkovŘ ho poc tu <%=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> <img src=..\..\Pictures\ruka2.gif> <%Response.Write "<A HREF=""reziser.asp?id="&Data("IDreziser")&""">" + Data("JmenoR")%> <%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%> <a href="vysledky1r.asp?reziser=<%=reziser%>&zobraz=<%=vysledky%> &str=<%=stranka+1%>"> <img src=..\..\Pictures\sipka3.gif border=0 align=absmiddle></a> Zobraz <%=Pocet%>. vy sledek z celkovŘ ho poc tu <%=Pocet%>. <%else if Pocet<(stranka+1)*vysledky then ’ pokud nasledujici stranka nebude plna, ale budou tam alespon 2 vysledky%> <a href="vysledky1r.asp?reziser=<%=reziser%>&zobraz=<%=vysledky%> &str=<%=stranka+1%>"> <img src=..\..\Pictures\sipka3.gif border=0 align=absmiddle></a> Zobraz <%=stranka*vysledky+1%>. <%=Pocet%>. vy sledek z celkovŘ ho poc tu <%=Pocet%>. <%else ’ pokud nasledujici stranka bude plna%> <a href="vysledky1r.asp?reziser=<%=reziser%>&zobraz=<%=vysledky%> &str=<%=stranka+1%>"> <img src=..\..\Pictures\sipka3.gif border=0 align=absmiddle></a> Zobraz <%=stranka*vysledky+1%>. <%=(stranka+1)*vysledky%>. vy sledek z celkov Ř ho poc tu <%=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> <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: " " & nazev & " " ; " ’ 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: " " & nazev & " " ; " ’ 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: " " & herec & " " ; " ’ 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: " " & reziser & " " ; " ’ 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: " " & Data("zanr") & " " ; " 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: " " & rok & " " ; " 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 " " & Data("nazev_zeme") & " " ; " 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: " " & delka & " " 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: " " & cena & " Kc " ;" 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: " " + vypujcka + " dny " " else Kriteria=Kriteria & "maxima lı dŘ lka vy pujc ky je: " " + vypujcka + " dnu " " 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 " je " 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 " nenı " 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 kritŘ ria: </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 %> <a href="vysledky2.asp?<%=Odrezano%><%=stranka-1%>"> <img src=..\..\Pictures\sipka2.gif border=0 align=absmiddle></a> Zobraz <%=(stranka-2)*vysledky+1%>. - <%=(stranka1)*vysledky%>. vy sledek z celkovŘ ho poc tu <%=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> <img src=..\..\Pictures\ruka2.gif> <%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%> <a href="vysledky2.asp?<%=Odrezano%><%=stranka+1%>"> <img src=..\..\Pictures\sipka3.gif border=0 align=absmiddle></a> Zobraz <%=Pocet%>. vy sledek z celkovŘ ho poc tu <%=Pocet%>. <%else if Pocet<(stranka+1)*vysledky then ’ pokud nasledujici stranka nebude plna, ale budou tam alespon 2 vysledky%> <a href="vysledky2.asp?<%=Odrezano%><%=stranka+1%>"> <img src=..\..\Pictures\sipka3.gif border=0 align=absmiddle></a> Zobraz <%=stranka*vysledky+1%>. <%=Pocet%>. vy sledek z celkovŘ ho poc tu <%=Pocet%>. <%else ’ pokud nasledujici stranka bude plna%> 148 <a href="vysledky2.asp?<%=Odrezano%><%=stranka+1%>"> <img src=..\..\Pictures\sipka3.gif border=0 align=absmiddle></a> Zobraz <%=stranka*vysledky+1%>. <%=(stranka+1)*vysledky%>. vy sledek z celkov Ř ho poc tu <%=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> <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> <img src=..\..\Pictures\sipka1.gif border=0 align=absmiddle> <%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 o filmu</font></b></p> </td> </tr> </table> <BR> <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 filmu</td> <td><b><%Response.Write Data("nazev_filmu")%></b></td> </tr> <tr> <!-- zobrazeni jmena rezisera --> <td width=170>Rez isŘ r 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")%> <%Response.Write Data2("PrijmeniR") + "</A>"%>; <%Data2.MoveNext loop Set Data2=Nothing%></td> </tr> <tr> <!-- zobrazeni jmen hercu --> <td width=170 valign=top>Herci ve 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")%> <%Response.Write Data2("PrijmeniH")+"</A>"%>; <%Data2.MoveNext loop Set Data2=Nothing%></td> </tr> <tr> <!-- zobrazeni nazvu zanru --> <td width=170>Za nr 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 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 filmu</td> <td><%Response.Write Data("Delka_filmu")%> minut</td> </tr> <tr> <!-- zobrazeni ceny vypujcky za 1 den --> <td width=170>Cena vy pujc ky za 1 den</td> <td><%Response.Write Data("Cena_za_1_den")%> Kc </td> </tr> <tr> <!-- zobrazeni delky vypujcky --> <td width=170>DŘ lka vy pujc ky</td> <td><%Response.Write Data("Delka_vypujcky") if cint(Data("Delka_vypujcky"))<5 then%> dny<% else%> dnu<% end if 152 %></td> </tr> <tr> <!-- zobrazeni jestli je film pujceny --> <td width=170>Stav filmu</td> <td><% if Data("Pujceny")=false then%> Film nenı vypujc eny <% else%> Film je 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 stisknutı tlac ıtka "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 o herci</font></b></p> </td> </tr> </table> <BR> <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 herce</td> <td><b><%Response.Write Data("jmenoH")%></b></td> </tr> <tr> <!-- zobrazeni prijmeni herce --> <td width=170>Prıjmenı 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 %> <% end if%> </td> </tr> <tr> <!-- zobrazeni nazvu filmu, ve kterych hral a jsou ve videopujcovne --> <td width=170>Filmy, ve ktery ch 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>" %>; <% 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 o rez isŘ rovi</font></b></p> </td> </tr> </table> <BR> <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 rez isŘ ra</td> <td><b><%Response.Write Data("jmenoR")%></b></td> </tr> <tr> <!-- zobrazeni prijmeni rezisera --> <td width=170>Prıjmenı 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 %> <% end if%> </td> </tr> <tr> <!-- zobrazeni nazvu filmu, ktere reziroval a jsou ve videopujcovne --> <td width=170>Filmy, kterŘ 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>" %>; <% 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")+". "+Mesic+". "+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> </td></tr> <tr><td> </td></tr> <tr><td> </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> </td></tr> <tr><td> Zadejte ID:</td> 159 <td><INPUT type="text" id=klient name=klient style="HEIGHT: 22px; WIDTH: 100px" value="<%=klient%>" <%if den="" then%> readOnly <%end if%>> </td></tr> <tr><td> Zadejte heslo: </td> <td><INPUT type="password" id=heslo name=heslo style="HEIGHT: 22px; WIDTH: 100px" <%if den="" then%> readOnly <%end if%>> </td></tr> <tr><td> Rezervace na:</td> <td><INPUT type="text" id=rezervace name=rezervace readOnly style="HEIGHT: 22px; WIDTH: 100px" value="<%=Den%>"> </td></tr> <tr><td> </td></tr> <tr> <td align=middle> <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> </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> <%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%>"><<</A> <%else%> <font color=Red><<</font> <%end if%> <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> <%if Mesic=12 and Rok=2005 then%> <font color=Red>>></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%>">>></A> <%end if%> </td></tr> </form> <tr><td> </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")+" "+Data("Prijmeni") Data.close%> <table border=1 cellpadding=5 bordercolor=Blue> <tr><td align=middle>JmŘ no klienta:</td> <td align=left><%=Jmeno%></td></tr> <tr><td align=middle>Na zev film:</td> <td align=left><%=Nazev%></td></tr> <tr><td align=middle>Datum rezervace: </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 rezervace:</td> <td align=left>Rezervace probehla ďspesne.</td></tr> <%else ’ film je jiz rezervovan%> <tr><td align=middle>Vy sledek 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 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")+" "+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 o klientovi</font></td></tr> <tr><td> </td></tr> <tr align=center><td> <table border=0 cellpadding=5> <tr><td><b>JmŘ no a prıjmenı:</b></td> <td align=left><%=Jmeno%></td></tr> <tr><td><b>ID klienta:</b></td> <td align=left><%=Klient%></td></tr> <tr><td><b>Adresa bydliste:</b></td> <td align=left><%=Adresa%></td></tr> <tr><td><b>E-mail adresa:</b></td> <td align=left><%=Data("E-mail")%></td></tr> <tr><td> </td><td> </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 starŘ heslo: </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 novŘ heslo: </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 novŘ heslo: </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 filmu</td><td align=center> Pujc eno dne</td> <td align=center>Pujc eno 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> </td><td> </td><td> </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 filmu</td><td align=center>Rezervace od</td> <td align=center>Rezervace do</td><td>Rusenı 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> </td><td> </td><td> </td><td> </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> Chyba: </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> Chyba: </td> <td>Zadali jste spatnŘ heslo.</td> </tr> <tr STYLE="font-weight=600"> <td valign=top> Upozornenı: </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 z 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 klienta</font></b></p> </td> </tr> </table> <P> </P> <!-- zobrazeni formulare na zadani ID klienta a hesla --> <center> <form method="post" action="Vstup1.asp" name=vstup> <table border=0> <tr> <td> </td> </tr> <tr> <td><font STYLE="font-weight=bold" size=4>Zadejte Vase ID: </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 heslo: </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
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...
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...
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...
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]