PDA

View Full Version : سوال: تبث سطرهای گریدویو بعنوان سفارشات فاکتور ...



ghasem110deh
پنج شنبه 31 اردیبهشت 1394, 10:02 صبح
سلام به همه ...
واسه درج مقادیر دیتاگریدویو بعنوان سفارشات فاکتور کدای زیر رو زدم :
(توی دیتابیس ذخیره میکنه)
ولی حلقه تکرار میشه ، پس درج هم تکرار میشه ولی بخاطر دادن آیدی تکراری خطا میده ... اون موقع از حلقه خارج میشه !!!


void Insert_Factor()
{
var result = 0;
var result2 = 0;
try
{
result = new Free_Invoice_Bll().Insert(int.Parse(Txt_Costomer.T ext), int.Parse(Txt_Discount.Text), int.Parse(Txt_Payable.Text), Convert.ToDateTime(dateTimeSelector1.Value), Txt_Toz.Text.Trim());
if (result > 0)
{
if (dataGridView1.Rows.Count > 1)
{
for (int i = 0; i <= dataGridView1.Rows.Count - 1; i++)
{
string col1 = dataGridView1.Rows[i].Cells[0].Value.ToString();
string col2 = dataGridView1.Rows[i].Cells[1].Value.ToString();
string col3 = dataGridView1.Rows[i].Cells[2].Value.ToString();
string col4 = dataGridView1.Rows[i].Cells[3].Value.ToString();
string col5 = dataGridView1.Rows[i].Cells[4].Value.ToString();
result2 = new Free_Order_Bll().Insert(int.Parse(col1), col2, int.Parse(col3), int.Parse(col4), int.Parse(col5));
if (result2 > 0)
OK.ShowBox(@"! فاکتور ثبت شد
فاکتور با موفقیت ثبت شد", "ثبت");
}
}
}
}
catch
{
Error.ShowBox(@"! عملیات انجام نشد
لطفا از اتصال برنامه به بانک اطلاعاتی اطمینان حاصل نمایید", "خطا");
}
}


چطور درج مقادیر گریدویو رو از حلقه for خارج کنم ؟
الان اگه به اونجا هم برسه خطا میگیره ، یا هی درج رو تکرار مکینه ... از حلقه هم که خارج میکنم دیگه متغیرهای استرینگ رو نمیشناسه و public هم قبول نمیکنه !!!

کد من درآوردی از این بهتر نمیشه دیگه :لبخند:

ebrahim.rayatparvar
پنج شنبه 31 اردیبهشت 1394, 11:38 صبح
سلام
پیغام خطا چی میده؟

ghasem110deh
پنج شنبه 31 اردیبهشت 1394, 11:56 صبح
الان کار درج (هم هدر و هم سفارشات توی گریدویو) درست انجام میشه !
مشکل حلقه هستش که بعد از درج (اول) دوباره شروع به درج (بعدی) میکنه !؟ و بخاطر آیدی (شماره فاکتور) تکراری خطا میده (عکس ضمیمه)
.
.
.
اگه کدهای درج رو از حلقه ببرم بیرون دیگه اون متغیرهای استرینگ رو نمیشناسه (col1 تا 5)
و بصورت پابلیک هم قبول نمیکنه (طبیعی هست)

ebrahim.rayatparvar
پنج شنبه 31 اردیبهشت 1394, 12:11 عصر
دادا یه عکس از زمان اجرا برنامه قبل کلیک دکمه میدی زمانی که یک سطر داده پر کردی

ghasem110deh
پنج شنبه 31 اردیبهشت 1394, 12:37 عصر
اینم فرم : (ثبت فاکتور)


http://s3.picofile.com/file/8189558218/Factor_Form.png

ebrahim.rayatparvar
پنج شنبه 31 اردیبهشت 1394, 12:47 عصر
دادا کمی تیره میکردی عکسو که ما خوب نبینیم:لبخند:
کو عکست؟؟

ghasem110deh
پنج شنبه 31 اردیبهشت 1394, 13:08 عصر
عکس رو یه جای دیگه آپ کردم :)

MOHSEN1230
جمعه 01 خرداد 1394, 10:46 صبح
دوست غزیز من این مشکل را دارم ...
نمونه ای از کد دارید برایم بگذارید

davidrobert
جمعه 01 خرداد 1394, 12:24 عصر
ُلام من میدونم این خطا چی هستش این خطا از وجود سطر خالی آخر خبر میده و میخواد سطر خالی آخر رو هم ذخیره کنه چون داده نیست نمی تونه ذخیره کنه بخاطر همین خطا میده. برای اینکه با خطا مواجه نشه باید یک فرم دیگه برای قرار ده اطلاعات قرار بد و داده ها رو از اون دریافت و به فرم اصلی ارسال کنی ولی فرم اصلی دیتاگرید ویو نباید سطری اضافه داشته باشد جز داده ها.
خود من این خطا رو داشتم ولی به وسیله 2 تا فرم بر طرف کردم تو فرم ارسال کننده داده ها رو دادم و توفرم دریافت امدم گذینه های مربوط به دیتاگرید ویو که از ستون و خذف رو تیکش رو ورداشتم وقتی داده رو ارسال میکردم به فرم اصلی فقط داده ها اصلی می یومد و سطر خالی ایجاد نمیشود و برنامه خطا نمیداد.

MOHSEN1230
جمعه 01 خرداد 1394, 12:43 عصر
دوست عزیز فقط آخرین رکورد را ذخیره میکنه....
131504

davidrobert
جمعه 01 خرداد 1394, 13:10 عصر
با چه تکنولوژی کد نویسی میکنی. این کد که اطلاعات کل رو ذخیره میکنه و به آخر میرسه بخاطر سطر خالی آخر ستون هستش اگه ستون خالی آخر نباشه این ها رو هم درست ذخیره میکنه.بدون هیچ اشکالی
void Insert_Factor()
{
var result = 0;
var result2 = 0;
try
{
result = new Free_Invoice_Bll().Insert(int.Parse(Txt_Costomer.T ext), int.Parse(Txt_Discount.Text), int.Parse(Txt_Payable.Text), Convert.ToDateTime(dateTimeSelector1.Value), Txt_Toz.Text.Trim());
if (result > 0)
{
if (dataGridView1.Rows.Count > 1)
{
for (int i = 0; i <= dataGridView1.Rows.Count - 1; i++)
{
string col1 = dataGridView1.Rows[i].Cells[0].Value.ToString();
string col2 = dataGridView1.Rows[i].Cells[1].Value.ToString();
string col3 = dataGridView1.Rows[i].Cells[2].Value.ToString();
string col4 = dataGridView1.Rows[i].Cells[3].Value.ToString();
string col5 = dataGridView1.Rows[i].Cells[4].Value.ToString();
result2 = new Free_Order_Bll().Insert(int.Parse(col1), col2, int.Parse(col3), int.Parse(col4), int.Parse(col5));
if (result2 > 0)
OK.ShowBox(@"! فاکتور ثبت شد
فاکتور با موفقیت ثبت شد", "ثبت");
}
}
}
}
catch
{
Error.ShowBox(@"! عملیات انجام نشد
لطفا از اتصال برنامه به بانک اطلاعاتی اطمینان حاصل نمایید", "خطا");
}
}

ghasem110deh
جمعه 01 خرداد 1394, 15:15 عصر
ُلام من میدونم این خطا چی هستش این خطا از وجود سطر خالی آخر خبر میده و میخواد سطر خالی آخر رو هم ذخیره کنه چون داده نیست نمی تونه ذخیره کنه بخاطر همین خطا میده. برای اینکه با خطا مواجه نشه باید یک فرم دیگه برای قرار ده اطلاعات قرار بد و داده ها رو از اون دریافت و به فرم اصلی ارسال کنی ولی فرم اصلی دیتاگرید ویو نباید سطری اضافه داشته باشد جز داده ها.
خود من این خطا رو داشتم ولی به وسیله 2 تا فرم بر طرف کردم تو فرم ارسال کننده داده ها رو دادم و توفرم دریافت امدم گذینه های مربوط به دیتاگرید ویو که از ستون و خذف رو تیکش رو ورداشتم وقتی داده رو ارسال میکردم به فرم اصلی فقط داده ها اصلی می یومد و سطر خالی ایجاد نمیشود و برنامه خطا نمیداد.

یخورده بیشتر توضیح بده !
نمیشه برای خروج از حلقه از breack یا با شرط if result >0 از دستور exit for استفاده کرد !

rahgoshafan
جمعه 01 خرداد 1394, 16:17 عصر
کلا فاکتور مشکل برنامه نویسای تازه کاره :)

systam
جمعه 01 خرداد 1394, 22:57 عصر
سلام
حالا مقدار ها رو بدست اوردیم از گرید ویو چطوری sqlcommadn مقدار دهی کنیم

ghasem110deh
جمعه 01 خرداد 1394, 23:02 عصر
سلام
حالا مقدار ها رو بدست اوردیم از گرید ویو چطوری sqlcommadn مقدار دهی کنیم

تو این خط پاس داده شده به لایه BLL :

result2 = new Free_Order_Bll().Insert(int.Parse(col1), col2, int.Parse(col3), int.Parse(col4), int.Parse(col5));

بستگی به روش کدنویسی و تکنولوژی تون داره دیگه --> متغیر ها رو بجای ورودی مثلا تکست باکس هاست !
linq - EF - ADO یا ...

ebrahim.rayatparvar
شنبه 02 خرداد 1394, 09:59 صبح
سلام ghasem110deh جان.
من عکس برنامه رو دیدم. تو یه کاری بکن. رو گرید کلیک کن و از زبونه کوچک بالای گرید برای تنظیمات تیک Enable Adding بردارد.
(http://barnamenevis.org/member.php?330388-ghasem110deh)

ghasem110deh
شنبه 02 خرداد 1394, 21:39 عصر
سلام
اگه این کار رو بکنم که کاربر دیگه نمیتونه توی گریدویو اطلاعات رو وارد کنه !؟