PDA

View Full Version : طریقه ضرب یک شماره در یک ستون دیتاگرید ویو در سی شارپ



eletcomp
پنج شنبه 04 اردیبهشت 1393, 20:00 عصر
با سلام
من با دستور insert یک کوئری نوشتم و توسط ان کوئری: اطلاعاتی را که در تکس باکس وارد می شود را در بانک ذخیره کردم!! تا اینجا اسان و ساده هست!!
ولی مشکل از اینجا شروع میشه که : میخوام زمانی که یک عدد را وارد می کنم مثل 12: ان عدد در یک عدد دیگه ضرب بشه مثل 3 :البته این عدد توسط خودمان باید تعیین بشه که چند باشه!! خلاصه میخوام حاصل ضرب 2 عدد که میشه (3*12)=36 در سلول بانک ذخیره بشود!! یعنی 36 ذخیره بشود نه 12 !!! و در اخر در دیتاگرید ویو هم نمایش داده بشود!!
روش ado.net و sql command میخوام باشه!!
لطفا راهنمایی کنید!

سپاس

mehrdad.ghorbaniyan
پنج شنبه 04 اردیبهشت 1393, 20:14 عصر
خب اینکه کاری نداره.همون موقع که داری insert عملیات ضرب رو انجام بده و ذخیره کن.اگه از textboc عدد دوم رو مخونی باید تبدیل کنی به عدد و بعد ضرب کنی

eletcomp
پنج شنبه 04 اردیبهشت 1393, 20:25 عصر
ممنون دوست عزیز: لطفا بیشتر راهنمایی کن!! این کد درج من هست!! کجاش باید عملیات ضرب اضافه بشود؟ اینجا میخوام مقادیر فیلد id در عدد3 ضرب بشود!!



SqlCommand cmd = new SqlCommand("insert into sum(id,name,lastname)values('"+textBox1.Text+"','"+textBox2.Text+"','"+textBox3.Text+"')",cn);
cmd.ExecuteNonQuery();
settable();

mehrdad.ghorbaniyan
پنج شنبه 04 اردیبهشت 1393, 20:30 عصر
به این شکل :

SqlCommand cmd = new SqlCommand("insert into sum(id,name,lastname)values('"+(int.parse(textBox1.Text)*3)+"','" +textBox2.Text+"','"+textBox3.Text+"')",cn);

cmd.ExecuteNonQuery();
settable();

eletcomp
پنج شنبه 04 اردیبهشت 1393, 21:37 عصر
ممنون دوست عزیز:جواب داد:لبخند:یک دنیا تشکر
یک سئوال دیگه داشتم لطفا راهنمایی کن!
اگر بخوام مقادیر فیلد id طبق کد اول در سلول ذخیره بشه و بعد ضرب درونش انجام بشه ! چطور باید عمل کرد!! مثلا طبق کد بالا میخوام مقدار3 توی قسمت id ذخیره بشود سپس فیلد name مقدار اش 3 برابر یعنی 9 بشود!!
ایا چنین امکانی وجود داره؟
سپاس

eletcomp
پنج شنبه 04 اردیبهشت 1393, 22:57 عصر
دوستان کسی نیست راهنمایی کنه!!
بزارید قضیه را به طور دیگه ای بگم!!
میخوام زمانیکه در قسمت ضریب سهام: ضریب را نوشتم فیلد سهام در ضریب ضرب بشود و در سلول ضریب سهام در دیتاگرید نمایش داده بشود!!
ایا راهی وجود داره؟؟
در اینجا تکس باکس 2 را در تکس باکس 3 ضرب کردم ولی جواب نداد!!


("insert into sum(id,name,lastname)values('"+(int.parse(textBox1 .Text)*3)+"','" +textBox2.Text+"','"+(textBox3.Text)*(textBox2.Text)+"')",cn);


سپاس

