• 06-03-2020, 00:26:41
    #1
    Arkadaşlar merhaba

    Öncelikle bu devirde Access mi kullanıyorsunuz diyenler olabilir ancak bir ödev için yapılacak. Yardımınızı bekliyorum. Konu şu şekilde Kullanıcı kayıt ekranı var kayıt olduktan sonra bir şifre giriş ekranı ile sisteme giriş yapıyor. Sonrasında sayfada bir bölüm var ve giriş bilgilerine göre kayıt olurken ki bilgileri orada görünecek, düzenleme ekleme çıkarma işlemleri yapabilecek. Bu anlattıklarımda kayıt olma şifre girişi hepsini yaptım ancak kullanıcı giriş bilgilerini en basitinden girilen tckimlik numarasına göre çekemiyorum. Çekme işlemi yaptığımda en son kayıt geliyor her zaman. Örnek kod aşağıda

    OleDbCommand komut = new OleDbCommand("select*from musteri where tc like'%" + textBox6.Text + "%'", baglanti);
    baglanti.Open();
    OleDbDataReader dr = komut.ExecuteReader();
    while (dr.Read())
    {
    textBox7.Text = dr[2].ToString();
    
    }
    baglanti.Close();
    textbox6 tc kimlik numarasını okuduğu kutu dr[2] ise adı ve soyadının olduğu sutun ancak son kayıdı getiriyor her zaman benim istediğim girilen tc kimlik numarasına göre adı ve soyadı gibi. Teşekkürler.
  • 06-03-2020, 15:48:19
    #2
    ButonaBasildiginda methodu sizin butona basma eventi içine yazılacak kodlardır.

            private void ButonaBasildiginda()
    {
    // girilen veri
    string tcStr = textBox6.Text.Trim();
    
    // T.C no sayı ve 11 haneli olmalı.
    // ilk önce boşmu değilmi sonra 11 karakter testini yapıyoruz.
    if (string.IsNullOrEmpty(tcStr) || !tcStr.Length.Equals(11))
    {
    MessageBox.Show("T.C kimlik boş olamaz ve 11 haneli sayı olmalı.");
    return;
    }
    
    // buraya ulaşmışsa demek ki 11 karakteli bir string var elimizde
    // bu stringi de long a convert ediyoruz.
    long tcNo = 0;
    if (long.TryParse(tcStr, out tcNo))
    {
    MessageBox.Show("T.C kimlik no sadece sayı olmalı!");
    return;
    }
    
    // fonksiyonu çağırın
    string bulunanTc = this.GetTCNo(tcNo);
    
    // null ise kayıt yok bulunamadı
    if (string.IsNullOrEmpty(bulunanTc))
    {
    MessageBox.Show("T.C kimlik no bulunamadı :(");
    return;
    }
    
    // bulundu
    textBox7.Text = bulunanTc;
    }
    
    private string GetTCNo(long tcNo)
    {
    // buraya kadar geldiyse elimzide bir sayı var 11 haneli muhtemelen.
    // artık rahat rahat sorgu atabiliriz.
    // like ile değil where ile olmalı
    // ve mutlaka using bloğu kullanın ki nesne otomatik yok edilsin balantı kapatılsın.
    using (OleDbConnection baglanti = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\db.mdb"))
    {
    using (OleDbCommand komut = new OleDbCommand($"SELECT tc FROM musteri WHERE tc={tcNo}", baglanti))
    {
    baglanti.Open();
    
    using (OleDbDataReader dr = komut.ExecuteReader())
    {
    // kayıt varsa ve okunabilir ise ilk dönen kaydı al.
    if (dr.HasRows && dr.Read())
    {
    object dbVal = dr.GetValue(0);
    if (dbVal != null && dbVal != DBNull.Value)
    {
    return dbVal.ToString();
    }
    }
    }
    }
    }
    
    return null;
            }
  • 07-03-2020, 01:44:00
    #3
    mpurvis adlı üyeden alıntı: mesajı görüntüle
    ButonaBasildiginda methodu sizin butona basma eventi içine yazılacak kodlardır.

            private void ButonaBasildiginda()
    {
    // girilen veri
    string tcStr = textBox6.Text.Trim();
    
    // T.C no sayı ve 11 haneli olmalı.
    // ilk önce boşmu değilmi sonra 11 karakter testini yapıyoruz.
    if (string.IsNullOrEmpty(tcStr) || !tcStr.Length.Equals(11))
    {
    MessageBox.Show("T.C kimlik boş olamaz ve 11 haneli sayı olmalı.");
    return;
    }
    
    // buraya ulaşmışsa demek ki 11 karakteli bir string var elimizde
    // bu stringi de long a convert ediyoruz.
    long tcNo = 0;
    if (long.TryParse(tcStr, out tcNo))
    {
    MessageBox.Show("T.C kimlik no sadece sayı olmalı!");
    return;
    }
    
    // fonksiyonu çağırın
    string bulunanTc = this.GetTCNo(tcNo);
    
    // null ise kayıt yok bulunamadı
    if (string.IsNullOrEmpty(bulunanTc))
    {
    MessageBox.Show("T.C kimlik no bulunamadı :(");
    return;
    }
    
    // bulundu
    textBox7.Text = bulunanTc;
    }
    
    private string GetTCNo(long tcNo)
    {
    // buraya kadar geldiyse elimzide bir sayı var 11 haneli muhtemelen.
    // artık rahat rahat sorgu atabiliriz.
    // like ile değil where ile olmalı
    // ve mutlaka using bloğu kullanın ki nesne otomatik yok edilsin balantı kapatılsın.
    using (OleDbConnection baglanti = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\db.mdb"))
    {
    using (OleDbCommand komut = new OleDbCommand($"SELECT tc FROM musteri WHERE tc={tcNo}", baglanti))
    {
    baglanti.Open();
    
    using (OleDbDataReader dr = komut.ExecuteReader())
    {
    // kayıt varsa ve okunabilir ise ilk dönen kaydı al.
    if (dr.HasRows && dr.Read())
    {
    object dbVal = dr.GetValue(0);
    if (dbVal != null && dbVal != DBNull.Value)
    {
    return dbVal.ToString();
    }
    }
    }
    }
    }
    
    return null;
            }
    Hallettim hocam çok teşekkür ederim. Tc kimlik numarasını metoda aktardım metodu public yapıp heryere erişim açtım bu sayede tc kimlik numarasına göre sorgu doğrulatıp halletim sorunu. Cevap için teşekkür ederim tekrar.