PDA

View Full Version : حرفه ای: error در دستور insert برای فیلدهای allow null



niloofar21
دوشنبه 21 فروردین 1391, 11:52 صبح
سلام .
یه سوال دارم در مورد update و insert کردن اطلاعات داخل جداول. متاسفانه حالا که یه بخش بزرگ از کارمو انجام دادم متوجه شدم شاید برای insert بهتر بود از خود متد insert استفاده میکردم. روشی که باهاش کار کردم اینه که برای update یه دستور fill بررسی میشه که در واقع اگر چنین سطری از اطلاعات وجود داره که دستورات مربوط به ویرایش نوشته میشه و اگر وجود نداره سطر جدیدی ایجاد و اطلاعات به عنوان سطر جدید وارد میشن.این نمونه ای از دستوراتیه که استفاده کردم:


protected void BtnInsert_Click(object sender, EventArgs e)
{
DataRow MyRow = ds2.tSoftware_Details.NewRow();
MyRow[ds2.tSoftware_Details.fCityCodeColumn] = MyMethod().City;
MyRow[ds2.tSoftware_Details.fSoftwareCodeColumn] = DdlTypesoftware.SelectedValue.ToString();
MyRow[ds2.tSoftware_Details.fDatabaseTypeColumn] = TbxDatabase.Text.Trim();
MyRow[ds2.tSoftware_Details.fTecTypeColumn] = TbxTecType.Text.Trim();
LblMsg.Text = "رکورد جدید با موفقیت ذخیره شد.";
Clear();
BindGrid();
}

protected void BtnUpdate_Click(object sender, EventArgs e)
{

bool Success = sda2.FillBySoftwareCityCode(ds2.tSoftware_Details, Int32.Parse(MyMethod().City), Int32.Parse(DdlTypesoftware.SelectedValue.ToString ())) > 0;
if (Success)
{
ds2.tSoftware_Details.Rows[0][ds2.tSoftware_Details.fCityCodeColumn] = MyMethod().City;
ds2.tSoftware_Details.Rows[0][ds2.tSoftware_Details.fSoftwareCodeColumn] = DdlTypesoftware.SelectedValue.ToString();
ds2.tSoftware_Details.Rows[0][ds2.tSoftware_Details.fDatabaseTypeColumn] = TbxDatabase.Text.Trim();
ds2.tSoftware_Details.Rows[0][ds2.tSoftware_Details.fTecTypeColumn] = TbxTecType.Text.Trim();
LblMsg.Text = "تغییرات مورد نظر شما با موفقیت ذخیره شد.";
Clear();
BindGrid();
}
}

حالا مشکلم اینه که با این روش همه field ها حتی اون هایی که اجازه دارند خالی باشند (فیلدهای allow null) باید پر بشوند وگرنه روی خط مربوط به پر شدن آن فیلد error دریافت میکنم. بهترین راهکار برای حل این مشکل چیه؟

Rohollaes
دوشنبه 21 فروردین 1391, 13:19 عصر
استفاده از sp

niloofar21
دوشنبه 21 فروردین 1391, 13:41 عصر
استفاده از sp
؟؟ببخشین ولی به نظرتون این پاسخ میتونه به من کمکی بکنه ؟!!!!

Rohollaes
دوشنبه 21 فروردین 1391, 13:44 عصر
شما گفتین بهترین راهکار !!! من خودم به شخصه این طور کارهارو با sp پیاده سازی میکنم و هیچ مشکلی هم نداره

niloofar21
دوشنبه 21 فروردین 1391, 14:12 عصر
شما گفتین بهترین راهکار !!! من خودم به شخصه این طور کارهارو با sp پیاده سازی میکنم و هیچ مشکلی هم نداره

شما پست منو نخوندین ظاهرا !!!
ممنون فکر میکنم سایر دوستان اگه حوصله خوندن پست رو داشته باشند و البته حوصله جواب دادن لطف کنند و راهنماییم کنند .

Saman Hashemi
دوشنبه 21 فروردین 1391, 14:57 عصر
دوست عزیز این شیوه کد نویسی به صورت یه لایه تولید و توسعه و نگهداریش واقعا سخته بهت پیشنهاد میکنم حداقل اگه نمیخوایی از معماری های جدید استفاده کنی حداقل سه لایه بنویس...!
if(!string.IsEmptyOrNULL(TbxTecType.Text.Trim()){M yRow[ds2.tSoftware_Details.fTecTypeColumn] = TbxTecType.Text.Trim();}
else{MyRow[ds2.tSoftware_Details.fTecTypeColumn] =string.Empty;}

niloofar21
دوشنبه 21 فروردین 1391, 15:17 عصر
ممنون آقای هاشمی از پاسختون. پس در واقع بهتره که شیوه کد نویسی این قسمت ها را کاملا تغییر بدهم. چون در هر صورت باید قسمتهای زیادی تغییر کنند:اشتباه:
میشه یه نمونه از کدی که برای stored procedure مربوطه لازم هست را برام بذارین یا یه لینک از یه نمونه پروژه که بتونه تو این مورد بهم کمک کنه .ممنون میشم