ورود

View Full Version : سوال: مقایسه یک پارامتر ثابت در دو بازه زمانی متغییر



pourang_us
پنج شنبه 10 فروردین 1391, 21:09 عصر
با آرزوی شروع سالی خوش برای همه دوستان

من میخواستم در گزارش کریستال ریپورت بتونم یک پارامتر ثابت رو در طول دو بازه تاریخی متفاوت کنار هم داشته باشم.
برای مثال: جمع حقوق و دستمزد دریافتی از 01/01/89 تا 31/01/89 در مقایسه با جمع حقوق دستمزد دریافتی از 01/01/88 تا 31/01/88

میخواهم این اطلاعات رو به صورت نمودار نمایش بدهم البته رسم نمودار اون برام مهم نیست . مهم استخراج گزارش هست ضمنا کلیه اطلاعات لازم هم درون یک View آماده هست.

با سپاس

pourang_us
چهارشنبه 23 فروردین 1391, 16:49 عصر
از دوستان کسی نظری در این مورد نداره ؟؟؟
این رو نوشتم صرفا که بیاد دوباره صفحه اصلی شاید از دوستان کسی دید!

mohan21
دوشنبه 28 فروردین 1391, 09:37 صبح
با سلام

همه این ها با اجرای SQL و ارسال به کریستال انجام میشه ....

همین ....

pourang_us
دوشنبه 28 فروردین 1391, 22:01 عصر
ممنون از پاسختون
اما میشه بفرمایید چطوری؟!!

fakhravari
جمعه 01 اردیبهشت 1391, 15:28 عصر
شما خروجی خودتون در یک DataTable بریزید
Book b = new Book();
DataTable dt = b.SelectForreport();

ReportDocument rd = new ReportDocument();
rd.Load("rptbook.rpt");
rd.SetDataSource(dt);

crystalReportViewer1.ReportSource = rd;
crystalReportViewer1.Show();

fakhravari
جمعه 01 اردیبهشت 1391, 15:29 عصر
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GridView1.DataSource = getData();
GridView1.DataBind();
}
}

public static DataSet getData()
{
SqlConnection cn = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=dbanbar;Integrated Security=True");
cn.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "SELECT * FROM dbanbar";
SqlDataAdapter da = new SqlDataAdapter(cmd.CommandText, cn);
DataSet ds = new DataSet();
da.Fill(ds, "dbanbar");
return ds;
}





protected void Button1_Click(object sender, EventArgs e)
{
ReportDocument rptDoc = new ReportDocument();
rptDoc.Load(Server.MapPath("~/CrystalReport1.rpt"));
rptDoc.SetDataSource(getData());
CRV1.ReportSource = rptDoc;

}

pourang_us
دوشنبه 04 اردیبهشت 1391, 21:37 عصر
ممنون از جوابتون
من این کار ها رو همه رو انجام داده بودم اما مساله فقط این نیست که من اطلاعات جداول رو توی گزارش نمایش بدهم
منظور این است که از فیلد های وارده ما بین دو تاریخ معین سر جمع یک اطلاعات خاص رو بتونم نمایش بدهم حالا چه به صورت عددی یا به صورت نمودار امیدوارم منظورم رو به درستی عنوان کرده باشم

fakhravari
سه شنبه 05 اردیبهشت 1391, 12:48 عصر
با سلام
مگه نمیشه cmd.CommandText = "SELECT * FROM dbanbar"; قسمت where از تابع betwen استفاده کرد:کف:

pourang_us
چهارشنبه 06 اردیبهشت 1391, 22:34 عصر
با درورد به شما
من از جوابهای شما سپاس گذارم اما مثل این که من سوال رو درست نپرسیدم که جوابها به Between رسیده است. برای همین من یه نمونه تصویری از سوالم رو قرار میدهم
فرض کنیم ما در بانک اطلاعاتی خودمون جدولی به شکل زیر و فیلد های زیر داریم.
86301

و میخواهیم گزارش رو به صورت زیر بنوسیم (من تاریخ ها رو روند در نظر گرفتم اما ممکنه یک ماهه نباشه مثلا نه ماه و هشت روز باشه)
که جمع مقدار پرداخت ها از تاریخ 01/01/1390 تا 31/01/1390

در مقایسه با

جمع مقدار پرداخت ها از تاریخ 01/02/1390 تا 31/02/1390

و در نهایت بتونیم اون رو به صورت نمودار زیر به کاربر تحویل بدهیم
86302

امیدوارم که تونسته باشم سوالم رو به درستی مطرح کرده باشم

با تشکر

fakhravari
جمعه 15 اردیبهشت 1391, 23:30 عصر
با سلام
شما 2 تا پارامتر درست کنید که مقادیر که میخواهید از فیلد با هم sum یا avreg یا .. کنه.
بعد درون چارت میتوانید از این متغیری که درست کردین استفاده کنید

pourang_us
یک شنبه 24 اردیبهشت 1391, 21:38 عصر
مهندس باز هم خوب سوال رو نگاه نکردی فکر کنم
اون تاریخها رو کاربر تعیین میکنه یعنی دو بازه تاریخ هم داریم
میدونم خیلی اذیت شدید اما ممنون از پاسخ دادن شما

fakhravari
دوشنبه 25 اردیبهشت 1391, 00:49 صبح
با سلام
از روش چارت خود net هم میتوانید استفاده کنید
<asp:Chart ID="Chart1" runat="server" DataSourceID="SqlDataSource1">
<series>
<asp:Series Name="Series1" XValueMember="date2" YValueMembers="e2">
</asp:Series>
</series>
<chartareas>
<asp:ChartArea Name="ChartArea1">
</asp:ChartArea>
</chartareas>
</asp:Chart>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:samplesqlConnectionString %>"
SelectCommand="SELECT SUM(DISTINCT id) AS e1, AVG(DISTINCT id) AS e2, MAX(DISTINCT id) AS e3, date2
FROM datetime
WHERE (date2 BETWEEN @date1 AND @date11)
GROUP BY date2">
</asp:SqlDataSource>
protected void Page_Load(object sender, EventArgs e)
{
SqlDataSource1.SelectParameters.Add("date1", "1390/10/10");
SqlDataSource1.SelectParameters.Add("date11", "1390/10/15");
}