نوشته شده توسط
rayson
منظورم روش دودویی برای جستجو کردن در درون جدول .
خود sql از روش B+_Tree برای ذخیره سازی و جستجو کردن استفاده میکنه بنابراین نگران سرعت نباش.
http://fa.wikipedia.org/wiki/%D8%AF%...84%D8%A7%D8%B3
میتونی به یکباره دیتاتیبل رو فیلتر کنی و نیازی نیست چندین بار این کار رو انجام بدی :
dt.DefaultView.RowFilter = "id_group_employ=" + Convert.ToInt32(mojaz_cmb_group.SelectedValue) + " AND id_madrak_tahsili=" + Convert.ToInt32(mojaz_cmb_madrak_tahsili.SelectedV alue);
قسمت if نمیدانم چه شرطی برای چک کردن خالی یا پر بودن بگذارم.
if(dt.DefaultView.Count == 0)
{
// هیچ رکوردی با شرط وارد شده پیدا نشد
}
در قسمت ریختن اطلاعات درون 3 متغییر myCodeOzviat , idGroup,idMadrak مشکل دارم.
بعد از فیلتر کرد، با متد ToTable سطرهای برگشتی رو مجددا به جدول تبدیل کن و داخل دیتاتیبل (یا یک دیتاتیبل جدید) بریز :
dt = dt.DefaultView.ToTable();
MessageBox.Show(dt.Rows[0][1].ToString());
همچنین بخش شرط وایل که تا زمانی که خالی نشده جدول ( به انتها نرسیده ) حلقه ادامه داشته باشد.
از تعداد سطرهای دیتاتیبل فیلتر شده کمک بگیر و از یک for استفاده کن :
for(inti =0 ; i < dt.DefaultView.Count; i++)
{
myCodeOzviat = dt.Rows[i]["code_ozviat"].ToString();
myidGroup = Convert.ToInt32(dt.Rows[i]["id_group_employ"].ToString());
myidMadrak = Convert.ToInt32(dt.Rows[i]["id_madrak_tahsili"].ToString());
SqlCommand cmdInsert = new SqlCommand{CommandText = "insert into mojaz(sonati,felezi,sakhteshode,code_ozviat,id_sal ,id_group_employ,id_madrak_tahsili) VALUES (@sonati,@felezi,@sakhteshode,@code_ozviat,@id_sal ,@id_group_employ,@id_madrak_tahsili)"};
cmdInsert.Parameters.AddWithValue("@sonati", mojaz_txt_sonati.Text);
cmdInsert.Parameters.AddWithValue("@felezi", mojaz_txt_felezi.Text);
cmdInsert.Parameters.AddWithValue("@sakhteshode", mojaz_txt_sakhte_shode.Text);
cmdInsert.Parameters.AddWithValue("@code_ozviat",m yCodeOzviat);
cmdInsert.Parameters.AddWithValue("@id_sal", mojaz_cmb_sal.SelectedValue);
cmdInsert.Parameters.AddWithValue("@id_group_emplo y", myidGroup);
cmdInsert.Parameters.AddWithValue("@id_madrak_tahs ili", myidMadrak);
cmdInsert.Connection = con_temp;
cmdInsert.ExecuteNonQuery();
}
موفق باشید.