PDA

View Full Version : مشکل در select کردن ID جدول اول که در فیلدی در جدول دوم ذخیره می شه



Kurdia
سه شنبه 09 شهریور 1389, 17:04 عصر
با سلام
دو جدول دارم با نامهای header و detail
جدول header برای انجام عملیات اصلی فرم ها است و detail برای انجام عملیات اطلاعات تکرار شونده ای که در فرم قرار می گیرد
مثلا نام، نام خانوادگی، تاریخ و شماره پرونده در header
و امتیاز های تخصیص داده شده در detil
---------Header---------
شماره پرونده:
تاریخ:
نام:
نام خانوادگی:
---------Detail---------
حد اکثر امتیاز | امتیاز اختصاص داده شده | موارد مورد بررسی

1.

2.

3.

4.
---------------------------

برای ثبت، حذف و ویرایش جدول detail باید فیلد ID جدول Header رو داشت و در فیلد مثلا IDHeader ذخیره کرد
برای 2 مقدار جداگانه از فیلد ID در جدول Header ممکنه اطلاعان مشابهی ذخبره شده باشه، برای حذف و ویرایش اونها دچار مشکل شدم
چون اگر بخوام بگم جایی که موارد مورد بررسی و حداکثر امتیاز و امتیاز اختصاصداده شده رو پیدا کن و فیلد IDHeader رو به من بده ممکنه چند مورد وجود داشته باشه که اولین اونها رو نشون می ده
همچنین اطلاعات به صورتی که در بالا مثال زدم در دو گریدویو جداگانه نمایش داده می شه
تابع selectiddetail کار جستجو رو انجام می ده




public int selectiddetail()
{
int intid = 0;
//-----------------------Select:
SqlConnection con = new SqlConnection("Data Source=(Local);Initial Catalog=Bazargani;Integrated Security=True");
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select * From tbldetail2 where mmbarrasi=N'" + txtmmbarasi.Text + "'";
cmd.Connection = con;
SqlDataReader re;
re = cmd.ExecuteReader();
if (re.Read())
{
intid = Convert.ToInt32(re["ID"].ToString());
}
con.Dispose();
cmd.Dispose();
return intid;
}



مقدار 0 متغیر intid برای مواقعی هست که هیچ موردی یافت نمی شه، بجای اینکه از !(re.read) استفاده کن همون اول مقدار دهی کردم

برای رفع مشکل بدست آوردن IDHeader صحیح چکار کنم؟؟

Kurdia
جمعه 12 شهریور 1389, 12:43 عصر
جواب رو پیدا کردم
با تشکر از جواد غلامی عزیز

یک فیلد که مقدار ID رو واسمون برمیگردونه به گریدویو اضافه کردم اما visible اون رو false کردم تا مشاهده نشه
با کلیک روی گریدویو در رویداد click اون این کد رو قراد دادم



string idheader = dataGridView1.CurrentRow.Cells["id"].Value.ToString();