[ mpaja @ 09.01.2016. 18:52 ] @
Pozdrav svim forumašima

Tema je slična sa temom vezanom za rad sa dve subforme a ima jedan interesantan problem.

Na glavnoj fomi postoji polje koje može biti True ili False. Ako je polje True onda se rekordi u podformi (jednoj od podformi!) ne mogu menjati, brisati, dodavati več samo pregledati. Svašta sam pokušavao, uspeo sam da sprečim da se rekordi dodaju i menjaju preko eventa na subformi. Ne uspeva mi da sprečim da se rekord u subformi obriše.
Probao sam ovako ne ide.


If Forms!PlanF!Check27 = True Then

Me.AllowAdditions = False
Me.AllowDeletions = False
Me.AllowEdits = False

Else
Me.AllowAdditions = True
Me.AllowDeletions = True
Me.AllowEdits = True
End If

If Forms!PlanF!Check27 = True Then
MsgBox "Plan je verifikovan!" & Chr(10) & "Nije ga moguce menjati - brisati lica!", vbInformation
Me.Undo

End If

Ako neko ima ideju....
[ Getsbi @ 09.01.2016. 19:27 ] @
Moralo bi da radi. Možda referenciranje nije dobro ili pokušavaš referenciranja sa Me. iz globalnog modula, odakle nije moguće.
Ako postaviš kratak primer, pokušaće neko da odgonetne.
[ mpaja @ 10.01.2016. 07:53 ] @
Nažalast ne mogu da postavim jer je ovo deo velike i složene aplikacije. Možda da pripremim za kasnije ali mi sad ovo gori. Da pojasnim malo:

Kod ispod je postavljen u subformi, glavna forma je PlanF. U glavnoj formi se može menjati check27 na True ili False i u zavisnosti od toga ovo u sub formi treba da odradi a neće. Probao sam i na ostale evente u subformi nije uspelo, nekako sam uspeo da sprečim editovanje i dodavanje ali brisanje ne, a to je ključno (iz koda se vidi da je plan u pitanju a ako nešto iz njega brišeš nakon verifikacije, to je problem i ne sme se dozvoliti, edit i dodavanje čak i nije tako problematično)

If Forms!PlanF!Check27 = True Then

Me.AllowAdditions = False
Me.AllowDeletions = False
Me.AllowEdits = False

Else
Me.AllowAdditions = True
Me.AllowDeletions = True
Me.AllowEdits = True
End If

If Forms!PlanF!Check27 = True Then
MsgBox "Plan je verifikovan!" & Chr(10) & "Nije ga moguce menjati - brisati lica!", vbInformation
Me.Undo

End If

Isprobana je varijanta i da se iz glavne forme "zaključa" podforma, ne uspeva! Pravim primer pod hitno.

Ideja...
[ mpaja @ 10.01.2016. 08:20 ] @
Napravio sam skraćeni ali funkcionalan primer

Edit, dodavanje radi OK ali delete...
[ Branestan @ 10.01.2016. 09:14 ] @
If Forms!PlanF!Check27 = -1 Then

Me.AllowAdditions = False
Me.AllowDeletions = False
Me.AllowEdits = False

Else
Me.AllowAdditions = True
Me.AllowDeletions = True
Me.AllowEdits = True
End If

If Forms!PlanF!Check27 = True Then
MsgBox "Plan je verifikovan!" & Chr(10) & "Nije ga moguce menjati - brisati lica!", vbInformation
Me.Undo

End If

(Izmijenio sam "True" u "-1" i kod postavio na OnGotFocus polja koje treba da bude zaključano - kod mene tako radi)


Druga opcija je da se na glavnoj formi na Current postavi sledeći kod

If Me.Check27 = -1 Then
Me.PlanStavF.Locked = True
Else
Me.PlanStavF.Locked = False
End If

Isti kod postaviti na Check27, After Update i tako će se zaključati cijela subforma.

Pozdrav!
[ DudaD @ 10.01.2016. 09:22 ] @
Ukoliko ti je bitno da se provera radi baš u momentu brisanja, mislim da bi ovaj kod odradio posao>

Code:
Private Sub Form_BeforeDelConfirm(Cancel As Integer, Response As Integer)

If Forms!PlanF!Check27 = True Then
    MsgBox "Plan je verifikovan!" & Chr(10) & "Nije ga moguce menjati - brisati lica!", vbInformation
   Cancel = True
    
End If
End Sub


odnosno, još bolje:

Code:
Private Sub Form_Delete(Cancel As Integer)

If Forms!PlanF!Check27 = True Then
    MsgBox " Plan je verifikovan!" & Chr(10) & "Nije ga moguce menjati - brisati lica!", vbInformation
    Cancel = True
End If

End Sub

pa se neće dva puta pojavljivati poruka.

[Ovu poruku je menjao DudaD dana 10.01.2016. u 10:32 GMT+1]
[ SLOJ.1973 @ 10.01.2016. 10:34 ] @
Nedostajao ti je deo koda Cancel=true.Pozdrav.
[ SLOJ.1973 @ 10.01.2016. 10:36 ] @
Sad tek vidim da je i kolega DudaD isto odgovorio.
[ mpaja @ 10.01.2016. 11:02 ] @
Probano, radi, falio Cancel

Hvala momci, živi bili!