[ ib.kroki @ 19.07.2008. 21:34 ] @
| Poceo sam da ucim access, nasao i procitao nekoliko korisnih knjiga i naisao na problem za koji ne umem resenje u pomenutim knjigama da pronadjem.
Napravio sam bazu db_magacin sa sledecim tabelama:
sifre mogucih roba u magacinu roba,
primljena roba u magacin ulaz_robe i
isporucena roba iz magacina isporuke.
Imam upite:
kupljeno - prikazuje svu kupljenu robu,
isporuceno - prikazuje svu isporucenu robu i
stanje - prikazuje trenutnu raspolozivu kolicinu robe u magacinu.
Za sve pomenute tabele sam napravio forme.
Molim da mi neko pomogne, da postavi uslov u formi isporuke kojim bi se onemogucilo upisivanje kolicine robe vece od raspolozive na stanju i kojim bi se onemogucilo isporucivanje robe koja nije na stanju.
Unapred hvala!
Igor. |
[ Scelle @ 19.07.2008. 22:15 ] @
Zdravo, pohvalno je sto zelis da naucis Access i baze podataka, cestitam.
Ali prije svega, moram da te posavjetujem da procitas te knjige ponovo, ili da procitas neke druge knjige. U najgorem slucaju, procitaj jednu od Top tema na forumu.
To kazem zato sto je staro pravilo da se nazivi tabela, upita, formi, polja u tabelama, formama, upitima... nikada ne pisu odovjeno. Tako ako imas polje [sifra robe] nazvaces ga [sifra_robe]. Olaksace ti rad, kasnije u kodu. To je samo kratko, posto nemam vremena.
Sad, otvori formu "isporuke" u design modu, klikni desnim tast. misa na polje "kolicina" i izaberi "Properties".
U prozoru Properties otvori karticu Events. Imas na "On Exit" malo koda koji ce ti pomoci pri resavanju problema.
Pozdrav i samo navali! Ako treba jos nesto samo pisi... :)
[ ib.kroki @ 20.07.2008. 13:45 ] @
Hvala na brzom odgovoru, savetima, rešenom problemu ...
Nadam se da će mi sve ovo dosta pomoći, a biću slobodan potražiti pomoć i nekom drugom prilikom.
Pozdrav!
[ Trtko @ 21.07.2008. 09:58 ] @
Svi se učimo dok smo živi
i ne koristi Čćš za nazive polja jel i oni znaju stvarat problem
a da provjeriš da ti nije unio veču koičinu od postoječe , ovako ...
kol=dlookup("kolicina","stanje","sif_robe='" & sifrarobesaforme & "'")
if kolicinanaformi > kol then
msgbox "Na zalihi imate samo " & kol & " komada"
kolicinanaformi=0
kolicinanaformi.setfocus
exit sub
endif
ako ti je sifra_robe numerik onda makneš apostrofe iz dlookupa
kol=dlookup("kolicina","stanje","sif_robe=" & sifrarobesaforme )
[ domaci_a_nas @ 21.07.2008. 11:22 ] @
Zar nije bolje Null umesto 0 ? Ili bar kol? Bilo šta, samo ne nulaaaa
[ Trtko @ 21.07.2008. 12:22 ] @
E jesi sitničav Nikola
pa može i Null i prazno , što god si stavi
Trebo si juče biti s menom na ribolovu pa nebi danas sitničario
Ispekli prase , popili dvije gajbe pive
a od ribe ni R
pozdrav
[ ib.kroki @ 21.07.2008. 14:31 ] @
Hvala vam svima na savetima, ali nisam došao do rešenja.
Scelle mi je postavio fajl sa njegovim rešenjem. U tom fajlu proilikom upisa veće količine od raspoložive dobije se samo upozorenje a količina bude upisana u tabelu.
Trtko, ti si mi napisao kod koji ja ne umem da primenim. Zamolio bih te, ako nije problem, da kod upišeš u fajl koji sam postavio na prvom postu i postaviš ga na ovu temu. Bilo bi dobro da ukratko opišeš gde i šta si uradio kako bih ja kasnije mogao da preuzmem bazu i naučim se na tvom primeru.
Nadam se da će još nekom ovo koristiti.
Unapred hvala svima!
P.S.
Do sada sam ovde naučio nekoliko korisnih stvari (ne koristiti yu latinicu i razmake u nazivima).
[ Scelle @ 21.07.2008. 21:43 ] @
Ja se izvinjavam, malo sam pozurio i pretpostavio sam da si vec naucio VBA. Zato sam samo poceo da resavam problem, s nadom da ces ti nastaviti.
Sada sam postavio kompletan kod, koji provjerava unijetu kolicinu i stanje na zalihama i u slucaju potrebe prikazuje poruku o gresci.
Detaljnija objasnjenja su u samom kodu, u vidu komentara.
[ ib.kroki @ 21.07.2008. 22:13 ] @
Hvala!
Ovo je ono što mi je trebalo.
Iskreno, gledam kod i nisam još shavtio ali se nadam da ću ovo moći primenjivati u tabelama gde mi zatreba.
Naučio sam samo osnove u Acessu. Uspem da napravim tabele i da postavim veze (kakve takve) između njih. Osnovne upite znam da uradim. VBA je za mene špansko selo.
Hvala svima koji su učestvovali, biću slobodan postaviti novo pitanje.
[ kamicak @ 04.01.2009. 14:58 ] @
Kako se može postaviti default value da bude 1, na kolicunu u Isporuci , a da se samo sa Enterom (ako nam zaista treba samo 1) pokrene provera stanja, provera stanja radi samo ako se ukuca neki broj u Kolicinu isporuke?
Hvala unapred
Pozdrav
[ Getsbi @ 04.01.2009. 15:27 ] @
Koliko ja vidim Scelle-tov primer to upravo i radi, jer je provera postavljena na događaj On Exit polja kolicina. Jedino ti treba da u Properties polja kolicina za Default Value postaviš 1. Probaj sa Coca-Colom. Nje na zalihama nema. Za pokušaj da po defaultu u polju stoji 1, dobićeš povratnu poruku aplikacije :" Uneli ste kolicinu koja veća od one na zalihama".
[ ib.kroki @ 04.01.2009. 18:45 ] @
Hvala Getsbi!
Čovek se uči dok je živ ...
Uradio sam kako si rekao, postavlja 1 za količinu, a ako robe nema na stanju prikazuje poruku (odradi upit koji je uradio Scelle.
[ kamicak @ 04.01.2009. 22:51 ] @
Na onExit postavljen događaj provera stanja ,meni se zaglupi program tako što ne mogu da izađem iz polja Kolicina i vratim se na Artikal, ni mišem ni preko tastature, moram da zatvorim program i ponovo ga pokrenem, a to se događa kada posle javljanja greške da nema dovoljno artikla na stanju ja poželim da odustanem od unosa tog Artikla, pritisnem Esc, on mi naravno poništi unos artikla, ali mi kursor ostane na polju Kolicina i tu je kraj , nema mrdanja, mogu da izađem iz SubForme na glavnu Formu ali kada hoću da se vratim na subformu na novi unos artikla on mi da Fokus samo na polje Kolicina, i tako u krug.
Program je klasična Kasa gde mi posle unosa Artikla AfterUpdate izbacuje Cenu, to nema kod Scelleta pa možda kod njega nema zaglupljivanja,
mislim da je bolje rešenje staviti proveru stanja na BeforeUpdate Kolicine, ali onda je problem kao što sam i pitao kako da se izvrši BeforeUpdate ako je u polje stavljen default vrednost, bilo koja, i preko nje se želi preleteti sa Enterom.
Kažite me da li negde grešim.
Hvala unapred
Pozdrav
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|