• 8 odgovora
  • 2.876 pregleda
Kako sprečiti da se neki rekord u subformi menja, briše ili dodaje 09.01.2016. u 18:52 · pre 131 meseci #1
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....
Re: Kako sprečiti da se neki rekord u subformi menja, briše ili dodaje 09.01.2016. u 19:27 · pre 131 meseci #2
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.
Potpis
https://mzahorjanski.wixsite.com/mzahorjanski
https://www.fiverr.com/miroljubzahorja?up_rollout=true
https://www.youtube.com/@miroljubzahorjanski


Re: Kako sprečiti da se neki rekord u subformi menja, briše ili dodaje 10.01.2016. u 07:53 · pre 131 meseci #3
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...
Re: Kako sprečiti da se neki rekord u subformi menja, briše ili dodaje 10.01.2016. u 09:14 · pre 131 meseci #5
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!
Re: Kako sprečiti da se neki rekord u subformi menja, briše ili dodaje 10.01.2016. u 09:22 · pre 131 meseci #6
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]
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme