View Full Version : سوال: استفاده از reportviewer با یک کوئری خاص؟
sajadjamalian
دوشنبه 01 آذر 1389, 09:31 صبح
سلام دوستان:
من میخوام توی برنامه ای که با c# نوشتم یه reportviewer قرار بدم و در زمان اجرای برنامه به وسیله کوئری(sql) یک گزارش طراحی کنم که نتیجه کوئری رو توی اون گزارش به وسیله reportviewer ببینم، کسی میدونه باید چیکار کنم؟
(خیلی جستجو کردم و خیلی کدها رو امتحان کردم ولی هیچکدوم جواب نداد، لطفا کمممممممممممک کنید):گریه::گریه:
fa_karoon
دوشنبه 01 آذر 1389, 10:26 صبح
اگر از StimulSoft استفاده کرده ای می تونی کوئری رو در محیط Disignاش بنویسی و اونوقت بریزیش تو StiReportViewer1.Report
sajadjamalian
دوشنبه 01 آذر 1389, 11:18 صبح
سلام دوست عزیز، ممنون از توجهت،
من از stimulsoft استفاده نکردم و فقط میخوام نتیجه یه کوئری مثل کوئری زیر رو توی یه report توی reportviewer نشون بدم، لطفا اگر کسی کدی چیزی داره بذاره اینجا منم استفاده کنم چون کارم خیلی گیره:
select * from tb where filed1='a'
Eman_b
یک شنبه 07 آذر 1389, 11:48 صبح
سلام !
میتونی یه کریستال ریپورت به برنامت اضافه کنی و modifirاش رو هم publicکن و جدولی هم که می خوای ازش گزارش بگیری بش addکن برو تو فرمی که دکمه نمایش گزارشت رو گزاشتی و در رویداد کلیک آن این کد ها رو بنویس:
CrystalReport1 rpt = new CrystalReport1();
SqlDataAdapter da = new SqlDataAdapter("select * from tb where filed1='a'", "connection string");
DataSet ds = new DataSet();
da.Fill(ds);
rpt.SetDataSource(ds.Tables[0]);
crystalReportViewer1.ReportSource = rpt;
امیدوارم به کارت بیاد.من همین توری ازcrystalreportviewerاستفاده می کنم.
sajadjamalian
سه شنبه 09 آذر 1389, 10:27 صبح
سلام دوست عزیز:
ممنون از توجهت، با توجه به کد شما مشکلم حل شد،
من این شیوه رو روی microsoft report هم امتحان کردم، جواب داد.
mostafarastin239
جمعه 19 آذر 1389, 16:55 عصر
سلام مهندس
من هم می خواهم با ریپورت ویور یک کوئری خاص را اجرا کنم به مشکل بر خوردم زیاد هم وارد نیستم لطف می کنی نمونه کد را برام قرار بدی تا مشکلم حل بشه.
با تشکر
sajadjamalian
دوشنبه 22 آذر 1389, 22:39 عصر
سلام دوست عزیز:
ابتدا یه report بساز و فیلدهایی که میخوای نمایش داده بشن رو تعیین کن و بعد مثلا توی رویداد کلیک یه دکمه کد زیر رو بنویس:
DataSet dstmp = new DataSet();
DataTable dstmp1 = new DataTable();
SqlDataAdapter da = new SqlDataAdapter("select * from table, con);
da.Fill(dstmp,"table");
da.Fill(dstmp1);
ReportDataSource repds = new ReportDataSource("datasetname",dstmp.Tables["table"]);
reportViewer1.LocalReport.DataSources.Clear();
reportViewer1.LocalReport.DataSources.Add(repds);
if (dstmp.Tables["table"].Rows.Count == 0)
{
MessageBox.Show("sorry");
}
reportViewer1.LocalReport.Refresh();
this.reportViewer1.RefreshReport();
که توی این کد table نام جدول مورد نظر و con هم یه sqlconnection هست.
robat7
جمعه 26 آذر 1389, 01:36 صبح
سلام دوست عزیز
طبق راهنمایی شما من کد زیر را نوشتم و دیتا ست 2078 رکورد دارد ولی پس از اجرای برنامه پیام زیر در reportviewer نمایش داده می شود. آیا نظری دارید؟
A Data source instance has not been supplied for the data source 'TblDat'
string s = "SELECT dbo.TblDat.Date AS GoodsDate, SUM(dbo.TblDat.Amount + dbo.TblDat.Tax + dbo.TblDat.Tip - dbo.TblDat.Discount) AS Amount, " +
"dbo.TblStore.StoreName, dbo.TblCredit.CreditShow " +
"FROM dbo.TblDat INNER JOIN " +
"dbo.TblStore ON dbo.TblDat.Store = dbo.TblStore.StoreCode INNER JOIN " +
"dbo.TblCredit ON dbo.TblDat.Credit = dbo.TblCredit.CodeCr " +
"GROUP BY dbo.TblDat.Store, dbo.TblDat.MergeGroup, dbo.TblDat.Date, dbo.TblStore.StoreName, dbo.TblCredit.CreditShow " +
"ORDER BY GoodsDate DESC";
DataSet ds = new DataSet();
ds.Clear();
SqlConnection cn = new SqlConnection(Conn_ID);
SqlDataAdapter da = new SqlDataAdapter(s, cn);
cn.Open();
da.Fill(ds, "TblDat");
cn.Close();
ReportDataSource rds = new ReportDataSource(
"GoodsList", ds.Tables[0]);
this.reportViewer2.LocalReport.DataSources.Clear() ;
this.reportViewer2.LocalReport.DataSources.Add(rds );
this.reportViewer2.LocalReport.Refresh();
this.reportViewer2.RefreshReport();
sajadjamalian
جمعه 26 آذر 1389, 17:17 عصر
سلام دوست عزیز:
توی این کد goodslist چیه؟
این ایرادی که گرفته مربوط به اشتباه وارد کردن اسم dataset هستش، شما باید جای goodslist اسم dataset مربوطه توی برنامتون رو وارد کنید.
robat7
جمعه 26 آذر 1389, 19:50 عصر
سلام
ممنون از پاسخ شما. مشکلم حل شد. اشکال از همان dataset بود
mostafarastin239
جمعه 01 بهمن 1389, 19:05 عصر
سلام دوست عزیز:
ابتدا یه report بساز و فیلدهایی که میخوای نمایش داده بشن رو تعیین کن و بعد مثلا توی رویداد کلیک یه دکمه کد زیر رو بنویس:
DataSet dstmp = new DataSet();
DataTable dstmp1 = new DataTable();
SqlDataAdapter da = new SqlDataAdapter("select * from table, con);
da.Fill(dstmp,"table");
da.Fill(dstmp1);
ReportDataSource repds = new ReportDataSource("datasetname",dstmp.Tables["table"]);
reportViewer1.LocalReport.DataSources.Clear();
reportViewer1.LocalReport.DataSources.Add(repds);
if (dstmp.Tables["table"].Rows.Count == 0)
{
MessageBox.Show("sorry");
}
reportViewer1.LocalReport.Refresh();
this.reportViewer1.RefreshReport();
که توی این کد table نام جدول مورد نظر و con هم یه sqlconnection هست.
سلام
لطف می کنی یه نمونه برنامه ساده با یک دیتابیس مختصر قرار بدی؟
با تشکر
sajadjamalian
یک شنبه 03 بهمن 1389, 16:43 عصر
سلام دوست عزیز:
یه نمونه برنامه برات نوشتم که میذارمش اینجا امیدوارم بدردت بخوره، فقط دیتابیس رو باید اول ایجاد کنی و بعد با استفاده از بکاپی که برات گذاشتم ریستور کنی،اسم دیتابیس هم test هستش.
cnmeysam
دوشنبه 16 آذر 1394, 14:28 عصر
سلام میشه یکی کمکم کنه بگه مشکل کد من چیه؟
using System;using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using Microsoft.Reporting.WinForms;
namespace ReportsApplication
{
public partial class Form1 : Form
{
SqlConnection con = new SqlConnection("Data Source=(local);Initial Catalog=Formula_Jire;Integrated Security=True");
SqlCommand ins = new SqlCommand();
public Form1()
{
InitializeComponent();
}
public string ConnectionString = null;
private void Form1_Load(object sender, EventArgs e)
{
this.ReportTableAdapter.Fill(this.Formula_JireData Set.Report);
DataSet dstmp = new DataSet();
DataTable dstmp1 = new DataTable();
SqlDataAdapter da = new SqlDataAdapter("select * from Report", con);
da.Fill(dstmp, "Report");
da.Fill(dstmp1);
ReportDataSource repds = new ReportDataSource("Formula_JireDataSet", dstmp.Tables["Report"]);
reportViewer1.LocalReport.DataSources.Clear();
reportViewer1.LocalReport.DataSources.Add(repds);
if (dstmp.Tables["Report"].Rows.Count == 0)
{
MessageBox.Show("sorry");
}
reportViewer1.LocalReport.DisplayName = "گزارش";
reportViewer1.LocalReport.Refresh();
this.reportViewer1.RefreshReport();
// TODO: This line of code loads data into the 'Formula_JireDataSet.Report' table. You can move, or remove it, as needed.
//this.ReportTableAdapter.Fill(this.Formula_JireData Set.Report);
//this.reportViewer1.RefreshReport();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
this.ReportTableAdapter.FillBy2(this.Formula_JireD ataSet.Report, textBox2.Text, textBox1.Text);
}
catch (System.Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}
this.reportViewer1.RefreshReport();
}
}
}
این ارور رو میده
A Data source instance has not been supplied for the data source 'Report'
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.