Çözüldü ASP.Net Access sorgu hatası

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Sinan Uğurlu

Kilopat
Katılım
30 Mayıs 2018
Mesajlar
495
Çözümler
11
Yer
Datacenter
Daha fazla  
Cinsiyet
Erkek
Meslek
Yazılım ve Ağ Altyapı Danış.
İyi günler, ASP.net web Forms'ta Update panel kullanarak Timer'a bir sorgu oluşturdum, kullanıcı Textbox'a değer girdiğinde Access veritabanında bu sorguyu sorguluyor, ancak sürekli aynı cevap dönüyor, acaba nerede kaçırıyorum yardımcı olur musunuz?

ASP.net:
string firmaad;
firmaad = txtFirma.Text.ToString().Trim();
selectFirma.Visible = true;
string baglantiStr = System.Configuration.ConfigurationManager.ConnectionStrings["userDB"].ConnectionString;
OleDbConnection baglantiCon = new OleDbConnection(baglantiStr);
OleDbCommand komut = new OleDbCommand();
string sorgu = "Select * from [firmalar] where ID='" + firmaad+ "'";
komut = new OleDbCommand(sorgu, baglantiCon);
komut.Parameters.AddWithValue("@isim", firmaad);
OleDbDataReader dr;
dr = komut.ExecuteReader();
if (dr.Read())
{
KayitliKullaniciRepeater.DataSource = dr;
KayitliKullaniciRepeater.DataBind();
}
else.
{
selectFirma.Visible = false;
}
 
Çözüm
Teşekkür Ederim, tüm fonksiyonlar sorunsuz olarak çalışıyor, aşşağıdaki şekilde hallettim. Dediğiniz eminim ki daha profesyonel ve daha kullanışlıdır, ancak henüz kendimi o kadar geliştiremedim ve projeyi bugün devreye almam gerekiyor.


Code Behind (Update Panel ve Timer ile 500 ms gecikmede çalışıyor.)
ASP.net:
if (txtFirma.Text.Length >= 1)
            {
                string firmaAd = txtFirma.Text.ToString().Trim();
                selectFirma.Visible = true;
                string baglantiStr = System.Configuration.ConfigurationManager.ConnectionStrings["userDB"].ConnectionString;
                OleDbConnection baglantiCon = new OleDbConnection(baglantiStr);
                OleDbCommand cmd;
                OleDbDataReader dr;
                cmd = new OleDbCommand();
                if (baglantiCon != null)
                {
                    baglantiCon.Open();
                }
                cmd.Connection = baglantiCon;
                cmd.CommandText = "SELECT * FROM [firmalar] where isim LIKE '%" + txtFirma.Text.ToString().Trim()+"%'";
                dr = cmd.ExecuteReader();
                firmarepeater.DataSource = dr;
                firmarepeater.DataBind();
                baglantiCon.Close();
            }
            else
            {
                selectFirma.Visible = false;
            }
Kod:
string firmaad;
firmaad = txtFirma.Text.ToString().Trim();
selectFirma.Visible = true;
string baglantiStr = System.Configuration.ConfigurationManager.ConnectionStrings["userDB"].ConnectionString;
OleDbConnection baglantiCon = new OleDbConnection(baglantiStr);
OleDbCommand komut = new OleDbCommand();
string sorgu = "Select * from [firmalar] where ID=@isim";
komut = new OleDbCommand(sorgu, baglantiCon);
komut.Parameters.AddWithValue("@isim", firmaad);
OleDbDataReader dr;
dr = komut.ExecuteReader();
if (dr.Read())
{
KayitliKullaniciRepeater.DataSource = dr;
KayitliKullaniciRepeater.DataBind();
}
else.
{
selectFirma.Visible = false;
}
Bu şekilde deneyebilir misiniz?
 
Şu anda sorunu çözdüm, ancak şöyle bir durum var ki, sadece metnin tamamı yazınca arıyor, örneğin; "deneme" cümlesinde "den" yazınca gelmiyor, ancak "deneme" yazınca geliyor, bu sorunu nasıl aşabilirim?

