View Full Version : سوال: نحوه استفاده از دو dataset در یک report viewer
esagraphic
دوشنبه 02 شهریور 1394, 12:28 عصر
سلام به همه دوستان من با استفاده از ریپورت ویرور خود سی شارپ یک تکت ساختم و اونو چاپ میکنم و مشکلی نیست مشکل وقتی است که حالا میخوام برای تکت ته برگ و سربرگ بزارم و من یک تیبل تو دیتابیس خودم دارم که مشتری از تنظیمات ته برگ و سربرگ تکت خودش را انتخاب میکنه مثلاً نام فروشگاه یا شرکت حالا وقتی من توی دیتاسیت یک تیبل دگه انزیرت میکنم و توی ریپورت میخوام ازش کار بگیرم اصلاً ریپورت کار نمیکنه هیچ ریکورد را هم نمیاره حتی جدول را هم نمیاره کسی میدونه چه کنم
bitasoft.ir
سه شنبه 04 مهر 1402, 22:34 عصر
برای استفاده از دو DataSet مختلف در یک ReportViewer، شما باید اطمینان حاصل کنید که تنظیمات و رابطه مناسبی بین گزارش و دیتاستها داشته باشید. در ادامه توضیحاتی را ارائه میدهم که به شما کمک میکند این کار را به درستی انجام دهید:
تهیه گزارش جدید:
برای استفاده از دو DataSet مختلف در یک گزارش، ابتدا باید یک گزارش جدید ایجاد کنید یا گزارش موجود خود را باز کنید.
اضافه کردن دیتاستها به گزارش:
برای اضافه کردن دو DataSet به گزارش، به عنوان مثال DataSet1 و DataSet2، از مراحل زیر پیروی کنید:
در قسمت Solution Explorer، روی گزارش خود کلیک راست کنید و "Design" را انتخاب کنید.
در پنجره گزارش، روی منوی Report در بالای صفحه کلیک کنید و سپس "Report Data" را انتخاب کنید.
در پنجره "Report Data"، روی "Data Sources" کلیک کنید و سپس "Add Data Source" را انتخاب کنید.
وارد نام DataSet1 خود شوید و دیتابیس مورد نظر خود را انتخاب کنید و بعد از اتصال به دادهها، آنها را به گزارش اضافه کنید.
مراحل مشابه را برای اضافه کردن DataSet2 انجام دهید.
استفاده از دادهها در گزارش:
حالا میتوانید از دادههای دو DataSet در گزارشتان استفاده کنید. شما میتوانید توابع GetData و Fill را برای هر DataSet فراخوانی کنید تا دادهها به گزارش منتقل شوند.
تنظیم منابع داده در گزارش:
به قسمت "Report Data" در گزارش بروید و منابع دادههای DataSet1 و DataSet2 را به عنوان منابع دادههای گزارش تنظیم کنید.
استفاده از دادهها در گزارشهای RDLC:
در گزارشهای RDLC (Report Definition Language Client-Side)، میتوانید از دادههای دو DataSet مختلف با استفاده از نقطه دسترسی (dot notation) به عنوان منابع داده در فیلدها، گروهها و سایر اجزای گزارش استفاده کنید.
با این مراحل، میتوانید دو DataSet مختلف را به گزارش خود اضافه کرده و از آنها در طراحی گزارشهایتان استفاده کنید. مطمئن شوید که نام دیتاستها و نقطه دسترسی به دادهها در گزارش به درستی تنظیم شده باشد.
به عنوان یک نمونه ساده، اینجا یک کد برای استفاده از دو DataSet مختلف در یک گزارش RDLC (Report Definition Language Client-Side) در C# آورده شده است. در این مثال، فرض میشود که شما دو DataSet به نام DataSet1 و DataSet2 دارید و میخواهید از آنها در گزارش استفاده کنید:
using System;
using System.Data;
using System.Windows.Forms;
using Microsoft.Reporting.WinForms;
namespace WindowsFormsApp
{
public partial class ReportViewerForm : Form
{
public ReportViewerForm()
{
InitializeComponent();
}
private void ReportViewerForm_Load(object sender, EventArgs e)
{
// ایجاد دو دیتاست مثالی
DataSet dataSet1 = new DataSet("DataSet1");
DataSet dataSet2 = new DataSet("DataSet2");
// اضافه کردن دادهها به DataSet1 و DataSet2 (اینجا فرض شده است که دادهها به صورت DataTable و با نام "Table1" اضافه شوند)
DataTable table1 = new DataTable("Table1");
DataTable table2 = new DataTable("Table2");
// اضافه کردن ستونها و دادهها به DataTable1 و DataTable2
// اینجا فرض شده است که دادههای متنی به صورت ساده به DataTableها اضافه شوند.
table1.Columns.Add("Name", typeof(string));
table1.Columns.Add("Age", typeof(int));
table1.Rows.Add("John", 30);
table1.Rows.Add("Alice", 25);
table2.Columns.Add("Product", typeof(string));
table2.Columns.Add("Price", typeof(decimal));
table2.Rows.Add("Laptop", 1200.50M);
table2.Rows.Add("Smartphone", 699.99M);
dataSet1.Tables.Add(table1);
dataSet2.Tables.Add(table2);
// تنظیم منابع داده برای گزارش
reportViewer.LocalReport.DataSources.Clear();
reportViewer.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", dataSet1.Tables[0]));
reportViewer.LocalReport.DataSources.Add(new ReportDataSource("DataSet2", dataSet2.Tables[0]));
// تنظیم مسیر فایل RDLC گزارش
reportViewer.LocalReport.ReportPath = @"Path\To\YourReport.rdlc";
// بارگذاری گزارش در گزارش ویور
reportViewer.RefreshReport();
}
}
}
در این کد:
دو DataSet به نام DataSet1 و DataSet2 ایجاد شده و دادهها به آنها اضافه میشوند.
دادهها به صورت DataTable به DataSetها اضافه میشوند.
منابع داده برای گزارش تنظیم میشوند و مسیر فایل RDLC گزارش مشخص میشود.
گزارش در گزارش ویور بارگذاری میشود و نمایش دادهها در گزارش انجام میشود.
سلام به همه دوستان من با استفاده از ریپورت ویرور خود سی شارپ یک تکت ساختم و اونو چاپ میکنم و مشکلی نیست مشکل وقتی است که حالا میخوام برای تکت ته برگ و سربرگ بزارم و من یک تیبل تو دیتابیس خودم دارم که مشتری از تنظیمات ته برگ و سربرگ تکت خودش را انتخاب میکنه مثلاً نام فروشگاه یا شرکت حالا وقتی من توی دیتاسیت یک تیبل دگه انزیرت میکنم و توی ریپورت میخوام ازش کار بگیرم اصلاً ریپورت کار نمیکنه هیچ ریکورد را هم نمیاره حتی جدول را هم نمیاره کسی میدونه چه کنم
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.