PDA

View Full Version : میخوام چنین گزارشی تولید کنم



c_doost
یک شنبه 14 خرداد 1391, 10:57 صبح
سلام

من میخوام یک کوئری بنویسم و بین دو تا تاریخ یکسری اطلاعات را استخراج کنم
حالا چطوری میتونم پس از استخراج این اطلاعات این ها را به کریستال ریپورت بفرستم (تا اینجاشو بلدم ) ؟
پس از ارسال اطلاعات تعداد پسران و دختران (که در دیتابیس فیلدی بنام جنسیت دارم ) را چطور شمارش کنم و به کریستال بفرستم ؟

hosseinenayati_2009
یک شنبه 14 خرداد 1391, 14:04 عصر
سلام
این کد را از برنامه ام می ذارم .فقط بدون command یه کلاس است که فراخوانی کردم که کلاسش را هم می نویسم.شما برای جمع جنسیت تو کریستال ریپورت فرمول Sum را بذار جلوی فیلد جنیستت. در ضمن شما باید یه جدول Temp مثل جدول اصلی داشته باشی که اطلاعات را داخل اون قرار بدی و تو کریستال ریپورت اون جدول فراخوانی بشه . جدول temp هم باید هر سری خالی بشه اول کار



command codd = new command();
codd.iud("delete * from tempfactor", login.con);

OleDbCommand cmd = new OleDbCommand();
OleDbDataReader dr;
cmd.Connection = login.con;
cmd.CommandText = "select * from factor where tarikhf >= '" + tarikh1.Text + "' and tarikhf <= '" + tarikh2.Text + "' ";
dr = cmd.ExecuteReader();
while (dr.Read())
{
codef = dr["codef"].ToString();
tarikhf = dr["tarikhf"].ToString();
codem = dr["codem"].ToString();
kharid = dr["kharid"].ToString();
price = Convert.ToInt32(dr["price"]);
totalprice = totalprice + price;
// جمع پرداختی
pardakhti = Convert.ToInt32(dr["pardakhti"]);
totalprdakhti = totalprdakhti + pardakhti;

//اینجا میتونید جنسیت را جمع بزنید
//مثلا
// if (sex = m) man = man + 1;
// if (sex = f) fmale = fmale+1;

command cod = new command();
cod.iud("insert into tempfactor (codef,tarikhf,codem,namem,familym,namepedar,khari d,price,pardakhti) values ('" + codef + "','" + tarikhf + "','" + codem + "','" + namem + "','" + familym + "','" + namepedar + "','" + kharid + "'," + price + "," + pardakhti + ") ", login.con);

}
dr.Close();
// بعدا در آخر دوباره یه یه عمل درج انجام بده که جمع مرد و زن هات را بدونی البته من در اینجا جمع پرداختی هام را نوشتم)
command cpl = new command();
cpl.iud("insert into tempfactor (codef,price,pardakhti) values ('" + "200000" + "'," + totalprice + "," + totalprdakhti + ") ", login.con);





کلاس command


class command
{
OleDbCommand cmd = new OleDbCommand();

public void iud(string s, OleDbConnection c)
{
cmd.Connection = c;
cmd.CommandText = s;
cmd.ExecuteNonQuery();
}
}

hosseinenayati_2009
سه شنبه 16 خرداد 1391, 19:32 عصر
سلام
یه مثال نوشتم. حدود 1 ساعت کار برد امیدوارم بتونید بفهمید.
دانلود کنید با 2008 نوشتم.بانکش هم داخل خود پوشه bin است

Mahmoud Zaad
سه شنبه 16 خرداد 1391, 22:00 عصر
سلام
یه مثال نوشتم. حدود 1 ساعت کار برد امیدوارم بتونید بفهمید.
دانلود کنید با 2008 نوشتم.بانکش هم داخل خود پوشه bin است
سلام
دوست عزیز نیازی به این کارها نیست، با استفاده از امکانات خود کریستال ریپورت به راحتی میشه اینکارو انجام داد:
از پنجره Fields Explorer روی Running Total Fields کلیک راست کنید و New رو انتخاب کنید در اینجا درقسمت سمت چپ لیست از فیلدهای جدول مورد نظر رو می ببینید روی فیلد مورد نظر (در اینجا jensiat) کلیک کنید تا به قسمت سمت راست اضافه شوند. Type of Summary رو روی Count قرار بدید و در قسمت Evaluate ، رادیو باتن Use Formula رو انتخاب کنید و روی باتن روبروش کلیک کنید تا وارد محیط کد نویسی کریستال بشید حالا فرمول زیر رو بنویسید(برای تعداد مردان):


{tempdanesh.jensiyat}='man';


فرمول رو ذخیره کنید و این پنجره رو ببندید. پنجره بعدی رو هم OK کنید. حالا فیلدی که ساختید رو روی گزارش قرار بدید. برای تعداد زنان هم همین کارها رو تکرار کنید. برنامه رو اجرا کنید می بینید که تعداد زنان و مردان محاسبه شده و نمایش داده میشه. عکس زیر رو هم ببینید:
87924

hosseinenayati_2009
چهارشنبه 17 خرداد 1391, 00:59 صبح
سلام دوست عزیز میثم جان
من این برنامه را کامل با بانک و سورس نوشتم که دوستان بتونند استفاده کننده . ایشون یه پیام خصوصی زده بودند به من که یه سورس کامل براشون بنویسم ، چون با توضیح نفهمیده بودند.منم نوشتم.بازم مرسی از راهنمایی تون خیلی خوب نوشتی