PDA

View Full Version : سوال: عدم شناسایی ستون از گریدیو



titipop1
چهارشنبه 20 خرداد 1394, 22:24 عصر
درود دوستان
به یه مشگل برحوردم اگه دوستان کمک کنن ممنون میشم
توی اون خط که ارور میده میخوام بره توی یه فرم دیگه و مقدار یکی از ستون های گرید 1 رو با مقدار تکست باکس فرم حاضر مقایسه کنه و ........
کد و خطا :

asman.abi
چهارشنبه 20 خرداد 1394, 23:39 عصر
این خطا به خاطر اینه که DataGridView به احتمال مقدار دهی نشده. پس به همین دلیل ردیف اول ستون 4 هم وجود نداره. پس خطا میده. ابتدا مطمئن بشید که دیتا گرید مقدار دهی شده بعد چک کنید.

reza_ali202000
پنج شنبه 21 خرداد 1394, 00:00 صبح
تا زمانی که اون فرم لود نشه که نه گریدویو ساخته میشه و نه اطلاعاتی داخلش ریخته میشه.
حالا اینجا دوتا مسله پیش میاد.
1. اون فرم هنوز ساخته نشده که میتونید با public کردن فرم لود مورد نظر اول اون رو فرابخونین بعد این مقایسه انجام بشه.
2. اون فرم فرم باز هستش و این فرم داخل اون باز شده.
خوب برا این کار میتونی زمانی که این فرم رو میخای نمایش بدی owner این رو بنوسی this

Form1 frm = new Form1();
frm.Owner = this;

حالا بجای اینکه بخای فرم جدید بسازی از owner استفاده میکنی.

titipop1
پنج شنبه 21 خرداد 1394, 19:45 عصر
تا زمانی که اون فرم لود نشه که نه گریدویو ساخته میشه و نه اطلاعاتی داخلش ریخته میشه.
حالا اینجا دوتا مسله پیش میاد.
1. اون فرم هنوز ساخته نشده که میتونید با public کردن فرم لود مورد نظر اول اون رو فرابخونین بعد این مقایسه انجام بشه.
2. اون فرم فرم باز هستش و این فرم داخل اون باز شده.
خوب برا این کار میتونی زمانی که این فرم رو میخای نمایش بدی owner این رو بنوسی this

Form1 frm = new Form1();
frm.Owner = this;

حالا بجای اینکه بخای فرم جدید بسازی از owner استفاده میکنی.
دوست عزیز حق با شماست باید زمانیکه فرم فروش لود میشه فرم انبار هم همزمان لود بشه ولی فکر کنم فرم انبار باید تو پس زمینه اجرا بشه(جوری که دیده نشه)میشه در مورد اون کدی که فرمودین بگین که تو فرم فروش بنویسم یا تو فرم انبار
مرسی

titipop1
جمعه 22 خرداد 1394, 08:44 صبح
دوستان کسی نظری نداره؟

reza_ali202000
جمعه 22 خرداد 1394, 14:58 عصر
یه نمونه برنامه براتون میزارم امیدوارم بدردتون بخوره.
البته از صحبت هاتون بنظرم میاد اون فرم بعدش باز میشه.
یعنی نیازی به اونر فرم نیست.

titipop1
جمعه 22 خرداد 1394, 21:08 عصر
مهندس جان تو برنامه ازش استفاده کردم ولی ارور داد حالا اومدم و یه سازنده از فرم انبار در فرم فروش ایجاد کردم و با اون سازنده یه نمونه از فرم انبار ایجاد کردم که این ارور رو میده

reza_ali202000
شنبه 23 خرداد 1394, 00:28 صبح
نوع کانورت کردنتون مشکل داره و فراخونی فرم دیگه مشکل نداره.
داده هات از نوع عدد نیست و نمیتونه درست کانورت کنه. موس رو ببر روی value و Text ببین چه مقادیری داخلش نوشته شده.

titipop1
شنبه 23 خرداد 1394, 14:14 عصر
نوع کانورت کردنتون مشکل داره و فراخونی فرم دیگه مشکل نداره.
داده هات از نوع عدد نیست و نمیتونه درست کانورت کنه. موس رو ببر روی value و Text ببین چه مقادیری داخلش نوشته شده.
مهندس جان تیبل فروش(بزرگه) و تیبل انبار(کوچیکه) و کوئری مربوطه رو گذاشتم کد هم که هستش بیزحمت یه نگاه بندازید
مرسی

