Tabloda Kayıt Yoksa Formu Açma

16/05/2017, 09:31

barcins

Merhaba Arkadaşlar,

günü gelen işleri otomatik mail atan bir uygulama bitmek üzere.
kodlarla arası olmayanlar için ufak ilaveler yapıyorum.

formumuz gmail hesabınızdan mail atıyor. bir tabloda şifre ve kullanıcı adı tutuluyor. 
bilgileri doğru girdiğimizde düzgün çalışıyor. 

benim istediğim burada kullanıcı adı veya şifre yok ise. 
ana form [HATIRLATMALAR] açılmıcak [MAILSIFRE] şifre giriş formu açılcak.



Kod:

Private Sub Form_Load()
If Dlookup ("[MAIL]", "MAILSIFRE") = Null And Dlookup ("[SIFRE]", "MAILSIFRE") = Null Then
DoCmd.OpenForm "MAILSIFRE"
Else
DoCmd.SelectObject acTable, , True
DoCmd.RunCommand acCmdWindowHide
End If
End Sub
16/05/2017, 10:25

atoz112

Sayın barcins,

Öncelikle,kendi adıma geçerli olmak sureti ile eklediğiniz örnek uygulama üst sürüm olması gerekçesi ile inceleme imkanım olmamaktadır fakat yazdıklarınızdan edindiğim hali ile fikir vermek üzere belirtmek gerekirse;

Yazdığınız haline göre,ilk açılışta mail şifresi ya da anaform adlı formların yerine sanırım başka bir form açılmakta.öyle ki,eğer kullanıcı adı ve şifre doğru değilse mail şifresi adlı formun açılmasını doğruysa da ana formun açılmasını istemişsiniz.dolayısı ile de o zaman başka bir form söz konusu olsa gerek.tabi bunu farazi yazıyorum.dediğim gibi inceleyemediğim için.

O zaman,açılan form hangisi ise bu formda geçerli olmak üzere yazdığınız koda göre bakıldığında şu yapılmış olduğu görülmekte. MAILSIFRE ifadesi eğer bir tablo adı ise tabloda MAIL ve SIFRE alanları eğer BOŞ ise diye yazılmış.eğer tabloda kayıt varsa (tabi bu tablo eğer önceden verileri girilmiş haldeyse geçerlidir) kayda göre davranacak fakat boş ise MAILSIFRE formunu açacak diye yazılı.

Tabloya göre değil de bunu açılan form hangisi ise o form üzerindeki kullanıcı adı ve şifre değerinin yazılacağı denetimlere göre kontrol ettirilmesi daha yerinde olacaktır.zira,eğer tabloda daha önceden girilmiş kayıt varsa buna göre işlem yapacaktır.

Bence burada şöyle bir kontrol yaptırılması uygun olur kanısındayım.Burada önemli olan neye göre kullanıcı adı ve şifre boş olursa işlem yapılması gerekiyor? Form açılır açılmaz boş kalma durumu derken kast edilen nedir?

Belki bir süre sonra bu bilgiler giriliyor da olabilir.ya da boş geçildiğinde eğer herhangi bir form açma işlevi söz konusu ise bunu engellemek için kullanıcı adı ve şifre giriş denetimleri eğer boş bırakılmışsa bir kontrol kodu dahile dilerek bu denetimlerin boş bırakılmaması konusunda ileti mesajı ekranda belirtilebilir ve eğer bilgiler doğru ise o zaman ana formun açılması sağlatılabilir.bu kullanıcı adı ve şifre girişinin yapılması gereken form zaten şifre giriş formu değil mi?

Kendi adıma,anlayamadığım kısım burası olduğu için bu yorumu yazmayı istedim,danışmak mahiyetinde.siz,anlatmış da olabilirsiniz fakat yanlış anlıyor ve yorumluyorsam lütfen gerekli bilgilendirmelerde bulununuz.Bilginize…iyi çalışmalar,saygılar.
16/05/2017, 10:41

alpeki99

Kodları düz duvar yerine merdiven şeklinde kodlarsanız daha okunur olur ayrıca hatalarınız azalır. Formun Load yani Yüklendiğinde olayını aşağıdaki gibi yapabilirsiniz:


Dim eposta As String
Dim parola As String

parola = Nz(DLookup("SIFRE", "MAILSIFRE"), "")
eposta = Nz(DLookup("MAIL", "MAILSIFRE"), "")

If (eposta = "" Or IsNull(parola) Or parola = "" Or IsNull(parola)) Then
'If MsgBox("Mail Bilgileriniz Güncellensinmi" & vbLf & vbLf & "Bilgileriniz Eksik...") = vbYes Then
'MsgBox "Mail Bilgileriniz eksik.", vbOKOnly + vbInformation, "Bilgilendirme Penceresi"
DoCmd.OpenForm "MAILSIFRE"
Else
DoCmd.SelectObject acTable, , True
DoCmd.RunCommand acCmdWindowHide
End If
'End If


göründüğü gibi düz duvar stili okunaklı değil. Girinti kullanınca ise çok daha okunaklı olacaktır.


Dim eposta As String
Dim parola As String

   parola = Nz(DLookup("SIFRE", "MAILSIFRE"), "")
   eposta = Nz(DLookup("MAIL", "MAILSIFRE"), "")
   
   If (eposta = "" Or IsNull(parola) Or parola = "" Or IsNull(parola)) Then
       
       'If MsgBox("Mail Bilgileriniz Güncellensinmi" & vbLf & vbLf & "Bilgileriniz Eksik...") = vbYes Then
       'MsgBox "Mail Bilgileriniz eksik.", vbOKOnly + vbInformation, "Bilgilendirme Penceresi"
       DoCmd.OpenForm "MAILSIFRE"
   
   Else
       
       DoCmd.SelectObject acTable, , True
       DoCmd.RunCommand acCmdWindowHide
   
   End If


Access ile Null kontrolünü Eposta = Null şeklinde değilde IsNull( Eposta ) olarak kontrol etmeniz daha doğru olur.
16/05/2017, 11:20

barcins

sayın alpeki99 teşekkür ederim.
komut çalışıyor fakat yerini ayarlıcam. kendiside açılıyor şu an 
yani hem [MAILSIFRE] ve [HATIRLATMALAR] açılıyor. [HATIRLATMALAR] açılmıcak. şimdi çıkıyorum geldiğimde bakıcam.

sorun çözülmüştür. iyi forumlar.