mehrdad.ghorbaniyan
جمعه 05 اردیبهشت 1393, 09:41 صبح
سلام.خواهش میکنم.دوست عزیز تو برنامه نویسی باید فکر کنی.اگه تا به یه مشکلی میخوری سریع بیای اینجا و مشکلتو بگی بعد نمتونی خودت یه برنامه را بنویسی.نصیحت نبودا.بدت نیاد.:لبخند:
جواب : ببین textbox از نوع رشته است و اگر بخوایم عملیات ضرب رو انجام بدیم نمیتونه که بیاد رشته را با رشته دیگه ضرب کنه.باید دو تا textbox رو تبدیل به عدد کنی بعد ضرب کنه و هر عملات رو بسته به الویتش بیا داخل پرانتز بذار.پس اون کارت اشتباه است.به شکل زیر تبدیل به عدد کن :
((int.parse(textBox3.Text))*(int.parse(textBox2.Te xt)))
موفق باشی

eletcomp
جمعه 05 اردیبهشت 1393, 09:51 صبح
ممنون داداش: اینکاری را که گفتی انجام دادم ولی نمیدونم چرا ارور میده!!!


SqlCommand cmd = new SqlCommand("insert into tblgharz(bedehi,saham,sahamz2)values('" + textBox1.Text + "','" + (Int32.Parse(textBox2.Text)) * (Int32.Parse(textBox3.Text)) + "') ", cn);
cmd.ExecuteNonQuery();
settable();

mehrdad.ghorbaniyan
جمعه 05 اردیبهشت 1393, 10:21 صبح
فکر کنم دستور insert رو اشتب نوشتی.مطمثنی فیلدهایی که وارد کردی همینه ؟ اسمشون یا تعدادشون و .... را چک کن.ارور کاری به اون ضربه نداره

mehrdad.ghorbaniyan
جمعه 05 اردیبهشت 1393, 10:23 صبح
داداش ؟ شما سه تا فیلد تو insert معرفی کردی ولی دوتا مقدار داری میدی.پس مقدار سوم رو از کجا بیاره ؟

eletcomp
جمعه 05 اردیبهشت 1393, 10:44 صبح
ممنون داداش:یک راه خیلی بهتر را برای ضرب 2 ستون پیدا کردم(از طریق کوئری)!! اگه جواب نداد میام روی همین کار می کنم!!
سپاس

eletcomp
جمعه 05 اردیبهشت 1393, 11:03 صبح
دوست عزیز: به مشکل بر خوردم!!:افسرده:
میخوام 2 تا ستون را در هم ضرب و نتیجه را در ستون سوم بریزم!!! توی یک سایت خارجی دیدم که گفته که از متد update باید استفاده کرد!! البته توی sql server این کد را نوشتم و به راحتی جواب داد ولی توی سی شارپ کلا ادم هنگ می کنه!! با نوشتن فرمت اش مشکل دارم!! لطفا راهنمایی کن!

کد sql


UPDATE tblgharz SET bedehi=saham*sahamz2

توی سی شارپ چون تکس باکس میاد وسط ادم قاطی می کنه!!
الان میخوام تکس باکس 2 در تکس باکس 3 ضرب بشود و نتیجه اش در سلول total ریخته بشود!!!


string str_sql = "update tblgharz2 set total=" + textBox2.Text + ",Week='" + textBox3.Text + "',;
SqlCommand cmd = new SqlCommand(str_sql, cn);
cn.Open();
cmd.ExecuteNonQuery();


سپاس

mehrdad.ghorbaniyan
جمعه 05 اردیبهشت 1393, 11:22 صبح
داداش من فرمت کلی ضرب رو گفتم.تو برا اینکه قاطی نکنی قبل از اینکه update کنی بیا ضرب رو انجام بده بعد داخل یه متغیر بریز و بعد اون متغیرو تو ستون سوم بریز

