PDA

View Full Version : مبتدی: عدم اجرای شرط برای حضور غیاب



babak6655
یک شنبه 20 اسفند 1391, 20:10 عصر
سلام
تو این برنامه میخوام اگه تیک حضور غیاب زده شده به یک فیلد خالی از حساب اون شخص یه واحد اضافه بشه
دوستان زحمت کشیدند یه کدی دادند ولی جواب نمیده

for (i = 0; i <= 20; i++)
{

if (Convert.ToBoolean (dataGridView1.Rows[i].Cells["h2"].Value) == true)
{


int temp = Convert.ToInt32(dt.Rows[i][2].ToString()) + 1;
SqlCommand objcom = new SqlCommand("insert into table_2 (k) values(temp)", con );


البته حلقه رو خودم گداشتم برا اینکه همون خونه درست پر بشه

فیلد حضور غیاب در sql از نوع bit هست وپیش فرضم true انتخاب کردم
حالا موندم چه کدی بنویسم جواب بده

اینم فرمم http://upload.tehran98.com/img1/8rnnjbcnjv1gnbnmsupi.jpg

babak6655
دوشنبه 21 اسفند 1391, 14:04 عصر
دوستانی هستند کمک کنند؟

babak6655
سه شنبه 22 اسفند 1391, 01:17 صبح
دوستان کدی ندارند که جواب بده؟

Tiam121
سه شنبه 22 اسفند 1391, 07:01 صبح
مشکلت دقیقا کجاست؟

برنامه رو تریس کن بعد دقیقا بگو از کجا درست کار نمیکنه

babak6655
چهارشنبه 23 اسفند 1391, 16:23 عصر
مشکلت دقیقا کجاست؟

برنامه رو تریس کن بعد دقیقا بگو از کجا درست کار نمیکنه

سلام
اول از همه اگر فقط یک checkbox علامت بزنی تو قسمت شرط پیغام خطا میده میگه باید حتما همه علامت دار بشن

حالا مثلا همه رو علامت دار میکنم میگه تو این خط پیغام خطا میده

int temp = Convert.ToInt32(dt.Rows[i][2].ToString()) + 1;


پیغامش هم اینه

http://upload.tehran98.com/img1/ia34rt805zoke5lkzz5.jpg

babak6655
یک شنبه 27 اسفند 1391, 15:57 عصر
هیچ کس نیست یک کمکی بکنه .آقایان مدیران علما و حرفه ای ها

veniz2008
یک شنبه 27 اسفند 1391, 18:14 عصر
هیچ کس نیست یک کمکی بکنه .آقایان مدیران علما و حرفه ای ها
سلام.
باید بیشتر دقت میکردید. کد درست هست ولی باید چندتا نکته رو رعایت کنید. اول اینکه اگر به سطر آخر از شکلی که گذاشتید دقت کنید می بینید که هیچ داده ای داخلش نیست و در واقع اون ردیف اصلا جزء داده ها نیست پس باید برداریش.(روی فلش کوچیک گرید کلیک و تیک گزینه های موجود را بردارید تا اون سطر بیهوده هم دیگه نمایش داده نشه). مورد بعدی باید چک کنید که آیا ستونی به نام h2 در گرید وجود داره یا نه. و در نهایت باید به تعداد سطرهای گرید عمل مقایسه انجام بشه.مثلا در شکل شما، 5 سطر داده داری ولی 21 بار عمل مقایسه رو انجام میدی. معلومه که خطا میده.
موفق باشید.

babak6655
یک شنبه 27 اسفند 1391, 19:25 عصر
سلام.
باید بیشتر دقت میکردید. کد درست هست ولی باید چندتا نکته رو رعایت کنید. اول اینکه اگر به سطر آخر از شکلی که گذاشتید دقت کنید می بینید که هیچ داده ای داخلش نیست و در واقع اون ردیف اصلا جزء داده ها نیست پس باید برداریش.(روی فلش کوچیک گرید کلیک و تیک گزینه های موجود را بردارید تا اون سطر بیهوده هم دیگه نمایش داده نشه). مورد بعدی باید چک کنید که آیا ستونی به نام h2 در گرید وجود داره یا نه. و در نهایت باید به تعداد سطرهای گرید عمل مقایسه انجام بشه.مثلا در شکل شما، 5 سطر داده داری ولی 21 بار عمل مقایسه رو انجام میدی. معلومه که خطا میده.
موفق باشید.

سلام
همه اینایی که گفتی بعد از این تاپیک درست کردم ولی بازم تو قسمت تعریف temp پیغام خطای بالا رو میده
حتی تو دیتا مقدار پیش فرض s رو صفر گرفتم

veniz2008
یک شنبه 27 اسفند 1391, 21:44 عصر
احتمالا اصلا چیزی داخل دیتاتیبل نباشه. کدتون رو اینطور بنویسید ببینید جوابش چی میشه :

if(dt.Rows,count > 0)
{
for (i = 0; i <= 20; i++)
{

if (Convert.ToBoolean (dataGridView1.Rows[i].Cells["h2"].Value) == true)
{


int temp = Convert.ToInt32(dt.Rows[i][2].ToString()) + 1;
SqlCommand objcom = new SqlCommand("insert into table_2 (k) values(temp)", con );
}
}
}
else
{
MessageBox.Show("هیچ داده ای موجود نیست");
}

C#‎_best_Programmer
یک شنبه 27 اسفند 1391, 21:54 عصر
عزیزم جدول تو یه فیلد ایدیم داره که بهش مقدار نمی دی :بوس:

babak6655
یک شنبه 27 اسفند 1391, 23:02 عصر
عزیزم جدول تو یه فیلد ایدیم داره که بهش مقدار نمی دی :بوس:

بهنام جان id خودش هر رکورد یکی میره جلو

babak6655
یک شنبه 27 اسفند 1391, 23:39 عصر
احتمالا اصلا چیزی داخل دیتاتیبل نباشه. کدتون رو اینطور بنویسید ببینید جوابش چی میشه :

if(dt.Rows,count > 0)
{
for (i = 0; i <= 20; i++)
{

if (Convert.ToBoolean (dataGridView1.Rows[i].Cells["h2"].Value) == true)
{


int temp = Convert.ToInt32(dt.Rows[i][2].ToString()) + 1;
SqlCommand objcom = new SqlCommand("insert into table_2 (k) values(temp)", con );
}
}
}
else
{
MessageBox.Show("هیچ داده ای موجود نیست");
}

تست کردم میگه هیچ داده ایی ذخیره نیست

منظور از داده رکورده؟
اگه داده نیست چطور دیتا گرید نشون میده؟

veniz2008
یک شنبه 27 اسفند 1391, 23:47 عصر
بله داده همون رکورده.
همون دیتاتیبلی که به گرید نسبت دادید رو چک کردید و گفت خالیه؟
شاید بعد از نسبت دادنش به گرید یا خالیش کردید یا اونو new کردید و با این کار از نو ساخته شده و داده ای داخلش نیست.

babak6655
دوشنبه 28 اسفند 1391, 00:17 صبح
بله داده همون رکورده.
همون دیتاتیبلی که به گرید نسبت دادید رو چک کردید و گفت خالیه؟
شاید بعد از نسبت دادنش به گرید یا خالیش کردید یا اونو new کردید و با این کار از نو ساخته شده و داده ای داخلش نیست.

نه بابا دیتا بسی چک کردم خالی نیستش
امکان داره چون اول ثبت نمیشه پیغام خطا میده؟

veniz2008
دوشنبه 28 اسفند 1391, 01:32 صبح
کدتون رو کامل بذارید. اینجوری نمیشه راهنمایی کرد.

babak6655
دوشنبه 28 اسفند 1391, 10:41 صبح
کدتون رو کامل بذارید. اینجوری نمیشه راهنمایی کرد.



http://uploadtak.com/images/q9331_test2.rar

veniz2008
دوشنبه 28 اسفند 1391, 10:59 صبح
از همه دوستان تازه کار خواهشا تقاضا میکنم که به این نوشته دقت کنند :
تو برنامه نویسی هیچ کاری خود به خود انجام نمیشه. اگر نگی MessageBox.Show تا آخر عمر هم پای سیستم بشینی هیچ پیغامی چاپ نمیشه.
دوست عزیز: وقتی چیزی داخل دیتاتیبل نمی ریزی و حتی اگر بریزی تو خط آخر formload میای و اونو new میکنی چه انتظاری از برنامه داری؟. اصلا نوشته های منو میخونی؟. توی پست 13 گفته بودم که آیا new نکردید (هر چند شما اصلا dt رو مقداردهی نکردی).
مشکل شما از پایه و مفاهیم هست که باید یاد بگیرید. برید و مطالعه کنید.
خدانگهدار شما.

C#‎_best_Programmer
دوشنبه 28 اسفند 1391, 12:46 عصر
اشتباه اشتباه ایدی هیچ و قت خود به خود نمی ره جلو اون وقتی میره جلو که از خود بانک اطلاعاتی رکوردارو وارد کنی دادشی:قلب:

veniz2008
دوشنبه 28 اسفند 1391, 13:03 عصر
اشتباه اشتباه ایدی هیچ و قت خود به خود نمی ره جلو اون وقتی میره جلو که از خود بانک اطلاعاتی رکوردارو وارد کنی دادشی:قلب:
چه ربطی داره؟
یعنی اگر من بخوام داخل #C رکورد اضافه کنم نمیتونم یه فیلد داشته باشم که خودش خودکار اضافه بشه؟
دوستان لطفا در جواب هاتون دقت بیشتری داشته باشید. هدف اینه که مطلب درست و مفیدی رو انتقال بدیم و لاغیر.