[ gagacar @ 26.11.2010. 10:27 ] @
Pozdrav!

Imam neku formu u accessu u kojoj imam polja: brsati (kao text box) i status (kao combo box). Combo box ima vrednosti: "Pocetak,"U toku","Zavrsen". Treba mi macro koji ce da onemoguci odabir vrednosti "Zavrseno", ako je brsati prazno, A dok se sve ostale vrednosti mogu birati nesmetano bez obzira na brsati.

Nadam se da sam dobro objasnio...

Hvala unapred!!!
[ Zoran.Eremija @ 26.11.2010. 11:20 ] @
Okacite primer da bi bilo jasnije...
[ SLOJ.1973 @ 26.11.2010. 11:45 ] @
Nesto ovako
Code:
Private Sub BRSATI_AfterUpdate()
If IsNull(Me.BRSATI) Then

Me.Combo2.RowSourceType = "VALUE LIST"
Me.Combo2.RowSource = "POCETAK;UTOKU"
Else
Me.Combo2.RowSource = "POCETAK;UTOKU;ZAVRSENO"
End If
End Sub

Pozdrav.
[ Zidar @ 26.11.2010. 14:57 ] @
Problem je slozeniji nego sto izgleda. Imas dakle dve varijable (Brisati, Status). Brisati ima dve vrednosti (NULL, NOT NULL) a status ima tri vrednosti ('Zapoceto', 'U toku', 'Zavrseno').

Pitanje je bilo kako "da onemoguci odabir vrednosti "Zavrseno", ako je brsati prazno, A dok se sve ostale vrednosti mogu birati nesmetano bez obzira na brsati". To je najbolje uraditi na nivou tabele, a posle ako hoces i u kodu tako da se zabranjena akcija ne nudi. Tou kodu je malo komplikovano, videces i sam. Ja zato to resim na nivou tabele, i ako treba modifikujem poruku o gresci. Ili ne radim nista, vazno je da ne udje nedozvoljen podatak u tabelu.

Zadati uslov se moze iskazati kao

ne sme da bude ovo: (Brisati IS NULL) AND (Status = "Zavrseno")

sto se moze prevesti kao:
Code:
Not ([Brisati] Is Null And [Status]="Zavrseno")

Uokvireni izraz treba upisati u 'table validation rule'. Otvoris tabelu u design modu, otvoris properties i upises uslov. Zapazi da su nazivi kolona u uglastim zagradama. Ovaj uslov na nivou tabele (table validation rule) ne dozvoljava da se proglasi nesto da je zavrseno ako je Brisati prazno (NULL). Isto tako, ako je nesto vec oznaceno kao Zavrseno (Brisati nije prazno) onda se ne moze ni kolona brisati postaviti NULL.

Zakacio sam primer sa resenjem postavljenog problema. medjutim, to u principu nije dovoljno, ima i drugih uslova:

- izgleda da se ovde radi o pracenju statusa necega, uz dodatni uslov da ako je to nesto oznaceno za brisanje, samo tada moze dobiti Status = 'Zavrsen'. Moze se psotaviti jos uslova, na primer, 'statusi moraju ici po redu'. Na primer, ne moze nesto da bude ' zavrseno' ili bude 'u toku' a da nije 'zapoceto'. Mozda moze da bude 'zavrseno' odmah posto je bilo 'zapoceto', ne mora da bude 'u toku', a mozda i mora, to ne znam u ovom momentu. Obicno se zeli videti i istorija, kad je objekat posmatranja usao u koji status.

Ima cela jedna 'nova' oblast u projektovanju baza podataka koja se bavi pracenjem promena stanja sistema. U ovom slucaju stanja su ('Zapoceto', 'U toku', 'Zavrseno') i samo odredjene promene su dozvoljena. Ako ima interesovanja, mozemo o ovome da pricamo.