PDA

View Full Version : مشکل در ثبت فاکتور



golemaryam_1983
جمعه 20 خرداد 1390, 17:43 عصر
سلام به همه دوستان

من یه فرم فاکتور دارم که وقتی می خواد جمع نهایی فاکتور رو ثبت کنه تو پایگاه اونو تو یه سطر خالی سیو میکنه من می خوام توی سری که اخرین کالا وارد شده سیو بشه نمی دونم مشکلش کجاست.
اگه از دوستان کسی میتونه منو راهنمایی کنه ممنون میشم.

با تشکر

masoudmok
جمعه 20 خرداد 1390, 17:51 عصر
بهنره کدتو بذاری که منظورتو متوجه بشیم !!!

golemaryam_1983
جمعه 20 خرداد 1390, 18:07 عصر
با تشکر این کد ثبت و محاسبه هست. البته من یکسری تغییرات هم دادم ولی مشکل حل نشد.




SqlCommand com1 = new SqlCommand("insert into faktor (code,name,codekala,namkala,tedadkala,gheymatkala, gheymatkol,sum,date)"
+ " values ('" + Convert.ToInt32(textBox1.Text) + "' , '" + textBox2.Text + "' , '" + Convert.ToInt32(textBox3.Text) + "' ,"
+ " '" + textBox4.Text + "' , '" + Convert.ToInt32(textBox5.Text) + "', '" + Convert.ToInt32(textBox6.Text) + "',"
+ " '" + Convert.ToInt32(textBox14.Text) + "','" + textBox13.Text + "','" + textBox7.Text + "') ", con);
com1.Connection.Open();
com1.ExecuteNonQuery();
com1.Connection.Close();

MessageBox.Show("اطلاعات ثبت شد");

SqlDataAdapter sda = new SqlDataAdapter("select codekala 'کد كالا',namkala 'نام',tedadkala 'تعداد ',gheymatkala ' قیمت کالا' ,"
+ " gheymatkol'قیمت کل ',sum'جمع فاکتور' from faktor where code='" + Convert.ToInt32(textBox1.Text) + "' and date='" + textBox7.Text + "' ", con);
ds.Clear();
sda.Fill(ds, "faktor");

int sum = 0;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
sum += Convert.ToInt32(dataGridView1.Rows[i].Cells[4].Value);

}
textBox8.Text = sum.ToString();

double div;
div = 0.05;
textBox13.Text = Convert.ToString((Convert.ToInt32(textBox8.Text) - (Convert.ToInt32(textBox8.Text) * div)));

}

jigily
شنبه 21 خرداد 1390, 10:20 صبح
ميشه يك مقدار واضح تر توضيح بدي چي ميخواي؟

golemaryam_1983
شنبه 21 خرداد 1390, 10:43 صبح
سلام دوست عزیز تاحدودی کد رو درست کردم الان کد بالا اون کاری رو که می خوام انجام میده ولی مشکل اینجاست که اولین سطر رو جمع نمیزنه یعنی فرم من به این صورت هستش که وقتی که کالا رو وارد میکنم و ثبت میشه همزمان جمع فاکتور رو حساب میکنه حالا فرض کنید من یک کالا رو خریداری میکنم وقتی رو دکمه ثبت میزنم تا قبل از اینکه داده وارد پایگاه بشه و بعد هم در دیتا نمایش داده بشه میاد و محاسبه رو انجام میده بهمین دلیل همشه اولین سطرم صفر بوده یا هست حالا نباید به این صورت باشه اگه من یک کالا خریدای میکنم باید قیمت همون کال رو هم نمایش بده درصورتی که صفر میشه.

من تصویر فرم فاکتور رو ضمیمه میزارم که بهتر من رو متوجه بشید.

http://www.up.iranblog.com/images/ei8c6quaumennb5f1pdr.jpg



با تشکر

Directx
یک شنبه 22 خرداد 1390, 22:37 عصر
حلقه ی for کدتون رو به این شکل اصلاح کنید

int sum = 0;
DataTable dt = ds.Tables["faktor"];
foreach (DataRow row in dt.Rows)
{
sum += row.Field<int>(4);
}
textBox8.Text = sum.ToString();

zarrinnegar
یک شنبه 22 خرداد 1390, 23:14 عصر
دوست عزیز
نمیدونم چقدر با sql آشنا هستی
الان دیگه از این کارها نمیکنن
میان توی sql یک trigger مینویسن که وقتی هر رکوردی به جدول اضافه شد مقدار اون را در جدول دیگه تغییر میده و برنامه نویس رو راحت میکنه

اگه این روش رو استفاده کنی بهتره و client درگیر محاسبه نمیشه و کد برنامه هم کمتر میشه
راهنمایی بیشتر نکردم چون نمیدونم چقدر به sql مسلط هستی ولی ارزشش رو داره یه خورده اطلاعات sql خودتو تقویت کنی

golemaryam_1983
دوشنبه 23 خرداد 1390, 01:33 صبح
حلقه ی for کدتون رو به این شکل اصلاح کنید

int sum = 0;
DataTable dt = ds.Tables["faktor"];
foreach (DataRow row in dt.Rows)
{
sum += row.Field<int>(4);
}
textBox8.Text = sum.ToString();

ممنونم دوست عزیز ولی تغییری نکرد.

golemaryam_1983
دوشنبه 23 خرداد 1390, 01:34 صبح
دوست عزیز
نمیدونم چقدر با sql آشنا هستی
الان دیگه از این کارها نمیکنن
میان توی sql یک trigger مینویسن که وقتی هر رکوردی به جدول اضافه شد مقدار اون را در جدول دیگه تغییر میده و برنامه نویس رو راحت میکنه

اگه این روش رو استفاده کنی بهتره و client درگیر محاسبه نمیشه و کد برنامه هم کمتر میشه
راهنمایی بیشتر نکردم چون نمیدونم چقدر به sql مسلط هستی ولی ارزشش رو داره یه خورده اطلاعات sql خودتو تقویت کنی

ممنونم راستش اشنایی زیادی ندارم با sql و c# چون مبتدی هستم.
اگه امکانش هست در موردش توضیح بدید شاید بتونم استفاده کنم.

با تشکر