Evo nov, prepravljen i testiran kod koji mora da ti radi.
Code:
Public Function AllowSave(WhForm As Form) As Boolean
Dim Ctl As Control
AllowSave = False
For Each Ctl In WhForm.Controls
If Left(Ctl.Tag, 3) <> "Req" Then GoTo NextCtl
If Len(Nz(Ctl, "")) = 0 Then
Ctl.SetFocus
MsgBox Mid(Ctl.Tag, 4) & " is required !", vbOKOnly, "Notice"
Exit Function
End If
NextCtl: Next Ctl
AllowSave = True
End Function
Ovo ubacujes u MODUL, znači ideš u object navigator, tamo gde su tables, forms, queries, reports, modules i napraviš nov modul. Ovo sigurno znaš, al' kad neko kaže da nešto ne radi ja se maximalno osiguram da ima najpreciznije i najopširnije uputstvo pa često i preteram iz dobre namere
Ovaj kod se razlikuje od prošlog jer nemaju sve kontrole u formi svojstvo Value, kao što su command button, imagebox i to je pravilo grešku. Sad se to ne ispituje u istom redu kao svojstvo TAG. Još jedna izmena je ta što sad u svojstvo tag ne upisuješ O, nego nešto tipa ReqNaziv Kupca. Ovo sam uveo jer su meni nazivi polja i kontrola skraćenice, kako bih pisao što kraći kod, a pošto će korisnik videti msgbox valjalo bi da vidi pun naziv polja.
KojaForma (sada WhForm) predstavlja argument funkcije, odnosno formu koju treba ispitati. Da ne bi u kodu za svaku formu dodavao ovaj istovetni kod, ti sa forme samo pozivaš funkciju na sledeći način :
Code:
Private Sub Command1_Click()
If AllowSave(Me) = False Then Exit Sub
Me.Dirty = False
End Sub
Pošto imaš problema sa codom, možeš dodati na formu dugme nazvano Command1 i samo u formi prekopiraš ovaj Command1_Click() i rešio si sve probleme
