PDA

View Full Version : ذخیره رکوردهای دیتاگرید در بانک



mohammad2407
چهارشنبه 04 اردیبهشت 1392, 01:11 صبح
سلام دوستان عزیز من با کد زیر اطلاعات از تکس باکس ها میگیرم و بعد میریزم در dataGridView

string[] row = { namberfanif.Text, price.Text, pricef.Text, codetype.Text, kalaname.Text,pricekool.Text };
dataGridView1.Rows.Add(row);

حالا یک دکمه دارم میخوام وقتی روی دکمه کلیک میکنم تمام رکورد هایی که در dataGridView هست بره در یک جدول ذخیره بشه

خواهشا کد ADO.NET قرار ندید فقط لینک (LINQ)

Mahmoud.Afrad
پنج شنبه 05 اردیبهشت 1392, 13:32 عصر
اول یک تراکنش ایجاد میکنید. در تراکنش اول هدر فاکتور و بعد با یک حلقه اقلام فاکتور رو ثبت میکنید. در صورتی که کار موفقیت آمیز باشه تراکنش commit میشه و در صورت بروز خطا rollback . در انتها هم کانکشن بسته و تراکنش dispose میشه.
مثال:

try
{
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();

// ثبت هدر فاکتور
// ...

// ثبت اقلام فاکتور
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
// به ازای هر سطر یک شئ از کلاس مدل اقلام ساخته
// و مقداردهی میکنید
Tbl t = new Tbl();
t.Name = Convert.ToString(dataGridView1.Rows[i].Cells[0].Value);
t.num = Convert.ToInt32(dataGridView1.Rows[i].Cells[2].Value);
db.Tbls.InsertOnSubmit(t);
}

db.SubmitChanges();
db.Transaction.Commit();
MessageBox.Show("فاکتور ثبت شد");
}
catch (Exception ex)
{
db.Transaction.Rollback();
MessageBox.Show(ex.Message, "اشکال در ثبت فاکتور");
}
finally
{
db.Transaction.Dispose();
db.Connection.Close();
}

kordestan
پنج شنبه 05 اردیبهشت 1392, 14:58 عصر
سلام دوست عزیز
چرا شما از این روش استفاده نمیکنی : همزمان با وارد کردن اطلاعاتت درون تکست باکس بازدن دکمه هم ذخیره بشه هم تو دیتا گرید ویو نمایش داده بشه فک کنم اینجوری بهتر باشه اینم کدش :


var qurey=(from p in databadsename.tablename selct p);
qurey.name=namberfanif.Text;
.
.
.
.
qurey.pricekol=pricekool.Text;
databasename.submitchange();
dtagradeview1.datasurce=qurey;

mohammad2407
پنج شنبه 05 اردیبهشت 1392, 23:10 عصر
اقا محمود این یعنی چی ؟

// به ازای هر سطر یک شئ از کلاس مدل اقلام ساخته // و مقداردهی میکنید


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

شی db در سطح کلاس تعریف کردم


try
{
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();

// ثبت هدر فاکتور
H_factoor tb = new H_factoor();
var H_factoor_query = db.H_factoors;
tb.date = txtdate.Text;
tb.numberpfactoor = txtnumberpfactoor.Text;
tb.numberfactor = txtnumberfactoor.Text;
tb.manba = commanba.Text;
db.H_factoors.InsertOnSubmit(tb);
// ثبت اقلام فاکتور
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{

// به ازای هر سطر یک شئ از کلاس مدل اقلام ساخته
// و مقداردهی میکنید
factoor tb_f = new factoor();
db.factoors.InsertOnSubmit(tb_f);
}

db.SubmitChanges();
db.Transaction.Commit();
PMessageBox.Show("فاکتور خرید با موفقیت ثبت شد", "پیام سیستم");
}
catch (Exception ex)
{
db.Transaction.Rollback();
MessageBox.Show(ex.Message, "اشکال در ثبت فاکتور");
}
finally
{
db.Transaction.Dispose();
db.Connection.Close();
}

Mahmoud.Afrad
پنج شنبه 05 اردیبهشت 1392, 23:19 عصر
پراپرتی های tb_f را مقداردهی نکردید. باید با مقادیر سلول های سطر i ام بهش مقدار بدید.
مثال:

for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
// به ازای هر سطر یک شئ از کلاس مدل اقلام ساخته
// و مقداردهی میکنید
Tbl t = new Tbl();
t.Name = Convert.ToString(dataGridView1.Rows[i].Cells[0].Value);
t.num = Convert.ToInt32(dataGridView1.Rows[i].Cells[2].Value);
db.Tbls.InsertOnSubmit(t);
}

mohammad2407
جمعه 06 اردیبهشت 1392, 02:09 صبح
اقا محمود من الان یک فیلد دارم که داخل اون از قبل عدد 4 ثبت شده حالا میخوام هر چی در تکس باکس نوشتم بره به اون فیلد اضافه کنه

برای تعداد کالا میخوام

مثلا:

کتاب آموزش C#‎.net تعداد 50

دو ماه بعد از دوباره از همین کتاب من خریدم ولی این دفه 20 تا گرفتم میخوام به شکل زیر اون رکورد تغییر کنه

کتاب آموزش C#‎.net تعداد 70

Mahmoud.Afrad
جمعه 06 اردیبهشت 1392, 10:21 صبح
همونطور که برای مبلغ کل گفتم ، این کار را نباید انجام بدید. فرض کنید که یک جنس رو امروز میخرید n تومن و همون جنس رو فردا میخری m تومن، خب حالا هر فاکتور باید جدا ثبت بشه تا در صورت نیاز به قیمت خرید و همچنین برای اینکه بتونی برای هر کالا(با قیمت خرید متفاوت) بتونی قیمت فروش رو تعیین کنی و هنگام فروش بین جنس ارزان خرید و گران خرید تمایز قائل بشی.
برای اینکه تعداد کل از یک جنس بدست بیاد باید تعداد اون جنس از کل فاکتورها رو جمع بزنی. اگر از این تعداد کل تعداد فروش رفته ها رو کم کنی تعداد باقیمانده بدست میاد. (مقادیر وابسته مثل تعداد کل ، مبلغ کل ، مبلغ بدهی و امثالهم رو میشه براساس مقادیر دیگه بدست آورد)

mohammad2407
جمعه 06 اردیبهشت 1392, 15:17 عصر
اقا محمود درست میگی . کاملا

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

چون من یک تیبل دارم که کل انبار هست

و باید وقتی فاکتور خرید وارد میکنم و تعداد کالا بره به تعداد اون کالا در انبار اضافه کنه

مثلا

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

با یک فاکتور خرید من 10 تای دیگه از اون مودم میخرم

پس باید بره بشه 15 تا در انبار