PDA

View Full Version : سوال: بعضی وقتا اطلاعات ذخیره میشود ... بعضی وقتا نمیشود ... چرا؟



ostovarit
شنبه 22 خرداد 1389, 20:46 عصر
من با زبان C#‎ و دیتابیس Sql Server خود ویژال برنامه مینویسم
همه اطلاعاتی که در فرم مینویسم کاملا ذخیره میشود و مشکلی نداره ...
ولی اطلاعاتی که در گرید ویو مینویسم ... بعضی وقتا ذخیره میشود بعضی وقتا نمیشود!
کانکشن استرینگم هم درسته !

- برای بایند گرید از کد زیر استفاده میکنم:


private void BindGrid()
{
da = new SqlDataAdapter("select * from RegGoods", new myConnection().Cnn);
ds = new myDataSet();
da.Fill(ds.RegGoods);

dv = new DataView();
dv.Table = ds.RegGoods;
dataGridViewSpesific1.DataSource = dv;
}
- برای ذخیره اطلاعات گرید از کد زیر استفاده میکنم:


SqlCommandBuilder scb = new SqlCommandBuilder(da);
da.Update(ds.RegGoods);
بعضی وقتا اگر چند سلول از گرید رو ویرایش کنم ذخیره میشود ولی اگر یک سلول ویرایش بشه ذخیره نمیشود....

چرا گاهی اوقات این کد جواب میدهد گاهی نه؟

ostovarit
یک شنبه 23 خرداد 1389, 10:58 صبح
درست شد!!!

دو تا تب داشتم که وقتی وارد تب دوم میشدیم گرید رو بایند میکردم
تغیرات رو که میدادیم da.update میکردم ولی دفعه اول ذخیره نمیشد اگر دوباره ویرایش رو انجام میدادم ذخیره میشد.( در بعضی از ستون های گرید ویرایش دفعه اول اعمال میشد)

من یک DataSet درست کردم و با اون Dataset که قبلا تو ویژال ساخته بودم و تیبل هام رو بهش اضافه کرده بودم کار نکردم و بایند گرید رو در فرم لود گذاشتم درست شد!

اگر ما یک فایل Dataset در ویژال درست کنیم یا اینکه در کد Dataset را new کنیم فرقی میکند؟
چرا بایند گرید رو در لود تب گذاشتم بایند میشد ولی ویرایش ذخیره نمیشد؟؟
الان درست شده ولی کسی میدونه چرا؟؟؟؟؟

ostovarit
یک شنبه 23 خرداد 1389, 14:04 عصر
بیشتر که تست کردم متوجه شدم مشکل در باید کمبو باکسها هست!!!
یک جورایی تداخل ایجاد میشه بین بایند گرید و کمبو باکس ... البته فکر میکنم
برای همین من باید کمبو باکس ها رو در ایونتی به غیر از لود صفحه نوشتم ...
یکی از کمبو باکسها که اطلاعات تیبلی که جدیدا ایجاد کردم رو نشون میده تا زمانی که اون بایند نشده مشکلی نیست همین که بایند میشه من مجبورم برای ویرایش اطلاعاتم در گرید دو بار اقدام به ویرایش کنم تا اطلاعات ذخیره بشه!

من کمبو باکسم رو به وسیله یک کلاس که کدش رو در زیر نوشتم بایند میکنم:


public static void BindComboBox(ComboBox cb, string Displaymember, string Valuemember, string sql)
{
SqlDataAdapter MyDaCombo = new SqlDataAdapter(sql, new myConnection().Cnn);
DataSet MyDsCombo = new DataSet();
MyDaCombo.Fill(MyDsCombo);

cb.DisplayMember = Displaymember;
cb.ValueMember = Valuemember;
cb.DataSource = MyDsCombo.Tables[0];
}


باید گرید و ... رو هم در پست های قبلی نوشتم ... دلیلی به ذهنتون میرسه واسه این مشکل عجیب؟؟؟؟