Kaydı Yönetici Şifresi İle Silmek

1 2 3 4
31/03/2020, 21:38

Oğuz Türkyılmaz

Merhaba
Formlarımda Kayıt silme işlemlerinin sadece Yönetici Şifresi girildiğinde gerçekleşmesini istiyorum. Forumdaki örneklerde şifreler sabit Vba kodlarına yazılmış. Bense statik değil dinamik bir yapı istiyorum bu yüzden kullanıcı tablosunda Admin olarak yetki tanımlanması yapılmış kişiye ait şifre ile silme işleminin gerçekleşmesini istiyorum. Yardımlarınız için teşekkür ederim.



Option Compare Database
Option Explicit

Dim Limit As String

Dim YoneticiSifresi As String

Private Sub Form_Open(Cancel As Integer)

Limit = 0


End Sub

Private Sub Kapat_BTN_Click()

DoCmd.Close acForm, "F_Password"

End Sub

Private Sub Password_TXT_AfterUpdate()


    YoneticiSifresi = Dlookup ("[sifre]", "[T_Kullanici]", "[yetki]= Admin")
   
    ' Kullanıcı tablosunda yetki düzeyi Admin olarak belirlenmiş alana atanmış olan sifre değerini formun üstündeki
    ' Password_TXT değeri ile karşılaştırmak ve eşit ise silme işlemini gerçekleştirmek istiyorum.

        If Password_TXT = YoneticiSifresi Then
       
        'Kayıt sil butonuna tanımlı kod aşağıdadır.
       
          If MsgBox("Ayni Yardim Kaydı ve bilgileri silinecek, İşlemin geri dönüşü yoktur, eminmisiniz ? ", vbCritical + vbYesNo, " !!! DİKKAT !!! ") = vbYes Then
   
        CurrentDb.Execute "delete from T_AyniYardim where [ID]=" & Me.ID_TXT
     
Dim fat As Control
        For Each fat In Me.Form.Controls
        Select Case fat.ControlType
            Case acTextBox
            fat.Value = ""
            Case acComboBox
            fat.Value = ""
            Case acCheckBox
            fat.Value = "0"
        End Select
            Next
    End If
   
        Tarih_TXT.SetFocus
        Tarih_TXT = Date
       
End Sub

        Else
       
            Limit = Limit + 1
           
            MsgBox "Şifre Yanlış", vbExclamation, "HATALI ŞİFRE"
           
        End If

        If Limit = 3 Then

            MsgBox "Şifreyi 3 defa yanlış girdiniz. Form kapanacak", vbExclamation, "HATA"

            DoCmd.Close

        End If

End Sub
01/04/2020, 10:40

berduş

Şifre formu yerine inputbox kullanmayı deneye bilirsiniz?
01/04/2020, 12:05

accessman

Dlookup ile daha güzel olur
01/04/2020, 18:40

Oğuz Türkyılmaz

(01/04/2020, 10:40)berduş yazdı: Şifre formu yerine inputbox kullanmayı deneye bilirsiniz?
İnputbox'ın ne olduğunu bilmiyordum meğerse Phyton dilindeki INPUT ile aynıymış evet bunuda kullanabilirim Dlookup la yetki düzeyi ADMİN olanın şifresini değişekene atayabilirsem onunla da yapabilirim henüz başaramadım. Teşekkürler.

(01/04/2020, 12:05)accessman yazdı: Dlookup ile daha güzel olur
02/04/2020, 18:37

berduş

dilerim işinize yarar
03/04/2020, 09:54

Oğuz Türkyılmaz

Sn.@berduş elinize sağlık bu konuda sorularım olacak affınıza sığınarak
1- Çözümünüzde nerden türetildiğini anlamadığım frm.AcikMi kodu var bu kod nasıl türetildi frm diye bir değişken tanımlamışsınız ama AcikMi ifadesi nedir metod yada fonksiyon değil nerden çıktı anlamadım. 
2-Kayıt sil butonundak kodda Me.Name nereyi ifade ediyor. Bende böyle bir alan yok.
If Len(Me.ID_TXT) > 0 Then DoCmd.OpenForm "F_Password", , , , , , Me.Name & ";" & Me.ID_TXT Else MsgBox "herhangi bir kayıt seçilmedi?"

3- Genel anlamda bu örneğin forumdan indirdiğim aslında nasıl oluyor da integer olması gereken limit değişkeni (Kodları aldığım örnekte Sayı adında )  string olarak tanımlanmış sonuçta her bir döngüde limitin bir artması için değişkenin sayı - ınteger olması gerekmiyor mu.
4-ADO ile kayıt yaptırmasaydım üretilecek çözümde bu kadar takla attırmaya gerek kalırmıy dı merak ediyorum.
5-Son olarak Hatalı şifre girildikten sonra Çıkan mesaj sonrası imleci neden bir türlü Me.Password_TXT alanına Setfocus yapamıyorum bir çok yerde ve varyasyonda denedim olmuyor.

Bu Örnek gibi forumda bir çözüm yoktu belki benim gibi cins birilerinin de işine yarar. ( Aslında neden hep sabit Vba ya gömülmüş kodlarla çözüm üretilmiş anlamış değilim bence bu şekilde daha kullanışlı neyse verdiğiniz emek için tekrar teşekkür ederim.
Option Compare Database
Option Explicit
Dim limit As Integer

Private Sub Form_Open(Cancel As Integer)


limit = 0


End Sub

Private Sub Kapat_BTN_Click()

DoCmd.Close acForm, "F_Password"

End Sub

Private Sub Password_TXT_AfterUpdate()
Dim limit As Integer
Dim frm As Form
Set frm = Forms(Split(OpenArgs, ";")(0))


    If DCount("*", "t_kullanici", "yetki='admin' and sifre='" & Me.Password_TXT & "'") > 0 Then
            If MsgBox("Ayni Yardim Kaydı ve bilgileri silinecek, İşlemin geri dönüşü yoktur, eminmisiniz ? ", vbCritical + vbYesNo, " !!! DİKKAT !!! ") = vbYes Then
            
                CurrentDb.Execute "delete from T_AyniYardim where [ID]=" & Split(OpenArgs, ";")(1)
                frm.AcikMi

             End If
       
            Else
       
            limit = limit + 1
           
            MsgBox "Şifre Yanlış", vbExclamation, "HATALI ŞİFRE"
                   
    End If

        If limit = 3 Then

        End If
       
        'Me.Password_TXT = ""
        'Me.Password_TXT.SetFocus

End Sub


Private Sub Password_TXT_LostFocus()

    limit = limit + 1
       
        If limit = 3 Then
           MsgBox "Hata sınırını aştınız", vbOKOnly, "Dikkat"
          
           Me.Kapat_BTN.Visible = True
           Me.Kapat_BTN.SetFocus
           Me.Password_TXT.Enabled = False
   Else

        End If

End Sub
1 2 3 4