PDA

View Full Version : مشکل در آپدید یک فیلد از دیتا گرید ویو



ahmad000012
دوشنبه 05 دی 1390, 18:32 عصر
سلام توسط کدهای زیر تعدادی از فیلدهای دو جدول را در دیتا گرید ویو نمایش دادم
SqlConnection objConnection = new SqlConnection("Server=localhost;Database=anbar;integrated security=true;");
objConnection.Open();
string objCommand = "select employ.emid,employ.family,sabt.kid,sabt.dateout from employ,sabt where employ.emid=sabt.emid and employ.family='" + txtfamily.Text + "'";
SqlDataAdapter da = new SqlDataAdapter(objCommand, objConnection);
DataTable dt = new DataTable("employ");
da.Fill(dt);
dataGridView.DataSource = dt;
objConnection.Close();

حالا می خوام یک رکورد یا فیلد از این دیتا گرید را انتخاب کرده و با زدن یک باتون تاریخ سیستم در فیلد datein از جدول sabt درج بشه نمی دونم تابع آپدیت را کجا بنویسم
===
پ.ن : جدول sabt چهار فیلد emid,kid,dateout,datein را دارا می باشد.

ahmad000012
دوشنبه 05 دی 1390, 21:45 عصر
ببین دوست عزیز برنامه من یک برنامه انبار داری به سه جدول employ که جدول کارمندان شرکت است،جدول kala جدول کالاهای موجود در انبار است.
و یک جدول بهنام sabt برای ثبت امانت کالا ها به کارمندان که دارای چهارفیلد کد کارمند ،کد کالا ،تاریخ امانت کالا ،و تاریخ برگشت کالا است.
من تمام قسمتهای برنامه را درست کردم.
این برنامه وقتی که کالا امانت داده میشه کد کارمند،کدکالا،و تاریخ امانت دادن را ثبت میکنه(این قسمت هم درست شده)
حالا با کد بالا که گذاشتم با جستجوی نام خانوادگی کارمند مورد نظر از ارتباط دو جدول employ و sabt که باهم فیلد کد کارمند(emid) را اشتراک دارند تعدادی فیلد را در دیتا گرید ویو نمایش دادم که کالا هایی می باشد که آن کارمند به امانت برده ،حالا می خوام با انتخاب اون کالا از دیتاگرید ویو و زدن یک کلید تاریخ برگشت هم ثبت بشه.
===
اگه فقط بخوام جدول ثبت را نمایش بدم و اون را آپدیت کنم زیاد سخت نیست ،اما تو این جدول فقط کد کارمند است و نام خانوادگی او نسیت فکر می کنم جالب نیست.

sayvan
دوشنبه 05 دی 1390, 22:05 عصر
دوست عزیز شما میتونید با استفاده از کد کارمند که در هر دوجدول مشترک است عمل جستجو انجام بشه که منطقی تر ه چون ممکن است در جداول چن تا نام خانوادگی اتکراری موجو باشه
دوماً تاریخ بازگشت رو از روی چه چیزی و بر اساس چی حساب کنه و ثبت کنه؟

ahmad000012
دوشنبه 05 دی 1390, 22:24 عصر
در مورد تاریخ شما فرض کن که از سیستم تاریخ همون لحظه را میگیره یا از یک تکست باکس میگیره .
در مورد کد کارمند هم که شاید کسی کد کارمندی یادش نباشه.در ضمن تو جستجویی که من انجام دادموجواب هم گرفتم
هم کد کارمند هم نامش و هم کد کالا مورد نظر در دیتا گرید ویو نمایش داده میشه و کاربر می تونه همون سطر مورد نظر که هم کد کاربری و هم کد کالا در آن است انتخاب کنه و بعد از زدن کلیدی تاریخ بازگشتش ثبت شه
=====
البته اگه شما راه بهتری دارید کامل توضیح بدید
-----
لطفا کمک کنید من این پروژه را باید فردا تحویل بدم همین قسمتش فقط مونده

sayvan
دوشنبه 05 دی 1390, 23:01 عصر
دو تا متغییر عمومی از نوع رشته تعریف میکنی و در رویداد کلیک دیتا گرید
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
//در صورتی که بروی ردیفها کلیک نشود خطا میدهد دستور ترای کچ برای رفع این مشکل
try
{
/* 1 متغییر عمومی*/
s1 = dataGridView1.Rows[e.RowIndex].Cells["کد کاربری "].Value.ToString();
/* 2 متغییر عمومی*/
s2 = dataGridView1.Rows[e.RowIndex].Cells["کد کارمند "].Value.ToString();
}
catch { }
}

بعد رو دکمه آپدیتش میکنی
SqlConnection cn = new SqlConnection("Server=localhost;Database=anbar;integrated security=true;");
SqlCommand com = new SqlCommand();
com.Connection = cn;
com.CommandText = "update sabt set datein=@datein where emid= '" + s1 + "' and kid= '" + s2 + "' ";
com.Parameters.Add("@datein", txtdate.Text);
if (!(cn.State == ConnectionState.Open))
cn.Open();
com.ExecuteNonQuery();
cn.Close();

ahmad000012
دوشنبه 05 دی 1390, 23:22 عصر
آقا دمت گرم خیلی آقایی
من تقریبا این کد را نوشته بودم اما try , catch نداره این دستور چگونه از خطا جلوگیری میکنه
و همچنین در آپدیت از kid استفاده نمی کردم
برنامه خطا نمی داد اما جواب هم نمی داد
دمت گرم با این کمکت

ahmad000012
دوشنبه 05 دی 1390, 23:26 عصر
راستی نمیشه کاری کرد که تو دیتا گرید ویو نام کالا را هم از جدول کالا نمایش دهد.

sayvan
دوشنبه 05 دی 1390, 23:38 عصر
خواهش میکنم رویداد دیتا گرید رو تصحیح کردم اشتباه شده بود تو این رویداد بنویسش dataGridView1_CellClick
چرا نمیشه تو همون دستور Select
string objCommand = "select نام کالا ,employ.emid,employ.family,sabt.kid,sabt.dateout from جدول کالا,employ,sabt where employ.emid=sabt.emid and جدول کالا.kid=sabt.kid and employ.family='" + txtfamily.Text + "'";

اگر خطایی داشت در خدمتیم

babakdarabi
سه شنبه 06 دی 1390, 00:32 صبح
اسم ستون ها و جداول پایگاه داده فارسی هستن؟







__________________________________________________ __
نرم افزار مدیریت آموزشگاه (http://fanaa.ir/tabid/288/Default.aspx)

sayvan
سه شنبه 06 دی 1390, 06:47 صبح
سلام
نه فارسی نیستند اونو مثال زدم شما میتونید وقتی که اطلاعاتتون رو در دیتا گرید ویو نمایش دادین هدر ستونارو فارسی کنین
با این دستور
dgv.Columns[شماره ستون یا نام ستون مورد نظر].HeaderText = "نام";