Blocare inregistrari specifice din baza de date
Blocare inregistrari specifice din baza de date
Salut.
Lucrez la o aplicatie de contabilitate in Access 2010. Am definit un subformular (unde se inregistreaza date referitoare la cantitati, produse, preturi etc.) care e legat de un formular de intrari (unde se inregistreaza date referitoare la furnizor, modalitate de plata etc.).
Logica din spatele acestei operatii este: Apas pe acel buton (toggle-button) doar daca factura respectiva a fost inregistrata in notele contabile si in registrul de banca/casa.
Spre exemplu, in formularul de intrari am 3 documente de cumparare (A, B, C). Primele doua facturi (A si B) au fost operate in sistem (= inregistrare in note contabile si in registrul casa/banca) si prin apasarea acelui buton le-am blocat pentru a nu mai fi editate ulterior (eliminand riscul de a influenta situatiile contabile de la finalul lunii, cum ar fi: declaratia 100; declaratia 390 TVA). De asemenea acelasi buton vreau sa blocheze si inregistrarile din subformular. A treia factura vreau sa ramana editabila, deoarece inca nu a fost operata 100% in sistem si se va bloca doar dupa procesare. Totodata, in momentul in care deschid o inregistrare noua aceasta vreau sa fie neblocata in mod predefinit.
Imi cer scuze daca acest topic mai exista deja.
Numai bine!
Lucrez la o aplicatie de contabilitate in Access 2010. Am definit un subformular (unde se inregistreaza date referitoare la cantitati, produse, preturi etc.) care e legat de un formular de intrari (unde se inregistreaza date referitoare la furnizor, modalitate de plata etc.).
Logica din spatele acestei operatii este: Apas pe acel buton (toggle-button) doar daca factura respectiva a fost inregistrata in notele contabile si in registrul de banca/casa.
Spre exemplu, in formularul de intrari am 3 documente de cumparare (A, B, C). Primele doua facturi (A si B) au fost operate in sistem (= inregistrare in note contabile si in registrul casa/banca) si prin apasarea acelui buton le-am blocat pentru a nu mai fi editate ulterior (eliminand riscul de a influenta situatiile contabile de la finalul lunii, cum ar fi: declaratia 100; declaratia 390 TVA). De asemenea acelasi buton vreau sa blocheze si inregistrarile din subformular. A treia factura vreau sa ramana editabila, deoarece inca nu a fost operata 100% in sistem si se va bloca doar dupa procesare. Totodata, in momentul in care deschid o inregistrare noua aceasta vreau sa fie neblocata in mod predefinit.
Imi cer scuze daca acest topic mai exista deja.
Numai bine!
-
- Moderator
- Mesaje: 4568
- Membru din: Vin Iul 31, 2009 7:32 am
Re: Blocare inregistrari specifice din baza de date
Salut!
Ceea ce doresti se pare ca este o "blocare logica" si asta se poate face cu un camp de tip boolean (sa zicem "reclock") de care poti sa te legi apoi in evenimenul Form_Current care se va declansa la fiecare mutare pe urmatoarea inregistrare. Astfel poti pune urmatorul cod in acel eveniment:
Pentru detalii vezi si fisierul atasat.
Ceea ce doresti se pare ca este o "blocare logica" si asta se poate face cu un camp de tip boolean (sa zicem "reclock") de care poti sa te legi apoi in evenimenul Form_Current care se va declansa la fiecare mutare pe urmatoarea inregistrare. Astfel poti pune urmatorul cod in acel eveniment:
Cod: Selectaţi tot
Private Sub Form_Current()
Dim ctl As Object
On Error Resume Next
For Each ctl In Me.Controls
If Me.reclock = True Then
ctl.locked = True
Else
ctl.locked = False
End If
Next
On Error GoTo 0
End Sub
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.
Re: Blocare inregistrari specifice din baza de date
Va salut.
Uite ca ma intereseaza si pe mine o astfel de blocare logica la nivel de inregistrare, si am dus exemplul la modul cum asi vrea eu sa blochez si sa deblochez inregistrarea.
Am refacut formul cu un subform si cu doua butoane in form. Acum intampin greutatea de a face acele doua butoane sa functioneze, ba mai mult dupa ce apas "Validare" de ex sa
mu il mai pot apasa. Asata o fac cu Me.btn_Validare.Enabled = False. Dar restul ....
Uite ca ma intereseaza si pe mine o astfel de blocare logica la nivel de inregistrare, si am dus exemplul la modul cum asi vrea eu sa blochez si sa deblochez inregistrarea.
Am refacut formul cu un subform si cu doua butoane in form. Acum intampin greutatea de a face acele doua butoane sa functioneze, ba mai mult dupa ce apas "Validare" de ex sa
mu il mai pot apasa. Asata o fac cu Me.btn_Validare.Enabled = False. Dar restul ....
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.
-
- Moderator
- Mesaje: 4568
- Membru din: Vin Iul 31, 2009 7:32 am
Re: Blocare inregistrari specifice din baza de date
Salut viorel69,
Exemplul de mai sus era generic si nu lua in calcul un SubForm... pentru ca in acest caz trebuie sa apelezi corect obiectele din formularul parinte - Me.Parent..
Acum concret pentru un form cu subform se poate face asa:
1. In SubForm - evenimentul OnCurrent dezactiveaza posibilitatea de editare dar si activeaza corect cele 2 butoane din Form-ul parinte:
2. In Form-ul parinte, codul "on click" pentru butoane, pe langa activarea/dezactivarea butonului trebuie sa puna si valoarea corecta in campul "reclock":
Ai si baza exemplu in fisierul atasat.
Exemplul de mai sus era generic si nu lua in calcul un SubForm... pentru ca in acest caz trebuie sa apelezi corect obiectele din formularul parinte - Me.Parent..
Acum concret pentru un form cu subform se poate face asa:
1. In SubForm - evenimentul OnCurrent dezactiveaza posibilitatea de editare dar si activeaza corect cele 2 butoane din Form-ul parinte:
Cod: Selectaţi tot
Private Sub Form_Current()
Dim ctl As Object
On Error Resume Next
For Each ctl In Me.Controls
If Me.reclock.Value = True Then
ctl.locked = True
Me.Parent.btn_Validare.Enabled = False
Me.Parent.btn_Devalidare.Enabled = True
Else
ctl.locked = False
Me.Parent.btn_Validare.Enabled = True
Me.Parent.btn_Devalidare.Enabled = False
End If
Next
On Error GoTo 0
End Sub
Cod: Selectaţi tot
Private Sub btn_Validare_Click()
Me.btn_Validare.Enabled = False
Me.btn_Devalidare.Enabled = True
Me.[Table1].Form.reclock.Value = True
End Sub
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.