reza_ali202000
شنبه 23 خرداد 1394, 14:25 عصر
ببینید از لحاظ ساختاری جدول انبارتون مشکل داره. حتما حتما یه فیلد کلید براش در نظر بگیر. یه شماره انبار اتونامبر هم بزاری مشکلی نیست. که زمان آپدیت کردن نخوای اینجوری بنویسی و فقط از طریق یه فیلد جستجوکنی و آپدیت کنی.

مسئله بعدی اینه که ببین توی برنامت کجا ارور میده از لحاظ دیتا بیسی که اروری نمیبینم. حالا شما کاری که میکنی برنامه رو اجرا کن ببین مقادیری که بجای @Tedad میزاری چه عددی هست و ببین آیا با یک عدد ثابت این مشکل بازم وجود دارزه یا نه. یعنی بجای اینکه از تکس باکس یا دیتاگرید بگیری خودت دستی مثلا بزن 5 از توی کد نویسی.

زمانی که روی if خطا داد موس رو ببرید روی value ببینید چه چیزی مینویسه و همینطور روی text ببینید چه عددی داخلش نوشته شده. زمانی که null باشن یا عدد نباشن هرکدومش این خطا رو میده.

titipop1
شنبه 23 خرداد 1394, 14:36 عصر
مهندس مقادیری که نشون میده درسته

reza_ali202000
شنبه 23 خرداد 1394, 14:39 عصر
مراقب باشین که جدول شما float هست int نیستا! تعدادتون توی جدول فلوته ولی شما تبدیل به int میخواید انجام بدین. اینو هم درستش کنید بازم ببینید خطا میده.


if ((float.Parse( textBox1.Text) >(float) frm.dataGridView1.Rows[1].Cells[2].Value)

titipop1
شنبه 23 خرداد 1394, 14:45 عصر
با دستور شما همون خطا رو میده Specified cast is not valid

titipop1
شنبه 23 خرداد 1394, 14:48 عصر
مهندس جان عجیبه این قطعه که از انبار کسر میکنه جدا بصورت یه برنامه نوشتم جواب میده ولی همون دستورات رو که میارم تو این برنامه ارور میده
مهندس میخوایید بفرستم یه نگاه کنید؟

reza_ali202000
شنبه 23 خرداد 1394, 14:49 عصر
بفرستید ببینم مشکلش چیه.

titipop1
شنبه 23 خرداد 1394, 14:53 عصر
مهندس این قطعه همون کارو بدون خطا انجام میده
البته با این کوئری

UPDATE tbl_anbar
SET count = count - @Tedad
(WHERE (id = @id

reza_ali202000
شنبه 23 خرداد 1394, 15:03 عصر
الان مشکلی که نداره برنامتون. فقط کافیه یه شرط بزارین که textbox2 خالی نباشه.
حالا اونی که مشکل داره رو هم بفرستید ببینم مشکلش کجاشه.

titipop1
شنبه 23 خرداد 1394, 15:12 عصر
مهندس ایمیل میدین بفرستم

reza_ali202000
شنبه 23 خرداد 1394, 15:13 عصر
re.nasseri@yahoo.com

titipop1
شنبه 23 خرداد 1394, 15:18 عصر
مهندس آپلود نمیشه ایمیل میدین بفرستم خدمتتون

titipop1
شنبه 23 خرداد 1394, 15:31 عصر
مهندس فرستادم فقط فشرده است

reza_ali202000
شنبه 23 خرداد 1394, 16:04 عصر
به این شکل بنویسید درست میشه.


if (((float) frmMain.dataGridView1.Rows[0].Cells[4].Value > float.Parse( textBox3.Text)))


float dg = Convert.ToSingle(frmMain.dataGridView1.Rows[0].Cells[4].Value.ToString());
float ftxt=float.Parse( textBox3.Text);
if (dg > ftxt)

titipop1
شنبه 23 خرداد 1394, 16:38 عصر
مهندس جان باید نوع من سینگل میبودش؟
میشه توضیح بدین که این چی شدش قاعدتا نباید از نوع خطا بده چون بلاخره ما یه نوعی واسش تعریف کردیم
مرسی

reza_ali202000
شنبه 23 خرداد 1394, 16:44 عصر
ببینید چون مقدار داخل ولیو هم عدد هست و هم غیر عدد(.) برا همین نمیتونس خود ولیو رو تبدیل به فلوت کنه. لازم بود مقدار داخلشو تبدیل به فلوت کنه نه نوعشو.

titipop1
شنبه 23 خرداد 1394, 16:48 عصر
آقا کارت درسته ایول داری
مهندس جان یه پیام خصوصی دادم خدمتتون میخواستم ببینم چه پیشنهادی میدین
بازم ممنون