我在Microsoft Access 2007中有2个表。
表名“BillDetail”和“BillMaster”
BillMaster中包含的字段是:BillNO,BillType,Dt,PartyName
BillDetail表中包含的字段是:BillNo(Ref)序列号描述HSNCode数量率。
我需要从两个表中获取数据。主记录应显示在标题中,所有相关项目应以表格形式显示。我最后想把这些信息作为账单打印出来。
我的基本需求是不使用水晶报告。我在互联网上搜索了很多,并找到了一个使用ReportViewer Control的解决方案。但不幸的是,我不知道如何使用此控件构建报告。请帮我生成报告或发布一些教程链接。
请帮忙。我是Windows应用程序开发的新手。
答案 0 :(得分:2)
报表查看器控件能够呈现rdl
或rdlc
个文件中定义的报表。
rdl
代表“报告定义语言”,“C”代表“客户报告”,代表“服务器报告”
因此,如果您没有安装报告服务器,最好使用rdlc
并将Access 2007数据库作为报告的数据源附加。
这里有几个用于创建rdlc
报告文件和使用报告查看器控件的教程:
CodeProject - How to connect a report i.e. rdlc file with the project form.
Beginner's guide for creating standalone .rdlc reports with ssrs
答案 1 :(得分:0)
在这里,您可以找到一个示例,如何使用代码示例在C#中生成RDLC报告...
http://www.dotnetsharepoint.com/2013/08/how-to-create-rdlc-report-in-c-windows.html#.UgCO6pKfjwg
答案 2 :(得分:0)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Configuration;
using System.Data.SqlClient;
using Microsoft.Reporting.WinForms;
namespace RDLC
{
public partial class RD : Form
{
public RD()
{
InitializeComponent();
}
private void RD_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt = GetData("select * from tbl_Admission_Form");
ReportDataSource datasource = new ReportDataSource("DataSet1", dt);
reportViewer1.LocalReport.DataSources.Clear();
reportViewer1.ProcessingMode = ProcessingMode.Local;
reportViewer1.LocalReport.ReportEmbeddedResource = "RDLC.Report1.rdlc";
reportViewer1.LocalReport.DataSources.Add(datasource);
//this.reportViewer1.RefreshReport();
this.reportViewer1.RefreshReport();
}
private DataTable GetData(string query)
{
string conString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
SqlConnection con = new SqlConnection(conString);
con.Open();
SqlCommand cmd = new SqlCommand(query);
cmd.Connection = con;
cmd.ExecuteNonQuery();
cmd.Dispose();
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable ds = new DataTable();
sda.Fill(ds);
return ds;
}
}
}