Forum
şunu netleştirelim;
Bir sütünda ki tüm satırlarda mı arama yapmak istiyorsunuz yoksa bir satırdaki tüm stünlarda mı?
Bir sütünda ki tüm satırlarda
Hocam iş yerinde visual studiom yok. Test edemicem Ama şöyle birşey yapabilirsin.
Gridi bir datatable içine kopyala. Ve foreach ile tüm satırlarda dön. foreach döngüsü şu şekilde olacak hatırladığım kadarıyla;
foreach (DataRow dr in datatable.Rows)
{
dr["KolonAdi"].ToString().Contains("aranacak");
}
Böylece tüm satırlarda sadece belirttiğin sütununda arama yapmiş olacaksın.
Hocam şu şekilde yapmaya calıştım
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if ((string)row.Cells[2].Value == txtTurkce.Text)
{
MessageBox.Show("Bu Kelime Bulunmaktadır !");
}
else
{
DGEkle();
DGBaglanti();
}
}
Ama yemedi çünkü döngü sonlanmıyor ve sürekli dönüyor
Break filan koydum o zamanda 1. döngü 1 defa dönüyor ve duruyor
Yapamadım
bu kodda hemde foreachle sonsuz döngü olamazki.
forech mantıgına aykırı zaten. Tüm rowlardan sonra scopetan çıkar.
kodun dogru gibi gozukuyor. ama test edemiyorum şu an için. breakpointle tekrardan durup bakman gerekebilir foreach içine girdiginde ne geliyor diye.
Haklısınız sonsuz kelimesi yanlış oluyor
demek istediğim forech de her row index için dönüyor bu durum da her seferinde if else yapısı çalışıyor ve textbox a yazdığım kelimeyi row sayısı kadar tabloya yazıyor "dbEkle=burda access tabloma ekleme komutlarım var)
umarım anlata bilmişimdir
(dbbaglanti=datagridwieve tabloyu cagıran komutlarım)
Ben genede yapmak istediğim şeyi yazayım belki daha güzel bir yol vardır..
2 textboxum var butona basınca access tabloma bu 2 textboxta yazan kelimeleri(türkçe ing sözlük gibi mesala) 1.textboxu 2.stuna ,2.textboxu 3. stuna(1.stunda İD var) kaydedecek ve eğer texboxlara yazılan kelimeler daha önceden kaydedilmişse uyarı verecek
işte bu
Verinin daha önce eklenip eklenmediğini şöylede kontrol edebilirsiniz.
textboxlara girilin degerleri alın. Sonra veritabanından;
select * from TABLO where kolon2=txt1 and kolon3=txt3
Bu sana bir değer döndürürse o kayıtlar daha önce girilmiştir. Yani bunun sonucunu bool bir değere atıp. ona göre işlemlerini yapabilirsin.
Hocam dediğiniz gibi sql sorgulamayla gidince çözüldü
Ben genede yazayım herzaman ki gibi belki birinin işine yarar
ayrıca daha pratik bir yöntem varsa öğrenmek isterim
try
{
string Yol = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=kelimelerim.mdb;Persist Security Info=False; ";
OleDbConnection baglantı = new OleDbConnection(Yol);
baglantı.Open();
OleDbDataAdapter adaptor = new OleDbDataAdapter("select * from kelimelerim where Turkce='" + txtTurkce.Text + "' or Ingilizce='" + txtIngilizce.Text + "'", baglantı);
DataSet myDS = new DataSet();
adaptor.Fill(myDS);
dataGridView1.DataSource = myDS.Tables[0];
if (myDS.Tables[0].Rows.Count == 0)
{
DGEkle();//Bu yöntem accesse eklemek için
DGBaglanti();//bu ise tabloyu datagridwieve en sonhalini çağırıyor
}
else
{
MessageBox.Show("Bu Kelime Bulunmaktadır");
dataGridView1.DataSource = myDS.Tables[0];
}
baglantı.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}