Blocare inregistrari specifice din baza de date

Ce este nou in Microsoft Access 2010?
Informatii despre cum se utilizeaza Microsoft Access 2010.
Baze de date, Interogari, Formulare, Rapoarte, etc
Închis
ataar
Mesaje: 1
Membru din: Vin Iun 17, 2016 5:18 pm

Blocare inregistrari specifice din baza de date

Mesaj de ataar » Vin Iun 17, 2016 5:25 pm

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!

Dr.Windows
Moderator
Moderator
Mesaje: 4570
Membru din: Vin Iul 31, 2009 7:32 am

Re: Blocare inregistrari specifice din baza de date

Mesaj de Dr.Windows » Dum Iun 19, 2016 9:20 am

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:

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
Pentru detalii vezi si fisierul atasat.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

viorel69
Mesaje: 34
Membru din: Joi Aug 07, 2014 8:01 am

Re: Blocare inregistrari specifice din baza de date

Mesaj de viorel69 » Vin Feb 03, 2017 6:34 pm

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 ....
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

Dr.Windows
Moderator
Moderator
Mesaje: 4570
Membru din: Vin Iul 31, 2009 7:32 am

Re: Blocare inregistrari specifice din baza de date

Mesaj de Dr.Windows » Mie Feb 08, 2017 7:19 pm

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:

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
2. In Form-ul parinte, codul "on click" pentru butoane, pe langa activarea/dezactivarea butonului trebuie sa puna si valoarea corecta in campul "reclock":

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
Ai si baza exemplu in fisierul atasat.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

Închis

Înapoi la “Intrebari despre Access 2010”