PDA

View Full Version : انجام عملیات بر روی تمامی رکوردهای موجود در بانک



sepide1
شنبه 16 دی 1391, 10:54 صبح
با سلام سال نو میلادی مبارک
چهار فیلد نام ، کدملی (کلید) ، مبلغ و شماره فیش(کلید) در بانک دارم، می خواهم فقط با زدن یک باتن با توجه به اینکه N رکورد در بانک دارم مجموع مبلغ هایی را که همه افراد (هر فرد به طور مجزا) واریز کرده اند را محاسبه نمایم. و در جدول دیگر که دارای سه فیلد نام و کد و مجموع مبلغ می باشد درج کنم
به بیان ساده تر، همه افرادی که در جدول اول هستند
نام و کدملی اش و مجموع مبلغ واریزی به جدول دوم Insert شوند.
لطفا کمک کنید چگونه می توانم این کار را انجام بدهم (در صورت امکان با نمونه کد یا برنامه)
مشکل اصلی من محاسبه و درج همه اطلاعات به صورت یکجا می باشد(به صورت تک تک بلدم)

فایل برنامه اضافه شد لطفا ملاحظه کنید و در صورت امکان بر روی برنامه خودم کدها را وارد کنید

zarrinnegar
شنبه 16 دی 1391, 11:02 صبح
اینها که دستورات sql هستند


select nationalcode,name,sum(price) as sumprice from mytable
group by nationalcode,name

mousa1992
شنبه 16 دی 1391, 11:50 صبح
سلام دوست عزیز
این کوئری رو ببین
string query = "insert into table1(field1,field2,field3) select field4,field5,field6 from table2";
این کوئری یسری اطلاعات رو که از دستور select برمیگرده رو insert میکنه توی جدولتون
فقط توجه کنین که نوع ها باید یکی باشن و تعداد فیلدها
موفق باشی

s4lish
شنبه 16 دی 1391, 12:23 عصر
با سلام. بنده یه سوال داشتم از محضر بزرگان و اساتید.
چطور میتونم تو برنامم یک کوئری بنویسم که مقدار یک داده رو برگردونه و اونو توی یک متغیر ذخیره کنم.
با تشکر

sgn2006
شنبه 16 دی 1391, 14:59 عصر
با سلام. بنده یه سوال داشتم از محضر بزرگان و اساتید.
چطور میتونم تو برنامم یک کوئری بنویسم که مقدار یک داده رو برگردونه و اونو توی یک متغیر ذخیره کنم.
با تشکر

سلام می تونی یک DataReader بنویسی مثلا Select Count(*) from t1 اجرا می کنی بعد با دستور GetReader(0) اونو بریزی تو یه متغیر

sepide1
شنبه 16 دی 1391, 15:05 عصر
برنامه اضافه شد لطفا کمک کنید.
لطفا برای سوال های جدید تایپیک جدا گانه ایجاد نمایید

sepide1
سه شنبه 19 دی 1391, 07:59 صبح
کسی کمک نمیکنه؟