eletcomp
جمعه 05 اردیبهشت 1393, 11:31 صبح
ممنون داداش گلم از راهنمایی ات:من چون بسیار مبتدی هستم قاطی می کنم!!:گیج:
شما حرفه ای هستید دیگه!! :قلب:
من چطور باید متغیر را توی ستون سوم بریزم!!؟؟؟ این اخرین سئوال من هست!! لطفا اگر کد اش میدانی قرار بده!! یا بیشتر راهنمایی کن!!
سپاس

mehrdad.ghorbaniyan
جمعه 05 اردیبهشت 1393, 12:16 عصر
دادا میخوای ستون اول و دوم را بخونی و ضرب کنی و داخل ستون سوم بریزی ؟

eletcomp
جمعه 05 اردیبهشت 1393, 12:30 عصر
بله به وسیله کوئری میخوام باشه!!!


UPDATE tblgharz SET bedehi=saham*sahamz2
این دستور را توی sql server بدون دردسر اجرا کردم!! ولی توی سی شارپ چون عناصر دیگه مثل تکس باکس میان وسط ادم نمیدوند چطور کد بنویسد!!
سپاس

mehrdad.ghorbaniyan
جمعه 05 اردیبهشت 1393, 12:38 عصر
خب ببین بهتره sqldatareader استفاده کنی و فیلد اول و دوم را بخونی و ضرب کنی و update کنی .م مثل کد زیر :

string str_sql = "SELECT num1,num2 total where id=12";
SqlCommand cmd = new SqlCommand(str_sql, cn);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
int num1 = dr.GetInt32(0);
int num2 = dr.GetInt32(1);
int result = (num1 * num2);

UPDATE tblgharz SET bedehi="+result+" where id=12
}

eletcomp
جمعه 05 اردیبهشت 1393, 12:49 عصر
ممنون داداش گلم:قلب::
جسارتا فقط یک سئوال!! شاید سئوالم برای شما خنده دار باشه ولی چون چند وقته برنامه نویسی کار نی کنم :از ذهنم بعضی مسائل پریده!!
1.الان num1 و num2 برای چی هست؟؟؟ ایا این دو به تکس باکس نسبت داده شده هست؟؟؟
2. شرط where id=12 ایا حتما باید باشد؟؟
سپاس

mehrdad.ghorbaniyan
جمعه 05 اردیبهشت 1393, 13:02 عصر
ممنون داداش گلم:قلب::
جسارتا فقط یک سئوال!! شاید سئوالم برای شما خنده دار باشه ولی چون چند وقته برنامه نویسی کار نی کنم :از ذهنم بعضی مسائل پریده!!
1.الان num1 و num2 برای چی هست؟؟؟ ایا این دو به تکس باکس نسبت داده شده هست؟؟؟
2. شرط where id=12 ایا حتما باید باشد؟؟
سپاس

خواهش میکنم.ن طوری نیست.من خودمم بعضی موقع ها یادم میره
ببین num1 همون فیلد اول و num2 همون فیلد دوم که قراره با هم ضرب بشه و bedehi هم ستون سوم که قراره حاصلضرب داخلش ریخته بشه.اون شرط هم من همینطوری گذاشتم که بدونی شرط هم میخواد چون اگه شرط نذاری که روی همه ی رکوردهه اعمال میشه.امیدوارم فهمیده باشی و مشکلت حل بشه

eletcomp
جمعه 05 اردیبهشت 1393, 13:40 عصر
دوست عزیز ممنون: نظرت در مورد این کد چی هست؟؟ ایا شبیه کد خودت هست؟؟


string query = "SELECT Qty,Price FROM Bill";
OleDbDataAdapter dAdapter = new OleDbDataAdapter(query, DBconn);
DataTable dtSource = new DataTable();
dAdapter.Fill(dtSource);
dtSource.Columns.Add("3rdColumn");
foreach (DataRow dr in dtSource .Rows)
{
dr["3rdColumn"]= Convert.ToInt32(dr["Qty"]) * Convert.ToInt32(dr["Price"]);
}

