Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
kullanıcı aktif ve ya pasif durumu hakkında
#1
merhaba ben kullanıcı giriş ekranında kullanıcının aktif ve ya pasif durumunu sql üzerinde sorgulamak istiyorum sql üzerinde bir sütun açtım oraya gerekli verileri girdim ancak konu hakkında nasıl bir kod yapısı kullana bilirim kavrayamadım kullandığım kod yapısı aşağıdaki gibi

procedure Tanaform1.Rectangle3Click(Sender: TObject);
begin
  with UniQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Text := 'select * from uye where (username=:kdi and uye_pw=:pswrd)';
    ParamByName('kdi').Value := usrnm.Text;
    ParamByName('pswrd').Value := sfrr.Text;
    open;
  end;

  if UniQuery1.RecordCount > 0 then
  begin
    ShowMessage('Giriş Başarılı');
    form1.show;
    form1.Edit1.Text := usrnm.Text;
  end
  else
  begin
    if UniQuery1.RecordCount <= 0 then
    begin
      ShowMessage('Kullanıcı Adı veya Parola Hatalı!!');
    end;

bu kullanıcı girişinde aldığım sorgu kodu burda aynı zamanda sql üzerinde açtığım kullanıcı durumunu da sorgulamak istiyorum

ancak bu sorguyu kullanıcı girmeyecek değer sql üzerinde yazılı olan veriye göre sistem açılacak ve ya hata verecek
Cevapla
#2
Qrykullan.sql.clear;
Qrykullan.sql.text :='select * from tblkullanici where kullanici='''+editkullanici+''' and pass='''+editpass+'''';
if Qrykullan.recordcount > 0 then
begin
 if Qrykullan.fieldbyname('durumu').value = 0 then // aktif değilse
 showmessage('Kullanıcı aktif değildir')
else
 showmessage('Kullanıcı aktif')
end;
Qrykullan.open;

Eğer doğru anladıysam bu şekilde yazabilirsiniz.
Yazılımcı, kahveyi koda çeviren bir organizmadır.
Cevapla
#3
aktif pasif derken? şu anda sistem de mi değil mi? yani oturum açmış mı aşmamış mı? onu mu soruyorsunuz?
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#4
"Kullanıcının Aktif / Pasif" olması durumu muğlak kalmış. Neye göre, tam olarak hangisini kastediyorsunuz?
  • Kullanıcının kullanıcı hesabının kullanıma kapalı olup olmadığı durumu mu?
  • Kullanıcının Login olup olmadığı durumu mu?
Siz sorduğunuz soruda ve sunduğunuz örnekte bu durumu net olarak belirtemiyorsunuz.

Kullanıcı adı ve şifre ile kullanıcı tablosunda arama yapmak o kullanıcının sistemde kayıtlı olup olmadığını gösterir ama Login olup olmadığını ya da hesabının kullanılabilir olup olmadığını göstermez. Bence sorunuzu toparlayıp net hale getirin.

YouTube Delphi Tips

"Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır" P.Safa
WWW
Cevapla
#5
Merhaba kullanıcı hesabının kullanıma kapalı olup olmadığı durumu açıklamayı eksik yaptığım için özür dilerim
kullanıcı kaydından sonra ben bu kullanıcıyı databasede ki bir alanda aktif edeceğim ve uygulamayı kullanabilecek
Cevapla
#6
Merhaba,
Aşadağı kullanım size bir fikir verebilir.

procedure Tanaform1.Rectangle3Click(Sender: TObject);
begin
 with UniQuery1 do
 begin
   Close;
   SQL.Clear;
   SQL.Text := 'select * from uye where (username=:kdi and uye_pw=:pswrd )';
   ParamByName('kdi').Value    := usrnm.Text;
   ParamByName('pswrd').Value  := sfrr.Text;
   open;
 end;
 if (UniQuery1.RecordCount > 0) then
 begin
   if UniQuery1.FieldByName('aktif').value=1 Then // aktif sizin kullanıcıyı aktif edeceğiniz alanı temsil eder
   Begin
     ShowMessage('Giriş Başarılı');
     form1.show;
     form1.Edit1.Text := usrnm.Text;
   End
   else
   ShowMessage('Hesabınız Aktif Edilmemiş!')
 End
 else
 ShowMessage('Kullanıcı Adı veya Parola Hatalı!!');
end;
Cevapla
#7
yardımınız için teşekkğr ederim ederim sorun çözülmüştür
Cevapla
#8
Belki şöyle alternatif bir yaklaşım da ilginizi çekebilir;

Bazı DBMS'ler SQL Bağlantısı sırasında her bağlantıya benzersiz bir LoginID numarası verir. MySQL ve MariaDB için bu CONNECTION_ID() fonksiyonudur. Programınıza login olunduğunda login olan kullanıcı için veritabanının belirlediği LoginID değerini kullanıcı tablosunda tutabilirsiniz. Logout olduğunda da ilgili alanı sıfırlarsınız veya nullarsınız. Böylece kullanıcının o an sistemde olup olmadığını kullanıcı tablosuna bakarak da kontrol edebilirsiniz. Eğer değeri 0 veya null ise o kişi programınıza login olmamış demektir.

SELECT CONNECTION_ID() AS LoginID

sorgusunu ilk login esnasında çalıştırdığınızda bir LoginID değeri elde edersiniz ve o bağlantı için bu değer sabittir.

Diyelim ki kullanıcının bağlantısı fiziksel olarak koptu ve kullanıcı tablosundaki loginID değerini program nullayamadı. Bu tür durumlar için aşağıda örneğini verdiğim sorgu sonucunda bir kayıt dönü-mü-yor ise o kullanıcının kullanıcı tablosundaki LoginID değerini de otomatik olarak nullayabilirsiniz.

SELECT *
FROM INFORMATION_SCHEMA.PROCESSLIST
WHERE ID = 10
/* 10 değeri burada LoginID değerini ifade eder.  */

YouTube Delphi Tips

"Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır" P.Safa
WWW
Cevapla
#9
konu ile ilgilenen arkadaşlar olursa
if UniQuery1.FieldByName('aktif').value=1 Then
burada kullanacağınız değer 0 olursa sistem açılmıyor 1 olursa açılıyor bunuda sql üzerinde update komutuyla kontrol edebilirsiniz
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Order By Kullanımı hakkında yhackup 16 7.960 02-06-2017, Saat: 12:03
Son Yorum: Tuğrul HELVACI



Konuyu Okuyanlar: 1 Ziyaretçi