NasimBamdad
سه شنبه 19 دی 1391, 10:37 صبح
به این لیــــــــــنک (http://barnamenevis.org/showthread.php?377991-%D8%B3%D9%88%D8%A7%D9%84-%D8%AF%D8%B1-%D8%AE%D8%B5%D9%88%D8%B5-%D9%82%D8%B1%D8%A7%D8%B1-%D8%AF%D8%A7%D8%AF%D9%86-%D8%AF%D8%A7%D8%AF%D9%87-%D9%87%D8%A7%DB%8C-%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D8%AF%D9%87-%D8%AF%D8%B1%D9%88%D9%86-%D8%AA%DA%A9%D8%B3%D8%AA-%D8%A8%D8%A7%DA%A9%D8%B3&p=1671043&viewfull=1#post1671043)مراجعه کن

sepide1
سه شنبه 19 دی 1391, 13:08 عصر
به این لیــــــــــنک (http://barnamenevis.org/showthread.php?377991-%D8%B3%D9%88%D8%A7%D9%84-%D8%AF%D8%B1-%D8%AE%D8%B5%D9%88%D8%B5-%D9%82%D8%B1%D8%A7%D8%B1-%D8%AF%D8%A7%D8%AF%D9%86-%D8%AF%D8%A7%D8%AF%D9%87-%D9%87%D8%A7%DB%8C-%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D8%AF%D9%87-%D8%AF%D8%B1%D9%88%D9%86-%D8%AA%DA%A9%D8%B3%D8%AA-%D8%A8%D8%A7%DA%A9%D8%B3&p=1671043&viewfull=1#post1671043)مراجعه کن
من متوجه نشدم این لینک چه ربطی به سوال من دارد، من که مشکلم نشان دادن اطلاعات نیست،

morteza271
سه شنبه 19 دی 1391, 13:32 عصر
برای محاسبه مجموع مبالغی که یه نفر پرداخت کرده میتونید داخل کوئری تون از تابع SUM خود sql استفاده کنید.
البته نمیدونم منظورتون رو درست متوجه شدم یا نه؟
اگه اشتباه گفتم لطف کنید بیتشر توضیح بدین...

NasimBamdad
سه شنبه 19 دی 1391, 13:32 عصر
با سلام. بنده یه سوال داشتم از محضر بزرگان و اساتید.
چطور میتونم تو برنامم یک کوئری بنویسم که مقدار یک داده رو برگردونه و اونو توی یک متغیر ذخیره کنم.
با تشکر

به اين ليــــــــــنک (http://barnamenevis.org/showthread.php?377991-%D8%B3%D9%88%D8%A7%D9%84-%D8%AF%D8%B1-%D8%AE%D8%B5%D9%88%D8%B5-%D9%82%D8%B1%D8%A7%D8%B1-%D8%AF%D8%A7%D8%AF%D9%86-%D8%AF%D8%A7%D8%AF%D9%87-%D9%87%D8%A7%DB%8C-%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D8%AF%D9%87-%D8%AF%D8%B1%D9%88%D9%86-%D8%AA%DA%A9%D8%B3%D8%AA-%D8%A8%D8%A7%DA%A9%D8%B3&p=1671043&viewfull=1#post1671043)مراجعه کن

NasimBamdad
سه شنبه 19 دی 1391, 13:32 عصر
من متوجه نشدم این لینک چه ربطی به سوال من دارد، من که مشکلم نشان دادن اطلاعات نیست،

ببخشید من جواب s4lish رو دادم

sepide1
سه شنبه 19 دی 1391, 14:08 عصر
برای محاسبه مجموع مبالغی که یه نفر پرداخت کرده میتونید داخل کوئری تون از تابع SUM خود sql استفاده کنید.
البته نمیدونم منظورتون رو درست متوجه شدم یا نه؟
اگه اشتباه گفتم لطف کنید بیتشر توضیح بدین...

نه عزیزم منظور برای همه افراد داخل بانک است بدون اینکه تک تک بخواهی محاسبه کنی برای همه یکدفعه محاسبه شود و داخل بانک درج گردد

sepide1
سه شنبه 19 دی 1391, 14:09 عصر
مدیر محترم لطفا سوال دیگران را از تایپیک حذف کنید

morteza271
سه شنبه 19 دی 1391, 14:18 عصر
نه عزیزم منظور برای همه افراد داخل بانک است بدون اینکه تک تک بخواهی محاسبه کنی برای همه یکدفعه محاسبه شود و داخل بانک درج گردد
اوکی.پس شما دو راه دارین به نظرم :

1- با یه حلقه برای تک تک افراد با استفاده از تابع SUM محاسبه کنید و بعد درج کنید (که اصلا راه مناسبی نیست و پیشنهاد نمیکنم)
2- نوشتن یک پروسیجور که داخل اون از cursurهای sql استفاده کنید.(البته یه جورایی مکانیزم کار این کرسر ها هم همون حلقه میشه ولی دیگه همه ی امور رو به خود sql واگذار میکنی و سریعتره)
موفق باشید

sepide1
سه شنبه 19 دی 1391, 14:29 عصر
میتونید یه نمونه برام بذارید:گریه:

asghar2008
سه شنبه 19 دی 1391, 15:10 عصر
سلام
نیازی به نوشتن proc نیست شما با استفاده از select , Group by میتونید این کار رو براحتی انجام انجام بدید.

نکته خیلی مهم: تعداد و نوع ستون ها باید یکی باشه.ولی تو دیتابیس شما در جدول دوم نوع فیلد sumprice تکست بود که باید Number باشه.

کد SQL:

string strselect= "INSERT INTO Table2(nationalcode,sumprice) select nationalcode,sum(price) from table1 group by nationalcode";


اگه نتونستید با VS2008 برنامه رو باز کنید .کدش رو اینجا میذارم.تو رویداد کلیک Buttom3 اینارو کپی کن.و یه دیتاگرید ویو با نام dataGridView1 رو فرم بذار.




OleDbConnection con = new OleDbConnection("data source=bank1.mdb;provider=microsoft.jet.oledb.4.0");
string strselect= "INSERT INTO Table2(nationalcode,sumprice) select nationalcode,sum(price) from table1 group by nationalcode";

OleDbCommand cmod=new OleDbCommand(strselect,con);
con.Open();

cmod.ExecuteNonQuery();

con.Close();

OleDbDataAdapter odad = new OleDbDataAdapter("select * from table2", con);
DataSet ds =new DataSet();
odad.Fill(ds,"table2");
dataGridView1.DataSource=ds;
dataGridView1.DataMember="table2";


اینم برنامت ، اون چیزی که میخواستی: البته من از VS2010 استفاده میکنم.
موفق باشید