mehrdad.ghorbaniyan
جمعه 05 اردیبهشت 1393, 13:49 عصر
اره خوبه.میشه همه جوری نوشت.من فرمت کلیشو گقتم

eletcomp
جمعه 05 اردیبهشت 1393, 14:05 عصر
متشکر: راستی یک سئوال دیگه : ایا راهی وجود داره که اطلاعات :منظورم ارقام مثل 10000 به صورت سه رقم سه رقم جدا بشود!!؟؟ توی دیتاگرید و توی بانک مان ؟؟؟ برای تمیزی کار میخوام!!!
سپاس

eletcomp
جمعه 05 اردیبهشت 1393, 18:17 عصر
دوست عزیز سلام: ان کدی که بالا قرار دادم را از یک سایت خارجی گرفتم متاسفانه کار نکرد!!! میخوام روی کد شما کار کنم:امیدوارم برای شما جواب بده !! ولی قبلش چند تا سئوال داشتم لطفا راهنمایی کن!!



string str_sql = "SELECT num1,num2 total where id=12";

الان دستور select شما ایا درست هست!!؟ البته جسارت نشود!!! فرمت کلی اش select fileld from table مگه نیست!!!




UPDATE tblgharz SET bedehi="+result+"where id=12
این کد را باید دقیقا کجا نوشت!! ایا کد ها پشت سر هم هستند؟؟؟

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

سپاس

mehrdad.ghorbaniyan
جمعه 05 اردیبهشت 1393, 18:58 عصر
متشکر: راستی یک سئوال دیگه : ایا راهی وجود داره که اطلاعات :منظورم ارقام مثل 10000 به صورت سه رقم سه رقم جدا بشود!!؟؟ توی دیتاگرید و توی بانک مان ؟؟؟ برای تمیزی کار میخوام!!!
سپاس

بله میشه ولی فعلا سرم یکم شلوغه بذار فردا یا یه روز دیگه برات مینویسم
در مورد سوال دوم بله فرمت select همینه.ببین تو مگه نمیخوای دو تا فیلد اولو با هم ضرب کنی حاصضربشو بریزی تو فیلد سوم.باید فیلد اول و دوم که قبلاً ثبت شده رو بخونی.باهم ضرب کنی و بعد فیلد سوم رو update کنی

eletcomp
جمعه 05 اردیبهشت 1393, 19:58 عصر
نگاه کن داداش: یک بار دیگه منظورم را توضیح میدهم به عکس نگاه کن!!
من میخوام ستون سهام در ستون ضریب سهام ضرب بشود و مجموع اش در ستون مجموع کل سهام ثبت شود!! یعنی زمانی که باتن را کلیک کردیم 5000در 2 ضرب و نتیجه اش را در ستون مجموع کل سهام ثبت کند!!!
منظورم الان کل اعداد هست ها !! فقط این سطر و فیلد هاش را می گم!!!
یعنی 2000 باید در 2 ضرب شود و.......... و الی اخر به سمت پایین!!

mehrdad.ghorbaniyan
جمعه 05 اردیبهشت 1393, 21:59 عصر
ببین برای این کار تو یه کلید اصلی قرار بده تا بر اساس اون کلید update را نجام بدی
این کد زیرو اگه بزنی مشکلت حله :

for (int i=0;i<dataGridView1.RowCount;i++)
{
SqlDataReader dr = sql.fill_info("SELECT saham,zarib_saham from TB1 where id="+dataGridView1.Rows[i].Cells[0].Value);
if (dr.Read())
{
int saham = dr.GetInt32(0);
int zarib_saham = dr.GetInt32(1);
int result = (saham * zarib_saham);
sql.sqlstr("UPDATE TB1 SET majmoe_kole_saham="+result+" where id="+dataGridView1.Rows[i].Cells[0].Value);
}
}


