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

Pomoć oko jednog eventa !

[es] :: Access :: Pomoć oko jednog eventa !

[ Pregleda: 2186 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Beky86

Član broj: 182935
Poruke: 23
77.221.0.*



Profil

icon Pomoć oko jednog eventa !28.01.2009. u 16:58 - pre 185 meseci
Pozz svima !

Imam glavnu formu (Racuni) i njenu podformu (Racuni_stavke).

Napravim event koji mi pri otvaranju glavne forme radi disable subforme "Racuni_stavke" (enabled=false), sve dok ne unesem podatke na glavnoj formi.

Znači, OnLoad() glavne forme "Racuni":

Private Sub Form_Load()
[Racuni_stavke].Enabled = False
End Sub


Zatim sam na subformi "Racuni_stavke" stavio OnClick() event koji, kada kliknem na "disejblanu" subformu "Racuni_stavke", treba da ispiše poruku:

Private Sub Form_Click()
If ([Racuni_stavke].Enabled = False) Then
MsgBox "Najprije morate popuniti podatke sa glavne forme . . .", , "Greska"
End If
End Sub

Ovaj drugi event OnClick mi ne radi, nije dobar code.

Piše: "... can't find the field '|' reffered to in your expression" i kad kliknem na debug, markira mi:

--> If ([Racuni_stavke].Enabled = False) Then


Unaprijed hvala !
 
Odgovor na temu

Zidar
Canada

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



+79 Profil

icon Re: Pomoć oko jednog eventa !28.01.2009. u 20:01 - pre 185 meseci
Najbolje je da resis to bez koda. Na glavnoj formi imas podatke iz neke master tabele. Ako je obavezno da u odredjenim kolonama imas podatke, onda u table design stavis Required = YES. Za text polja stavi i Allow zero length string = NO. Ako ti odgovaraju neke default rednosti, postavi default. medjutim, ako zelis da nateras da korisnik unese nesto, onda ne stavis default. Kad korisnik predje sa glavne forme na subformu, onda se desi automatski SAVE na glavnoj formi. Ako postoje polja sa Required = yes a da ih korisnik nije popunio, Access mu nece dozvoliti da predje na subformu.

Nema koda, a funkcionise onako kak si zeleo, verujem...

Ako bas moras da programiras, onda za master formu na BeforeUpdate eventu izvrsis proveru svega sto je uneseno i ako nije sve kako si zatrazio, stavis Cancel = true => rekord se ne moze snimiti => ne moze da se predje na subformu.

Ako bas pises kod, neka bude sto manje. Znam ja da 'programer' asocira na pisanje koda. medjutim, sve se redje koristi rec 'programer'. Sada se koristi 'developer' - onaj koji razvija sistem. A to je malo vise nego programiranje, sa ciljem da se sto manje programira.\, jer se tako manje gresi.

 
Odgovor na temu

Beky86

Član broj: 182935
Poruke: 23
77.221.0.*



Profil

icon Re: Pomoć oko jednog eventa !28.01.2009. u 20:56 - pre 185 meseci
Hvala na brzom odgovoru.
Pošto sam malo eksperimentirao sa VBA codeom, htio sam na drugačiji način definirati odnos forma-subforma.
Upoznat sam sa required, default i allow zero lenght parametrima . . . hvala na savjetu . . . probam to sa Cancel = True metodom ;)


Nego, baš bi volio "odraditi" ovo na način kako sam zamislio, pa ak' možete pomozite . . .

If ([Racuni_stavke].Enabled = False) Then --> ovaj dio puca.

Izgleda da ovako: "[Racuni_stavke].Enabled" ne mogu označiti subformu, preko eventa iz iste subforme.
Probao sam drugačije označiti: "Forms![Racuni_stavke].Enabled" --> također ne radi, možda nekako drugačije ???

Na isti način sam iz glavne forme OnLoad() eventom "disejblao" subformu, a iz subforme OnClick() eventom ne mogu ispitati je li forma "disejblana", koristeći istu komandu: . . . [Racuni_stavke].Enabled . . .


zz..
 
Odgovor na temu

Beky86

Član broj: 182935
Poruke: 23
77.221.0.*



Profil

icon Re: Pomoć oko jednog eventa !28.01.2009. u 21:38 - pre 185 meseci
Riješio sam na drugi način :)


Pošto nisam mogao ispitati ovaj uvijet: If ([Racuni_stavke].Enabled = False), uradio sam slijedeće . . .

* Prilikom loadiranja OnLoad() glavne forme, uradim:

[Racuni_stavke].Enabled = False --> disejblam subformu
[Racuni_stavke]![proizvodID].Enabled = False --> disejblam još dodatno neko polje, recimo proizvodID.

===============================================================

* Na poljima iz glavne forme: "zaposlenikID" i "kupacID" sam stavio event AfterUpdate:

Private Sub kupacID_AfterUpdate()
If (IsNull(zaposlenikID) = False) Then
[Racuni_stavke].Enabled = True
[Racuni_stavke]![proizvodID].Enabled = True
End If
End Sub

