درود دوستان
به یه مشگل برحوردم اگه دوستان کمک کنن ممنون میشم
توی اون خط که ارور میده میخوام بره توی یه فرم دیگه و مقدار یکی از ستون های گرید 1 رو با مقدار تکست باکس فرم حاضر مقایسه کنه و ........
کد و خطا :
درود دوستان
به یه مشگل برحوردم اگه دوستان کمک کنن ممنون میشم
توی اون خط که ارور میده میخوام بره توی یه فرم دیگه و مقدار یکی از ستون های گرید 1 رو با مقدار تکست باکس فرم حاضر مقایسه کنه و ........
کد و خطا :
این خطا به خاطر اینه که DataGridView به احتمال مقدار دهی نشده. پس به همین دلیل ردیف اول ستون 4 هم وجود نداره. پس خطا میده. ابتدا مطمئن بشید که دیتا گرید مقدار دهی شده بعد چک کنید.
تا زمانی که اون فرم لود نشه که نه گریدویو ساخته میشه و نه اطلاعاتی داخلش ریخته میشه.
حالا اینجا دوتا مسله پیش میاد.
1. اون فرم هنوز ساخته نشده که میتونید با public کردن فرم لود مورد نظر اول اون رو فرابخونین بعد این مقایسه انجام بشه.
2. اون فرم فرم باز هستش و این فرم داخل اون باز شده.
خوب برا این کار میتونی زمانی که این فرم رو میخای نمایش بدی owner این رو بنوسی this
Form1 frm = new Form1();
frm.Owner = this;
حالا بجای اینکه بخای فرم جدید بسازی از owner استفاده میکنی.
دوستان کسی نظری نداره؟
یه نمونه برنامه براتون میزارم امیدوارم بدردتون بخوره.
البته از صحبت هاتون بنظرم میاد اون فرم بعدش باز میشه.
یعنی نیازی به اونر فرم نیست.
مهندس جان تو برنامه ازش استفاده کردم ولی ارور داد حالا اومدم و یه سازنده از فرم انبار در فرم فروش ایجاد کردم و با اون سازنده یه نمونه از فرم انبار ایجاد کردم که این ارور رو میده
نوع کانورت کردنتون مشکل داره و فراخونی فرم دیگه مشکل نداره.
داده هات از نوع عدد نیست و نمیتونه درست کانورت کنه. موس رو ببر روی value و Text ببین چه مقادیری داخلش نوشته شده.
ببینید از لحاظ ساختاری جدول انبارتون مشکل داره. حتما حتما یه فیلد کلید براش در نظر بگیر. یه شماره انبار اتونامبر هم بزاری مشکلی نیست. که زمان آپدیت کردن نخوای اینجوری بنویسی و فقط از طریق یه فیلد جستجوکنی و آپدیت کنی.
مسئله بعدی اینه که ببین توی برنامت کجا ارور میده از لحاظ دیتا بیسی که اروری نمیبینم. حالا شما کاری که میکنی برنامه رو اجرا کن ببین مقادیری که بجای @Tedad میزاری چه عددی هست و ببین آیا با یک عدد ثابت این مشکل بازم وجود دارزه یا نه. یعنی بجای اینکه از تکس باکس یا دیتاگرید بگیری خودت دستی مثلا بزن 5 از توی کد نویسی.
زمانی که روی if خطا داد موس رو ببرید روی value ببینید چه چیزی مینویسه و همینطور روی text ببینید چه عددی داخلش نوشته شده. زمانی که null باشن یا عدد نباشن هرکدومش این خطا رو میده.
مهندس مقادیری که نشون میده درسته
مراقب باشین که جدول شما float هست int نیستا! تعدادتون توی جدول فلوته ولی شما تبدیل به int میخواید انجام بدین. اینو هم درستش کنید بازم ببینید خطا میده.
if ((float.Parse( textBox1.Text) >(float) frm.dataGridView1.Rows[1].Cells[2].Value)
با دستور شما همون خطا رو میده Specified cast is not valid
مهندس جان عجیبه این قطعه که از انبار کسر میکنه جدا بصورت یه برنامه نوشتم جواب میده ولی همون دستورات رو که میارم تو این برنامه ارور میده
مهندس میخوایید بفرستم یه نگاه کنید؟
بفرستید ببینم مشکلش چیه.
مهندس این قطعه همون کارو بدون خطا انجام میده
البته با این کوئری
UPDATE tbl_anbar
SET count = count - @Tedad
(WHERE (id = @id
الان مشکلی که نداره برنامتون. فقط کافیه یه شرط بزارین که textbox2 خالی نباشه.
حالا اونی که مشکل داره رو هم بفرستید ببینم مشکلش کجاشه.
مهندس ایمیل میدین بفرستم
مهندس آپلود نمیشه ایمیل میدین بفرستم خدمتتون
مهندس فرستادم فقط فشرده است
به این شکل بنویسید درست میشه.
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)
مهندس جان باید نوع من سینگل میبودش؟
میشه توضیح بدین که این چی شدش قاعدتا نباید از نوع خطا بده چون بلاخره ما یه نوعی واسش تعریف کردیم
مرسی
ببینید چون مقدار داخل ولیو هم عدد هست و هم غیر عدد(.) برا همین نمیتونس خود ولیو رو تبدیل به فلوت کنه. لازم بود مقدار داخلشو تبدیل به فلوت کنه نه نوعشو.
آقا کارت درسته ایول داری
مهندس جان یه پیام خصوصی دادم خدمتتون میخواستم ببینم چه پیشنهادی میدین
بازم ممنون