منظور از خونه 0 از دیتا گرید همون ای دی است

eletcomp
جمعه 05 اردیبهشت 1393, 22:22 عصر
ممنون دوست عزیز:یعنی باید فیلد ای دی هم به تیبل ام اضافه کنم؟؟
داداش:راستی کتابی یا منبع ای برای اموزش ado.net سراغ داری؟؟؟
سپاس

mehrdad.ghorbaniyan
جمعه 05 اردیبهشت 1393, 22:26 عصر
اره باید اضافه کنی و اگه خواستی کاربر آی دی را نبینه و قشنگتر باشه میتونی بگی خونه 0 را مخفی کن
فیلم های آموزشی اورانوس خوبه.من نگرفتم ولی تعریفشو زیاد شنیدم
اینم سایتش :
http://oranustalk.com/

eletcomp
جمعه 05 اردیبهشت 1393, 22:33 عصر
اره باید اضافه کنی و اگه خواستی کاربر آی دی را نبینه و قشنگتر باشه میتونی بگی خونه 0 را مخفی کن
چطوری باید بگم خونه صفز یعنی فیلد ای دی را مخفی کن!!


فیلم های آموزشی اورانوس خوبه.من نگرفتم ولی تعریفشو زیاد شنیدم
اره تقریبا خوب هست!! ولی اموزش بانک اطلاعاتی اش به صورت ویزارد هست!!! sql command نمیگه!! البته من اموزش سطح مقدماتی اش را خریدم :بد نبود ولی جدیدا :ورژن جدید نرم افزار های اموزشی شان را ارائه دادند که از پس گران هست که کلا ادم بی خیال میشه!! ولی یک حرکت نامردانه زدند که ..... ولش کن!!
سپاس

mehrdad.ghorbaniyan
شنبه 06 اردیبهشت 1393, 08:17 صبح
سلام.با کد زیر ستون 0 را مخفی کن:

dataGridView1.Columns[0].Visible = false;


اره یکمی گرونه.من خودمم آموزش حضوری میدم البت اگه اصفهان باشید.ado.net - قفل سخت افزاری - قفل نرم افزاری بصورتی که برای هر محصول قفل تولید کنی و سریال براشون چاپ کنی و کد فعال سازی تولید کنی و مثلا برای محصولی میگی فقط سه بار میتونی کد فعال سازی بگیری.همش چک میشه و آموزش هایی دیگه

eletcomp
شنبه 06 اردیبهشت 1393, 08:33 صبح
بابا شما استادی دیگه!!! شما خودت ado.net را به چه صورت یاد گرفتی؟؟؟ چه کتابی خوندی؟؟؟ رفرنس انگلیسی خوندی؟؟فارسی؟؟ بالاخره ادم همینجوری که برنامه نویس نمی شود!!!
سپاس

mehrdad.ghorbaniyan
شنبه 06 اردیبهشت 1393, 08:59 صبح
بابا شما استادی دیگه!!! شما خودت ado.net را به چه صورت یاد گرفتی؟؟؟ چه کتابی خوندی؟؟؟ رفرنس انگلیسی خوندی؟؟فارسی؟؟ بالاخره ادم همینجوری که برنامه نویس نمی شود!!!
سپاس

ن بابا استاد کجا بود.تو برنامه نویسی هرچی هم بلد باشی بازم کمه.من از تو هنرستان که vb6 یاد گرفتم از همون موقع به برنامه نویسی علاقمند شدم و رفتم دنبالش.هر روز هر شب کارم برنامه نویسی شده بود. بعد سی شارپو تو دانشگاه بلد شدم.نه کتابی خوندم و نه فیلم آموزشی دیدم.خودم رفتم دنبالش.مثلاً من وقتی یه تابعی را میبینم که یکاری میکنه.کنجکاو میشم و بقیه تابع های اون قسمتم میبینم.تو برنامه نویسی پشت کار خیلی مهمه