Private Sub zaposlenikID_AfterUpdate()
If (IsNull(kupacID) = False) Then
[Racuni_stavke].Enabled = True
[Racuni_stavke]![proizvodID].Enabled = True
End If
End Sub

Ovi eventovi će "enejblati" subformu i "proizvodID", ako kupacID i zaposlenikID nisu Null, odnosno ako su unešeni !

===============================================================

* Na kraju, imam OnClick() event na subformi:

Private Sub Form_Click()
If (Me.proizvodID.Enabled = False) Then
MsgBox "Da bi dodavali stavke na narudžbi, morate unijeti kupca i zaposlenika koji radi !", , "Greska"
End If
End Sub

Dok god mi je proizvodID "disejblan", ako klikao na subformu ispisivat će mi poruku da popunim polja iz glavne forme. Pošto se proizvodID automatski "enejbla" ako popunim zaposlenikID i kupacID, a ujedno se i čitava subforma "enejbla", prestaje tada i upozoravanje na klik miša ;)

===============================================================

Iz ovog primjera sam uočio slijedeću razliku:

If ([Racuni_stavke].Enabled = False) --> greška.
If ([Racuni_stavke]![proizvodID].Enabled = False) --> nema greške.


Pošto sam želio ovom prvom metodom riješiti problem -- ako netko zna zašto radi grešku, bio bi mu zahvalan !!


Pozz ;)

[Ovu poruku je menjao Beky86 dana 28.01.2009. u 23:05 GMT+1]
 
Odgovor na temu

golic
Doboj

Član broj: 91529
Poruke: 82
79.143.170.*



Profil

icon Re: Pomoć oko jednog eventa !28.01.2009. u 22:31 - pre 185 meseci
Ozrenka!!! Daj Zidaru dvije pive i reci bogati muzici malo tise.

Zaposlenika mozes vuci iz Login tabele ( ako je imas) ,a ako bas volis code onda mozes programirati i ne treba ti na svakom polju code.

Najbolje ti je da naucis (tamo gdje skripi) koji se eventi kad dogadjaju- redoslijed:Open,Current, Load, Resize, Activate...
i jos da se ne zaboravi prvo Open, Current,... subforme pa tek onda forme.Ovo ti govorim zato sto sam imao iste muke dok nisam naucio evente ( referenciranje, deklarisanje jos nisam kako treba savladao) i opet se sve vise vracam organizovanju na samom design tabele.
Zidar ispravi me ako grijesim.
 
Odgovor na temu

Catch 22

Član broj: 148083
Poruke: 6176
79.101.84.*



+21 Profil

icon Re: Pomoć oko jednog eventa !28.01.2009. u 22:36 - pre 185 meseci
... Čini mi se da bi kod trebao da izvrši još nešto osim pukog ispisivanje željene poruke u slučaju kako si ti to naveo

Citat:
Private Sub Form_Click()
If ([Racuni_stavke].Enabled = False) Then
MsgBox "Najprije morate popuniti podatke sa glavne forme . . .", , "Greska"
End If
End Sub

Ovaj drugi event OnClick mi ne radi, nije dobar code.

Piše: "... can't find the field '|' reffered to in your expression" i kad kliknem na debug, markira mi:

--> If ([Racuni_stavke].Enabled = False) Then



Probaj da nakon ispisivanja poruke dodas jos neku akciju (Cancel Event, prelazak nazad na neko polje u maticnoj formi, napustanje podprocedure...)

PS
Komentare možeš da dodaješ i u samom kodu tako što ispred dela koji je komentar staviš apostrof:
If ([Racuni_stavke].Enabled = False) 'greška.
If ([Racuni_stavke]![proizvodID].Enabled = False) 'nema greške.


 
Odgovor na temu

Trtko
Koprivnica

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



+8 Profil

icon Re: Pomoć oko jednog eventa !29.01.2009. u 07:27 - pre 185 meseci
E jeste programeri !!

Pa subforma ima FORMU na kojoj su neki objekti
pa bi onda formula glasila ovako ako je

racuni stavke = subforma
grad = txtbox u subformi racuni_stavke

Racuni_stavke.Form.Grad.Enabled = False

i tako bi morao reči za svaki objekt na subformi u koji nešto upisuješ

ali možeš i formu sakriti , pa kad uneu sve podatke onda je pokazati

Racuni_stavke.Form.Visible = False

ako baš želiš programirati

Pozdrav


 
Odgovor na temu

Catch 22

Član broj: 148083
Poruke: 6176
77.46.231.*



+21 Profil

icon Re: Pomoć oko jednog eventa !29.01.2009. u 10:51 - pre 185 meseci
Citat:
Trtko:...
Racuni_stavke.Form.Grad.Enabled = False

i tako bi morao reči za svaki objekt na subformi u koji nešto upisuješ...


Ili da koristi tags, pa onda jednom naredbom manipuliše svim kontrolama koje imaju zajednički definisan tag...
 
Odgovor na temu

[es] :: Access :: Pomoć oko jednog eventa !

[ Pregleda: 2186 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

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