Sorgu;
ASP.net:
SELECT * FROM [firmalar] where isim='"+txtFirma.Text.ToString().Trim()+"'

Kod:
string firmaad;
firmaad = txtFirma.Text.ToString().Trim();
selectFirma.Visible = true;
string baglantiStr = System.Configuration.ConfigurationManager.ConnectionStrings["userDB"].ConnectionString;
OleDbConnection baglantiCon = new OleDbConnection(baglantiStr);
OleDbCommand komut = new OleDbCommand();
string sorgu = "Select * from [firmalar] where ID=@isim";
komut = new OleDbCommand(sorgu, baglantiCon);
komut.Parameters.AddWithValue("@isim", firmaad);
OleDbDataReader dr;
dr = komut.ExecuteReader();
if (dr.Read())
{
KayitliKullaniciRepeater.DataSource = dr;
KayitliKullaniciRepeater.DataBind();
}
else.
{
selectFirma.Visible = false;
}
Bu şekilde deneyebilir misiniz?
Cevabınız için teşekkür ederim, ancak yukarıdaki kod'da baya hatam var, gecenin ilerleyen saatlerinde düzelttim ancak burada düzeltmeyi unutmuşum, yinede teşekkür ederim 😇
 
Şu anda sorunu çözdüm, ancak şöyle bir durum var ki, sadece metnin tamamı yazınca arıyor, örneğin; "deneme" cümlesinde "den" yazınca gelmiyor, ancak "deneme" yazınca geliyor, bu sorunu nasıl aşabilirim?
Bu sorunu da çözebildiniz mi?

Ben yine de yazayım, sorgunuzu bununla değiştirmeyi dener misiniz?

Kod:
SELECT * FROM firmalar WHERE isim LIKE '%"+txtFirma.Text.ToString().ToLower()+"%'

Ayrıca hocam string birleştirme işlerinde string polation kullanmanızı tavsiye ederim. Ama asıl tavsiyem Entity Framework'e yönelmeniz olur. Performans konusunda bazen sorun yaratsa da güvenlik konusunda üzmez.
 
Son düzenleme:
Bu sorunu da çözebildiniz mi?

Ben yine de yazayım, sorgunuzu bununla değiştirmeyi dener misiniz?

Kod:
SELECT * FROM firmalar WHERE isim LIKE '%"+txtFirma.Text.ToString().ToLower()+"%'

Ayrıca hocam string birleştirme işlerinde string polation kullanmanızı tavsiye ederim. Ama asıl tavsiyem Entity Framework'e yönelmeniz olur. Performans konusunda bazen sorun yaratsa da güvenlik konusunda üzmez.

Hocam, şuanda sorgu konusunda hiçbir sorunum yok, tamamını hallettim, ancak son aşamada yine takıldım, şöyleki; anladığınız üzere bu bir arama fonksiyonu ve repeater ile aldığım sonuçları nasıl textbox'a yazdıracağım burada takıldım. Beynim durdu. Dediğiniz gibi MVC üzerine yöneliyorum, ancak şuan zamanım çok kısıtlı, o yüzden web form ile halletmem gerekiyor.
 
Hocam, şuanda sorgu konusunda hiçbir sorunum yok, tamamını hallettim, ancak son aşamada yine takıldım, şöyleki; anladığınız üzere bu bir arama fonksiyonu ve repeater ile aldığım sonuçları nasıl textbox'a yazdıracağım burada takıldım. Beynim durdu. Dediğiniz gibi MVC üzerine yöneliyorum, ancak şuan zamanım çok kısıtlı, o yüzden web form ile halletmem gerekiyor.
Hocam anladığım kadarıyla veritabanından sorguladığınız verileri textboxlara yazdıracaksınız. Bunun için DataReader sınıfından nesne oluşturup while içerisine nesneadi.Read() yaparak bu nesnedeki indisleri yazdırmanız gerek. Örneğin;

