Arşiv Anasayfa Veritabanı Makaleleri
Sayfalar: 1
Kullanıcı Sistemi [Gizli soru ve Aynı Kullanıcı Dikkate Alarak] Gönderen: SelçuK Tarih: 05 May 2008 18:08:02
Merhaba Arkadaşlar forumda parça parça vermişte olsam sanırım bir başlık altında toplamak
ulaşılabilirlik açısından daha iyi olacktır.

Giriş Ekranında Yer alan Giriş Butonunun içeriği

procedure TFormGiris.btn_girisClick(Sender: TObject);
begin
FormAna.QuerySorgu.Sql.Clear;
FormAna.QuerySorgu.Sql.Add('Select * From data.db Where kul_adi='''+txt_kullaniciadi.text+''''+
' and sifre='''+txt_sifre.Text+'''');
FormAna.QuerySorgu.Open;
If FormAna.QuerySorgu.RecordCount>0 Then Begin
Formana.Show;
FormGiris.Hide;
End Else Begin
Showmessage('Kullanıcı Adı Veya Şifreniz Yanlış');
end;
end;
 

Aslında kod gayet açık ama kısacadeğinelim. query ile table a bir sorgu gönderiliyor.
sorgu sonucunu miktarsal olarak görmek adına RecordCount u kullandık. Ve dönen değer
Sıfır'dan büyükse girilen bilgilerle eşleşen bir kayıt var demektir. O halde kullanıcıya ana formu göster.
Aksi taktide Kullanıcıyı bilgilerin yanlış olduğu yönünde uyar.

Şifremi unuttum butonunun içeriği

FormAna.QuerySorgu.Sql.Clear;
FormAna.QuerySorgu.Sql.Add('Select * From data.db Where kul_adi='''+txt_kullaniciadi.text+'''');
FormAna.QuerySorgu.Open;
If FormAna.QuerySorgu.Recordcount>0 Then Begin
lbl_gizlisoru.Caption :='Gizli Sorunuz= '+FormAna.QuerySorgu.FieldByname('GizliSoru').Asstring;
FormGiris.Height := 250;
lbl_gizlisoru.visible := True;
label4.Visible := true;
txt_gizlicevap.Visible := true;
btn_CevapGoster.Visible := true;
end else begin
ShowMessage('Gizli Soruyu Görmek İçin Kullanıcı Adı Doğru Girilmelidir');
end;
end;
 

query ile table a bir sorgu gönderiliyor.
sorgu sonucunu miktarsal olarak görmek adına RecordCount u kullandık. Ve dönen değer
Sıfır'dan büyükse girilen bilgilerle eşleşen bir kayıt var demektir. o zaman formun boyunu az büyüt ve
kullanıcının bilgileri gireceği kontrollerin visible(görünürlüğü) true yap. Aksi halde kulanıcı adının yanlış
olduğu yönünde kullanıcıyı uyar.

Şifreyi Göster Butonunun İçeriği

procedure TFormGiris.btn_CevapGosterClick(Sender: TObject);
begin
FormAna.QuerySorgu.Sql.Clear;
FormAna.QuerySorgu.Sql.Add('Select * From data.db Where'+
' kul_adi='''+txt_kullaniciadi.text+''' and GizliCevap='''+txt_gizlicevap.text+'''');
FormAna.QuerySorgu.Open;
If FormAna.QuerySorgu.RecordCount>0 then begin
ShowMessage('Şifreniz: '+FormAna.QuerySorgu.FieldByName('sifre').Asstring);
FormGiris.Height := 150;
lbl_gizlisoru.visible := false;
label4.Visible := false;
txt_gizlicevap.Visible := false;
btn_CevapGoster.Visible := false;
end else begin
Showmessage('Gizli Cevabınız Yanlış. Küçük Büyük Harfe Dikkat Ediniz');
end;
end;

query ile table a bir sorgu gönderiliyor.
sorgu sonucunu miktarsal olarak görmek adına RecordCount u kullandık. Ve dönen değer
Sıfır'dan büyükse girilen bilgilerle eşleşen bir kayıt var demektir. O zaman kullanıcıya bu dönen
değerdeki Sifre alanındaki değer gösteriliyor. Kullanıcı Mesaja Evet dediği anda büyüttüğümüz
form tekrardan küçültülüyor ve görünür hale gelen nesneler tekrardan görünmez oluyor.

Kullanıcı Kayıt Formunun İçeriği

Kaydet Butonunun İçeriği

procedure TFormAna.btn_kaydetClick(Sender: TObject);
begin
QuerySorgu.Sql.Clear;
QuerySorgu.Sql.Add('Select * From data.db Where kul_adi='''+DBEdit1.text+'''');
QuerySorgu.Open;
If FormAna.QuerySorgu.Recordcount>0 Then begin
ShowMessage('Bu Kullanıcı Adı Kullanılmaktadır. Başka Bir Tane Deneyiniz');
TableKayit.Cancel;
Exit;
end else begin
if Not (TableKayit.State in [dsInsert,dsEdit]) then begin
ShowMessage('Lütfen Yeni Kayıt Veya Düzenle Butonunu Tıklayınız');
Exit;
end else begin
if (DBEdit1.Text='') or (DBEdit2.Text='') or (DBEdit3.Text='') then begin
ShowMessage('Lütfen Tüm Alanları Doldurunuz');
Exit;
end else begin
TableKayit.Post;
end;
end;
end;
end;
 

query ile table a bir sorgu gönderiliyor.
sorgu sonucunu miktarsal olarak görmek adına RecordCount u kullandık. Ve dönen değer
Sıfır'dan büyükse girilen bilgilerle eşleşen bir kayıt var demektir. O zaman DBEdit1 e girilen isimle
bir kullanıcı kaydı yapılmış demektir. Kullanıcıyı uyarıyoruz.
Eğer yoksa işleme devam ediliyor.
İkinci kontrol tablonun insert yada edit modda olup olmadığı ki bunuda "dataset not edit or insert mode"
hatasını almamak adına yapıyoruz.
Eğer iki moddan birinde değilse kullanıcıyı bunları kullanmaya yönelten bir mesaj veriyoruz.
Eğer edit veya insert modda ise devam ediyoruz.
Bu kezde bilgi kutularının dolu olup olmadığını kontrol ediyoruz. Değlse mesaj ile uyarıyoruz.
Eğer bilgi giriş kutularımız da dolu ise
Tüm şartlar yerine geldiğinden dolayı kayıt işlemini yapıyoruz.

Eksik yada olumsuz yönlerim olaiblir. Bu konuda uyarırsanızgrekli düzenlemeleri yapabiliriz.
Aslında
Var
Giris:String='query ile table a bir sorgu gönderiliyor.
sorgu sonucunu miktarsal olarak görmek adına [b]RecordCount[/b] u kullandık. Ve dönen değer
Sıfır dan büyükse girilen bilgilerle eşleşen bir kayıt var demektir. O zaman'
;
Bölümünü Global Olarak tanımlayacaktım ama arkadaşların kafası karışmasın diye yapmadım Grin

Kayıt bölümündeki standart kayıt sil, düzelt, yeni kayıt bölümlerini buraya yazma ihtiyacı duymadım.
Çünkü onlar zaten gündelik hayatta kullandığımız kodlardandır Grin
Sağlıcakla kalın.