Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Biblioteka - baza podataka!

[es] :: Access :: Biblioteka - baza podataka!

Strane: < .. 1 2 3 4 5

[ Pregleda: 46476 | Odgovora: 81 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.com
Via: [es] mailing liste

Sajt: biske.rs


+39 Profil

icon Re: Biblioteka - baza podataka!31.10.2008. u 20:09 - pre 188 meseci
Hvala za jednostavan odgovor.
Provalio sam resenje za pitanje pod 4. tako da sam uspeo da napravim upit qryMesecneClanarine.
Probacu da resim ostala pitanja pa javljam uskoro sta sam uradio.
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Biblioteka - baza podataka!03.11.2008. u 14:43 - pre 188 meseci
Citat:
1. Kako da napravim da mi dugme izaberi knjigu bude nedostupno ukoliko se datum izdavanja (iz tabele "IznajmljeneKnjige" ne poklapa sa trenutnim datumom? Ovo se nalazi na formi frmIznajmljivanjeKnjige.

Na formin OnCurrent stavis nesto kao:

IF me!datumIzdavanja = date() then
me!DugmeIZaberiKnjigu.enabled = FALSE
ELSE
me!DugmeIZaberiKnjigu.enabled = TRUE
END IF

Ovo moze i u ejdnom redu da se napise, ali je ovako ajsnije sta se desava, a Accesu je ionako svejedno

Citat:

2. Šta treba da stavim na događaj OnCurrent da bi omogućio enable/disable dugmeta "Unesi oštećenja"?
Ovo se nalazi na formi frmIznajmljivanjeKnjige.

Ti sam znas koji je uslov za pojavljivanje dugmeta. Ostalo je kao u prethodniom pitanju

Citat:

3. Mogu li preko DAO recordset da proverim da li je za određeni primerak uneta pozicija knjige. Na primer da unesem kod za dugme "unesi poziciju" na formi frmKnjiga, da stavim if naredbu koja ispituje da li u tabeli "skladisniprostor" postoji slog koji u poljima "sifraizdanja" i "rednibrojprimerka" ima vrednosti kao primerak koji smo uneli na formi frmKnjiga. Ukoliko u tabeli "skladisniprostor" postoji takav slog onda bi obezbedio poruku da knjiga već ima unetu poziciju, u suprotnom bi otvorio formu frmSkladisniProstor.

Naravno da moze ali ne mora i ne treba to da se radi. Slucaju biblioteke, verovatno se ne bi osetila razlika, ali generalno razlika postoji, i to znacajna. O cemu se radi? Ti zelis da postignes ovo:
1. korisnik unese podatak
2. na BeforeUpdate za formu otvoris rekordset za "SELECT <nesto> FROM <tvoja tabela> WHERE <primary key> = <ono sto si uneso>"
3. Ako dobijes za recordset rs.count = 0 onda znaci da to sto si uneo u formu ne psotoji u tabeli
4. ako dobije sda rs.RecordCount <>0 onda znaci da podatak vec postoji u tabeli i onda treb da uradis Cancel = TRUE
Cancel je parametar za sub Form_BeforeUpdate i kad ga postavis na TRUE Access nece dozvoliti da se podatak posalje u tabelu.
5. ne zaboravi da zatvoris rekordset na kraju

Zasto ovo nije dovoljno dobro? Otvaranje rekorseta je skupa operacija, pogotovo na mrezi. AKo je verovatnoca da ce korisnik ukucati duplikat mala, onda nepotrebno proveravas svaki put i maltretiras i Access i mrezu. Sat te briga za Access i mrezu, mozes da kazes. jeste, ali to usporava rad. Uz to, mnogo ljudi zaborave da zatvore rekordset tako da konekcija ostaje otvorena i akd izadjes iz procedure. Pa za sledeci unos opet nova konekcija. U jednom momentu se Access zagusi. Za biblioteku ovo verovatno nije bitno, unos nije masovan i ti si pedantan decko tako da neces ostaviti otvoren rekordset. Medjutim, zamisli 10 kasa u samousluzi koje unos vrse skeniranjem. Tu se lako postizu brzine od 2-3 unosa po sekundi po masini, tako da se moze desiti d au jednom moment imas i 30 unosa u sekundi. E, sad Acces treba da otvori 30 konekciaj u sekundi i da ih zatvori. Tu se aplikacija zaglavi.

Sta da se radi? Da se ne proverava uopte dupliakt. Ako si lepo projektovao bazu, a jesi, onda imas PK na tabeli. PK znaci da tabela nece primiti duplikat, ma kako ga gurao kroz aplikaciju. Korisnik ce dobiti poruku na engleskom ili vec koji je jezik na inzstalaciji bio 'pokusavas d auneses duplikat u tabelu, to ne moze....' Ako poruka na tvom jeziku, posao je gotov, nsita ne moras da radis. na obuci im samo kazes 'ako pokusate da unesete duplikat, dobicete ovakvu poruku....' Ako dobijas poruku na jeziku koji korisnik en razume, ili ti se ne dopada poruka, onda poruku promenis. Kako? Za formu iams Form_Error event, U helpu za verzije Accessa do 2003 imas perfektan primer, koji upravo taj slucaj obradjuje - izmena poruke o duplikatu. Zasto Form_Error ebvent, a ne On Erro u recimo Form_BeforeUpdate. Zato sto pokusaj unosa duplikata u tabelu kroz formu nije run-time error, pa ga errro kod na formi nece ni huvatiti. To je vsie kao neka sistemsak greska, na visem nivou od forme, an nivou baze podataka. E neko je bio pametan dovoljno u timi a Access da nam omoguci hvatanje tih gresaka.

Iam i kombinovana situacija. nekad ti treba da znas gde je 'prva kopija' kad ti s pojavi duplikat na unosu. Sta onda radis? Na form_Error eventu uhvatis ovu gresku. Ako si uhvatio gresku, onda u tom istom form_error odradis pretrazivanje, kako smo gore opisali. ili pretrazivanje radis u nekoj funkciji koju pozoves iz Form_error, pa ti funkcija vrati vise popdataka, ne samo 'ovo je duplikat' nego 'ovaj podatak unesen je dana tog i tog u toliko i toliko sati na masini ...'

Komplikovano? Naravno d ajeste. Nisam uzalud upotrebio rec 'finese programiranaj u Accessu' Imas o ovome u Bazi znanja. Potrazi na forumu teme koje se bave Access greskama, nesto ce se pojaviti vec.



 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.rcub.bg.ac.yu.

Sajt: biske.rs


+39 Profil

icon Re: Biblioteka - baza podataka!03.11.2008. u 15:40 - pre 188 meseci
Pretekao si me u pisanju odgovora, zamalo :)
Već sam rešio ove probleme.

Evo mog odgovora.

Hvala još jednom na pomoći, uspeo sam da odradim ono što mi je trebalo pomoću recordset. To mi je trebalo za dugme "Unesi poziciju" na formi frmKnjiga da proverim da li je već uneta pozicija za primerak koji sam označio na formi. To dobro radi. Stavio sam kod na događaj OnClick. Sličnu sam stvar uradio i sa dugmetom "Unesi oštećenje".
Uneo sam određena ograničenja tako da se ne može desiti da na primer radnik hoće da iznajmi knjigu i unese podatke "radnik koji je izdao" i "čitalac" a da ne unese knjigu. Ili na primer ukoliko čitalac dođe da sa zahtevom da iznajmi knjigu dana 27.10.2008. knjigu ne možemo uneti u slogu na kome je datum na primer 26.10.2008. Ovakva situacija se može desiti na primer ukoliko je čitalac Nikola Nikolić poslednji iznajmio knjigu dana 26.10.2008. a dan nakon toga je prvi, ujuto, došao da iznajmi knjigu. Pošto sam stavio da se pri otvaranju ove forme automatski pozicioniramo na poslednji slog (docmd.gotorecord,,acLast na događaj forme OnOpen) i da nema ovog ograničenja bibliotekar bi mogao slučajno, ne gledajući polje "datumizdavanja" da izda čitaocu knjigu na taj datum što je pogrešno. Tu su još neka ograničenja koje sam stavljao na dugmićima za navigaciju, ali evo pogledajte bazu u prilogu..

Pojavila su mi se dva problema koja ne mogu da rešim. Evo o čemu se radi:

1. Potrebno je da ograničim čitaoca koji je uzeo tri knjige i hoće da iznajmi još knjiga, da ne može više da pozajmljuje knjige dok ne vrati tri knjige koje je uzeo. Kada bibliotekar na formi frmIznajmljivanjeKnjige klikne na "Pretraga izdavanja..." i u prozoru koji se pojavi izabere čitaoca i klikne na dugme "Prikaži" potrebno je ne da se unese čitalac već da se prikaže poruka da je on iznajmio već tri knjige. Ovde mi je potrebno da upotrebim Recordset čiji je parametar upit "qryBrojIznajmljivanjaCitaoca" da bi video koliko nevraćenih knjiga čitalac ima. Da Recordset kupi podatke sa forme to ne bi bio problem, to znam da uradim, već imam ovakav primer u aplikaciji. Međutim ne mogu da dobijem informaciju o broju nevraćenih knjiga za određenog čitaoca sa forme frmIznajmljivanjeKnjige zato što treba da spojim tabele IzdavanjeKnjige i IznajmljeneKnjige. Može li neko da mi napiše primer kako da Recordset bude iz upita? Na nekom primeru, pa ću ja primeniti na moju situaciju.
2. Još jedan problem koji mi se javlja na formi frmNapisao. Naime, probam da unesem autora i ukoliko ga nema na listi hoću da kliknem na dugme "Novi autor" javlja mi grešku. Ukoliko sam počeo unos nekog imena koje nije u listi javlja mi grešku da vrednost koju unosim nije u listi. Ukoliko izbrišem vrednost i ponovo probam da kliknem na dugme "Novi autor" ponovo mi javlja grešku, ovoga puta da polje ne može da sadrži Null vrednost (pošto je ovo primarni ključ). Ima li načina da se prevari Access i da odem na formu gde unesem novog autora koga nema u listi i onda se vratim i naravno unesem ga u kombo boxu na formi frmNapisao?


Probaću naravno i sam ukoliko budem naleteo na neki trag kako se ovo radi ali ukoliko neko već zna neka pomogne..
Pozz


[Ovu poruku je menjao biske86 dana 04.11.2008. u 10:33 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Biblioteka - baza podataka!03.11.2008. u 18:21 - pre 188 meseci
Ti bas resio da dobijes 10+
Neka, i treba.

Za prvo pitanje
Citat:
1. Potrebno je da ograničim čitaoca koji je uzeo tri knjige i hoće da iznajmi još knjiga, da ne može više da pozajmljuje knjige dok ne vrati tri knjige koje je uzeo. Kada bibliotekar na formi frmIznajmljivanjeKnjige klikne na "Pretraga izdavanja..." i u prozoru koji se pojavi izabere čitaoca i klikne na dugme "Prikaži" potrebno je ne da se unese čitalac već da se prikaže poruka da je on iznajmio već tri knjige. Ovde mi je potrebno da upotrebim Recordset čiji je parametar upit "qryBrojIznajmljivanjaCitaoca" da bi video koliko nevraćenih knjiga čitalac ima. Da Recordset kupi podatke sa forme to ne bi bio problem, to znam da uradim, već imam ovakav primer u aplikaciji. Međutim ne mogu da dobijem informaciju o broju nevraćenih knjiga za određenog čitaoca sa forme frmIznajmljivanjeKnjige zato što treba da spojim tabele IzdavanjeKnjige i IznajmljeneKnjige. Može li neko da mi napiše primer kako da Recordset bude iz upita? Na nekom primeru, pa ću ja primeniti na moju situaciju.

Ti hoces da sprecis da bilo ko iu jednom momentu drzi vise od tri knjige. Zahtev nije fer ali je SQL problem interesantan, pa evo:
Od tvog kverija qryBrojIznajmljivanjaCitaoca napravio sam ovo, recimo da ga zovemo qryBrojNevracenihKnjiga
Code:

SELECT i.rednibrojcitaoca, Count(i.SifraIzdavanja) AS CountOfSifraIzdavanja
FROM IzdavanjeKnjige AS i 
INNER JOIN IznajmljeneKnjige AS iz 
ON i.SifraIzdavanja = iz.SifraIzdavanja
WHERE (((iz.datumvracanja) Is Null))
GROUP BY i.rednibrojcitaoca;


Ne beforeUpdate na formi za izdavanje knjiga treba staviti

IF nz(dlookup('CountOfSifraIzdavanja','qryBrojNevracenihKnjiga','rednibrojcitaoca = " & cstr(me.rednibrojcitaoca)),0) > 3 then
cancel = true
msgbox "Ovaj citalac vec ima tri knjige koje nije vratio! Ne moze se izdati vise od 3 knjige!"
END IF

Ovo je pocetnicko i amatersko resenje. Zasto? Zato sto je ogranicenje za broj knjiga kodirano u programu. Sta ce biti ako dodje novi direktor i kaze 'Novo ogranicenje je 5 knjiga'. Da ne bi menjao kod kad god se promeni neko poslovno pravilo, mozes da imas jednu tabelu gde cuvas recimo MaxBrojUzetihKnjiga i da citas odatle (ponovo imas Dlookup....). recimo, nazoves tabelu tblLocalDefaults i tamo imas kolone "ImeBiblioteke","MaxBrojUzetihKnjiga ","MaxDuzinaZadrzavanjaKnjigeKodCitaoca" i slicne stvari. Tako rade profesionalci.

Jos nesto, kveri qryBrojIznajmljivanjaCitaoca ima parametar koji se uzima sa forme. Zbog toga je kveri potpuno beskorisan za bilo sta drugo osim da sluzi toj formi. Paremetre na kveriju izbegavaj, sve se to isto moze postici na bezbroj drugih nacina. Ovako upotrebljeni parametri su amaterska stvar, ti si iznasd tog nivoa.

Ono drugo, bilo je na forumu mnogo puta, a verovatno ekipa Getsbi/Trtko/domaci_a_nas/ZXZ ima gotov kod koji to odradjuje. ja to nikad ne koristim, pa me mrzi da sad iz glave pisem nesto da te zbunim. Msilim da postoji NotInlist even za combo box, pa odatle verovatno otvaras pop-up formicu gde dodas novi podatak u parent tabelu itd, itd. Opasna praksa, jer se lako gresi u brzini. sta covek radic - procesira novu knjigu, ili unosi novog autora u registar autora. Ivo ANdric ce ocas posla posatti Ivica Andric i naravno taj Ivica ce napisati Na Drini cupriju.....


 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.com
Via: [es] mailing liste

Sajt: biske.rs


+39 Profil

icon Re: Biblioteka - baza podataka!04.11.2008. u 00:26 - pre 188 meseci
Provalio sam nekako ovo sa brojem iznajmljivanja i to preko DAO Recordset. Postovacu sutra ujutu resenje, posto sad pisem sa telefona.
Sto se tice ovog problema sa unosom autora, u nekom prethodnih postova mi je neko predlozio da probam sa onim kodom &#39;nije u listi&#39; koji dodaje vrednost ukoliko nije u listi, ali kao sto i sam kazes (a i profesor mi je to rekao) da se mogu desiti nezeljene stvari da je na primer Iva Andric napisao Na Drini cuprija. Ima li neko ideju kako da ovo resim?
 
Odgovor na temu

Trtko
Koprivnica

Član broj: 69494
Poruke: 695
*.bilokalnik.hr.



+8 Profil

icon Re: Biblioteka - baza podataka!04.11.2008. u 07:21 - pre 188 meseci
1. Baza ti raste, pa sam stavio na on cloce da naprvi compact
2. On Not in List na eventu komboboksa postavio kod koji ti javlja poruku da ne postoji autor,
pogledaj , a možeš i tu staviti da ti otvori formu za unos novog autora.
3. Maknuo sam ti iz Control source sifruautora, jel je direktno vezan za tablicu a ona ne dozvoljava da je NULL unos, zato ti je i javljalo onu drugu gresku


eto toliko

Pozdrav
Prikačeni fajlovi
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Biblioteka - baza podataka!04.11.2008. u 13:37 - pre 188 meseci
Biske, pazi da te sad sve ovo o programiranju ne zbuni debelo. Nema sanse da kroz jedan rad naucis kako se razvijaju apliakcije u Accessu. namerno ne koristim rec 'programiranje' nego 'razvoj aplikacija'. Ovo sto ti se sad desava jke isto kao ucenje matematike po zdacima. Kao da ti ti niko ne predaje osnove nekakve matematicke teorije, nego te bombarduju zadacima i ucis da resavas jedan po jedan. To ti se sada desava. Ides od problema do problema i mi ti kao pomognemo da resis pojedinacne probleme. Medjutim, to te nece dovesti do 'znanja'.

Ako mislis da se bavis Accesom, pronadji kako znas i umes knjigu 'Essential Access 95', autor Alen Browne i Alison Balter. Ako ne to, onda bilo koja knjiga od Alison Balter. Alen je bolji majstor, ali je napisao jednu jedinu knjigu koju je nazalost tesko naci, ali koaj tuce sve ostale knjige napisane o Accesu. Alen Browne ima odlican web sajt koji je 100% posvecen Accesu. Alison je napisala po knjigu za svaku verziju Accesa, pocev od 97 pa naovamo. Sve su slicne, jer su verzije Accesa bile slicne. Napisala je i jednu o verziji 2007. Ostali autori vredni paznje su Ken Getz, Paul Litwin, Greg Reddick, Stan Lezsinski, Roger Jennings, Scot Barker. Autor koga treba izbegavati je Carry Prague (nazalost jedini koji je preveden na srpski, jer se setio da knjigu nazove Access Bible). U knjizi Access Bible nema nista pogresno ali je starsno nekompletna, nema nista osim 'bare minimum'. Moze da se iskoristi u nuzdi, ali treba teziti necem boljem.

 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.rcub.bg.ac.yu.

Sajt: biske.rs


+39 Profil

icon Re: Biblioteka - baza podataka!05.11.2008. u 11:07 - pre 188 meseci
Citat:
Zidar
Ovo je pocetnicko i amatersko resenje. Zasto? Zato sto je ogranicenje za broj knjiga kodirano u programu. Sta ce biti ako dodje novi direktor i kaze 'Novo ogranicenje je 5 knjiga'. Da ne bi menjao kod kad god se promeni neko poslovno pravilo, mozes da imas jednu tabelu gde cuvas recimo MaxBrojUzetihKnjiga i da citas odatle (ponovo imas Dlookup....). recimo, nazoves tabelu tblLocalDefaults i tamo imas kolone "ImeBiblioteke","MaxBrojUzetihKnjiga ","MaxDuzinaZadrzavanjaKnjigeKodCitaoca" i slicne stvari. Tako rade profesionalci.

Već imam tu tabelu i ona se zove "Biblioteka". Ima atribute "Naziv", "BrojTelefona", "Adresa" i "MaksimalniBrojUzetihKnjiga".
Citat:
Zidar
Jos nesto, kveri qryBrojIznajmljivanjaCitaoca ima parametar koji se uzima sa forme. Zbog toga je kveri potpuno beskorisan za bilo sta drugo osim da sluzi toj formi. Paremetre na kveriju izbegavaj, sve se to isto moze postici na bezbroj drugih nacina. Ovako upotrebljeni parametri su amaterska stvar, ti si iznasd tog nivoa.

Uzeo sam parametar sa forme da bi bi za tačno određenog čitaoca (čiji redni broj kupim sa forme) prebrojao koliko knjiga nije vratio. Nisam razmišljao za druge načine, ovako mi je najlakše neka ostane kako jeste, pošto radi, a sad nemam vremena da tražim alternativne načine.
Citat:
Trtko
3. Maknuo sam ti iz Control source sifruautora, jel je direktno vezan za tablicu a ona ne dozvoljava da je NULL unos, zato ti je i javljalo onu drugu gresku

Nije mi jasno nešto ovde. Ukoliko sklonimo iz Control Source sifraautora gde će zapisivati šifru autora. Kako kažemo bazi da treba da zapiše u neko polje!?
Citat:
Zidar
Biske, pazi da te sad sve ovo o programiranju ne zbuni debelo. Nema sanse da kroz jedan rad naucis kako se razvijaju apliakcije u Accessu. namerno ne koristim rec 'programiranje' nego 'razvoj aplikacija'. Ovo sto ti se sad desava jke isto kao ucenje matematike po zdacima. Kao da ti ti niko ne predaje osnove nekakve matematicke teorije, nego te bombarduju zadacima i ucis da resavas jedan po jedan. To ti se sada desava. Ides od problema do problema i mi ti kao pomognemo da resis pojedinacne probleme. Medjutim, to te nece dovesti do 'znanja'.

Naravno da neću da uzletim visoko, zato što sam ja po prirodi perfekcionista i nikad u potpunosti zadovoljan svojim radom zato što mislim da uvek može bolje. Ova aplikacija je daleko od dobre ali nije loša za završni rad.
Citat:
Ovo sto ti se sad desava jke isto kao ucenje matematike po zdacima. Kao da ti ti niko ne predaje osnove nekakve matematicke teorije, nego te bombarduju zadacima i ucis da resavas jedan po jedan. To ti se sada desava. Ides od problema do problema i mi ti kao pomognemo da resis pojedinacne probleme. Medjutim, to te nece dovesti do 'znanja'.

Ako mislis da se bavis Accesom, pronadji kako znas i umes knjigu 'Essential Access 95', autor Alen Browne i Alison Balter. Ako ne to, onda bilo koja knjiga od Alison Balter. Alen je bolji majstor, ali je napisao jednu jedinu knjigu koju je nazalost tesko naci, ali koaj tuce sve ostale knjige napisane o Accesu. Alen Browne ima odlican web sajt koji je 100% posvecen Accesu. Alison je napisala po knjigu za svaku verziju Accesa, pocev od 97 pa naovamo. Sve su slicne, jer su verzije Accesa bile slicne. Napisala je i jednu o verziji 2007. Ostali autori vredni paznje su Ken Getz, Paul Litwin, Greg Reddick, Stan Lezsinski, Roger Jennings, Scot Barker. Autor koga treba izbegavati je Carry Prague (nazalost jedini koji je preveden na srpski, jer se setio da knjigu nazove Access Bible). U knjizi Access Bible nema nista pogresno ali je starsno nekompletna, nema nista osim 'bare minimum'. Moze da se iskoristi u nuzdi, ali treba teziti necem boljem.

Nisam baš teorijski nepotkovan, zato što skupljanja znanja sa foruma tj. vaša iskustva a koristim maksimalno i našeg prijatelja Google. Pored toga imam knjigu od Alison Balter "Microsoft Office Access 2003 bez tajni" u izdanju Kompjuter biblioteke iz Čačka. Ima 1418 stranica i piše na njoj da je za srednji i napredni kurs. Dosta sam je odradio ali nisam baš zalazio u napredne tehnike kao što su tehnologija ActiveX, optimimizovanje aplikacije, višekorisničke aplikacije, eksploatacija Windows API-ja, pravljenje biblioteka, napredne tehnike bezbednosti itd..
To mi ne treba trenutno a i nemam vremena.
Citat:
Zidar
Ako mislis da se bavis Accesom..

Ne znam tačno čime ću se baviti pošto još studiram, a i generalno više mi se sviđa C++ nego Access. Imam osećaj da su mi za neke stvari u Accessu vezane ruke (Ili je to do mog nedovoljnog poznavanja VBA) mada mi u poslednje vreme bolje ide pošto sam pohvatao neke stvari. Došao sam do nekog nivoa, gde imam osećaj da mi tek sad neke stvari postaju jasnije i gde sa malo truda i isčitavanja knjige od Alison mogu doći do pravog rezultata. Mada ne znam da li vredi ulagati trud za neko napredno znanje Access-a pošto se profesionalne/veće aplikacije ne rade u Access-u. U ovom semestru imam predmet Baze podataka 2 gde učimo Oracle 10g istaliranog na RHEL4 tako da jedva čekam da završim ovo i da pređem na Oracle.


 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Biblioteka - baza podataka!05.11.2008. u 16:07 - pre 188 meseci
Situacija je bolja nego sto sam mislio
Uzivaj i uci sta ti se dopada, radi i ne sekiraj se.

Sve najbolje na ispitu i ubuduce u zivotu i radu
 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
213.244.209.*

Sajt: biske.rs


+39 Profil

icon Re: Biblioteka - baza podataka!16.11.2008. u 14:17 - pre 187 meseci
Probao sam da ograničim bibliotekara da mora da unese ime i prezime u polje Bibliotekar primio na subfrmIznajmljeneKnjige. Najpre kada izdam nekom čitaocu knjigu i hoću da ga onda razdužim tj. kada on dođe da vrati knjigu samo odem do sloga na podformi i kliknem na dugme "Vrati knjigu" i automatski se unosi tekući datum i prebacuje se kontrola na polje "radnikprimio". Sve je to u redu ali kada pritisnem strelicu na gore ili dole onda aplikacija dozvoljava da se ode na prethodno polje ili na slog ispod. Probao sam da unesem na događaj onexit polja "radnikprimio" kod da bi izdao poruku i da me vrati na polje tako da ne mogu da izdađem odavde dok ne unesem ovo polje. Evo koda:

Code:

Private Sub RadnikPrimio_Exit(Cancel As Integer)
    If IsNull(Me.radnikprimio.Value) Then
    MsgBox "niste uneli radnika koji je razdužio knjigu"
    DoCmd.GoToControl Forms!frmIznajmljivanjeknjige!subfrmIznajmljeneKnjige.Name
    DoCmd.GoToControl Forms!frmIznajmljivanjeknjige!subfrmIznajmljeneKnjige!radnikprimio.Name
    End If
End Sub


Očigledno nešto grešim pa ako neko već ima slično iskustvo neka pomogne. Pretpostavljam da postoji neka caka i da nije mnogo teško ali trenutno ne mogu ovo sam da rešim.
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Biblioteka - baza podataka!16.11.2008. u 15:12 - pre 187 meseci
Mislim da će ti ovo pomoći. Probaj na događaj forme "BeforeUpdate" da uneseš kod sličan ovom:

Private Sub Form_BeforeUpdate(Cancel As Integer)
If IsNull([TvojePolje]) Then
zxzBox "Morate uneti radnika koji je razdužio knjigu", vbCritical, "Pažnja"
Cancel = True
Me![TvojePolje].SetFocus
Exit Sub
End If
End Sub
 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
213.244.209.*

Sajt: biske.rs


+39 Profil

icon Re: Biblioteka - baza podataka!16.11.2008. u 18:18 - pre 187 meseci
Citat:
Getsbi: Mislim da će ti ovo pomoći. Probaj na događaj forme "BeforeUpdate" da uneseš kod sličan ovom:

Private Sub Form_BeforeUpdate(Cancel As Integer)
If IsNull([TvojePolje]) Then
zxzBox "Morate uneti radnika koji je razdužio knjigu", vbCritical, "Pažnja"
Cancel = True
Me![TvojePolje].SetFocus
Exit Sub
End If
End Sub


Ovaj kod radi kada probam da unesem neko ime a onda ga izbrišem. Ukoliko ne unesem ništa onda jednostavno prelazi na drugi slog i ništa se ne dešava kao da nema koda. To sam rešio tako što sam dodao u If uslovu još jedan ulov (Me.radnikprimio.Value = ""), tako da sada kod ima izgled:

Code:

Private Sub RadnikPrimio_BeforeUpdate(Cancel As Integer)
    If IsNull(Me.radnikprimio.Value) Or Me.radnikprimio.Value = "" Then
    MsgBox "Morate uneti radnika koji je razdužio knjigu", vbCritical, "Pažnja"
    Cancel = True
    Me!radnikprimio.SetFocus
Exit Sub
End If
End Sub


Međutim ovde mi javlja sledeću grešku:

Run-time error '2108'

You must save the field before you execute the GoToControl action, the GoToControl method or the SetFocus method.
O čemu se radi?
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Biblioteka - baza podataka!16.11.2008. u 20:21 - pre 187 meseci
Blokiraj SetFocus, pa probaj ponovo.
 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
213.244.209.*

Sajt: biske.rs


+39 Profil

icon Re: Biblioteka - baza podataka!16.11.2008. u 20:29 - pre 187 meseci
Ukoliko izbrišem naredbu setfocus onda jednostavno ukoliko hoću da pređem na sledeći slog to mi se i dozvoljava, a što ne bi trebalo.
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Biblioteka - baza podataka!16.11.2008. u 21:14 - pre 187 meseci
SetFocus metoda radi korektno kad je uključena samo DAO standard. Za ADO se ne saćam da li pravi problem. U svakom slučaju ako ne koristiš eksplicitno ADO standard probaj da ga isključiš u VBA referencama i odblokiraš red:
Me!radnikprimio.SetFocus
Možda će da prpradi.
 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
213.244.209.*

Sajt: biske.rs


+39 Profil

icon Re: Biblioteka - baza podataka!16.11.2008. u 21:39 - pre 187 meseci
Nisam baš razumeo kako da ga isključim u referencama. Možeš li nešto konkretnije?
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Biblioteka - baza podataka!17.11.2008. u 03:59 - pre 187 meseci
VBA editor, Tolls, References.
Probaj taj zadnji da isključiš, snimiš i kompajliraš svoj projekat.
Prikačeni fajlovi
 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
213.244.209.*

Sajt: biske.rs


+39 Profil

icon Re: Biblioteka - baza podataka!17.11.2008. u 13:07 - pre 187 meseci
Probao sam ali ne ide. Prelazi na sledeći slog i ne prijavljuje grešku. Evo i baze ukoliko zatreba jer sam pravio neke izmene.
Prikačeni fajlovi
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Biblioteka - baza podataka!17.11.2008. u 15:12 - pre 187 meseci
A da li je bolja varijanta da napravš formu za logovanje, zapamtiš prijavljenog bibliotekara u globalnu varijablu koja je dostupna za vreme cele sesije (od prijavljivanja do izlaska iz programa) i onda u proceduri za vraćanje knjige upišeš automatski tog bibliotekara. Tako izbegavaš da bibliotekari jedan drugom podmeću klipove.
 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
213.244.208.*

Sajt: biske.rs


+39 Profil

icon Re: Biblioteka - baza podataka!17.11.2008. u 15:31 - pre 187 meseci
Razmišljao sam o tome ranije ali se nisam usudio da krenem da pravim da mi se stvari dodatno ne iskomplikuju.
Kad smo već kod toga imaš li već u nekoj svojoj aplikaciji primer koji bih ja prepravio i ubacio u svoju bazu? Baš sam u frci sa vremenom, verovatno za tri ili najkasnije četiri dana branim završni rad pa nemam vremena za veće intervencije. Trenutno kucam tekstualni deo završnog rada i mislio sam samo još ovo sa unosom radnika da prepravim usput. Ovo što si predložio je super ideja. Ukoliko neko od korisnika ima ovu formu odrađenu neka pošalje rešenje.
 
Odgovor na temu

[es] :: Access :: Biblioteka - baza podataka!

Strane: < .. 1 2 3 4 5

[ Pregleda: 46476 | Odgovora: 81 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.