-komutunuz cmd adında olsun. Komutunuz select olmalı haliyle.
- DataReader dr = cmd.ExecuteReader() olur.
- while(dr.Read())
{
textBox1.Text = dr[0].ToString()
...
}

şeklindedir.
 
Hocam anladığım kadarıyla veritabanından sorguladığınız verileri textboxlara yazdıracaksınız. Bunun için datareader sınıfından nesne oluşturup while içerisine nesneadi.Read() yaparak bu nesnedeki indisleri yazdırmanız gerek. Örneğin;

-Komutunuz CMD adında olsun. Komutunuz select olmalı haliyle.
- Datareader dr = cmd.ExecuteReader() olur.
- while(dr.Read())
{
Textbox1.text = dr[0].ToString()

}

Şeklindedir.

Dediğiniz doğru, işime yarayabilir, ancak ben birden çok isim sorgulayıp kullanıcının seçtiğini Textbox'a yazdırmam lazım, burada JS kullanarak kullanıcının tıkladığı etiketi textboxa yazdırmam yeterli, ancak şu ana kadar gerekli JS örneğini bulamadım. "onclick" eventine document. Getelementbyid ile değer atamaya çalışıyorum ama yapamadım.
 
Dediğiniz doğru, işime yarayabilir, ancak ben birden çok isim sorgulayıp kullanıcının seçtiğini Textbox'a yazdırmam lazım, burada JS kullanarak kullanıcının tıkladığı etiketi textboxa yazdırmam yeterli, ancak şu ana kadar gerekli JS örneğini bulamadım. "onclick" eventine document. Getelementbyid ile değer atamaya çalışıyorum ama yapamadım.
Hocam tabloyu bir DataGridView'un veri kaynağı olarak gösterdikten sonra tabloda seçim değişim eventi açacaksınız. Aşağıda yazdım o satırı.

SelectionChanged olarak geçiyor. daha sonra foreach ile içindeki değerleri döndüreceksiniz.

--
foreach (DataGridViewRow secilensatir in dataGridView.SelectedRows)
{
textBox1.Text = secilensatir .Cells[0].Value.ToString()
textBox2.Text = secilensatir .Cells[1].Value.ToString()
...
}

Ayrıca birden çok isim gelecekse sorgu sayesinde oluşan tabloyu DataTable ve DataAdapter aracılığıyla oluşturduktan sonra DataGridView'un veri kaynağı olarak gösterirsiniz, kullanıcı da yukarıdaki kod sayesinde bu görsellikten seçtiği satırdan istediği verileri textBox'larda görebilir.
 
Son düzenleme:
Teşekkür Ederim, tüm fonksiyonlar sorunsuz olarak çalışıyor, aşşağıdaki şekilde hallettim. Dediğiniz eminim ki daha profesyonel ve daha kullanışlıdır, ancak henüz kendimi o kadar geliştiremedim ve projeyi bugün devreye almam gerekiyor.


Code Behind (Update Panel ve Timer ile 500 ms gecikmede çalışıyor.)
ASP.net:
if (txtFirma.Text.Length >= 1)
            {
                string firmaAd = txtFirma.Text.ToString().Trim();
                selectFirma.Visible = true;
                string baglantiStr = System.Configuration.ConfigurationManager.ConnectionStrings["userDB"].ConnectionString;
                OleDbConnection baglantiCon = new OleDbConnection(baglantiStr);
                OleDbCommand cmd;
                OleDbDataReader dr;
                cmd = new OleDbCommand();
                if (baglantiCon != null)
                {
                    baglantiCon.Open();
                }
                cmd.Connection = baglantiCon;
                cmd.CommandText = "SELECT * FROM [firmalar] where isim LIKE '%" + txtFirma.Text.ToString().Trim()+"%'";
                dr = cmd.ExecuteReader();
                firmarepeater.DataSource = dr;
                firmarepeater.DataBind();
                baglantiCon.Close();
            }
            else
            {
                selectFirma.Visible = false;
            }
 
Çözüm

Yeni konular

Geri
Yukarı