文章目录
NuGet安装库
报表相关
数据库相关
安装完后
数据库连接
其中Sql执行语句是选择报表所需要的字段。
csharp
/// <summary>
/// 数据库连接与SQL语句执行
/// </summary>
/// <param name="connectionString">连接语句</param>
/// <param name="strSql">Sql执行语句</param>
/// <returns></returns>
public DataSet ConnReadSql(string connectionString,string strSql)
{
DataSet dataSet = new DataSet();
using (SqlConnection connection = new SqlConnection(connectionString))
{
try
{
connection.Open();
SqlDataAdapter command = new SqlDataAdapter(strSql, connection);
command.Fill(dataSet, "ds");
}
catch (System.Data.SqlClient.SqlException ex)
{
throw new Exception(ex.Message);
}
}
return dataSet;
}
报表设计
报表引用
扩展------联机
搜索RDLC
如果下载太慢,点击"详细信息",在浏览器下载,或者更快的可以在迅雷下载,下载完成后关闭所有VS进程 ,进行安装包的安装。
添加报表
右击项目------添加------新建项------报表
数据集设计
方法一手动添加
在工具箱中找到数据集工具,拉一个DataTable到数据集
"Ctrl+L"快捷创建DataTable行数,添加字段需要与数据库获取字段一致。
方法二------连接数据库添加
在工具箱中找到数据集工具,拉一个DataTable到数据集,会弹出来配置向导。
点击新建连接
输入服务器后,在下拉框中选择所需数据库,点击测试连接,显示成功后,点击确定。
点击下一步
点击确定
点击下一步
这里直接点击"查询生成器"
点击添加
点击完成
关联报表与数据集
在工具栏的报表项目下面拉取表
之后会出现报表数据窗口,如果没有,快捷键ctr +alt+D
点击数据集------添加数据集
1.名称是后续代码要用到的参数名字
2.点击该项目设计的数据源,下方会出现对应可用数据集,选择需要的数据集,点击确定。
表格数据与数据集数据设计
表格格式、字体设计
右击表格------文本框属性
-
设置字体------微软雅黑(否则后期中文会出现乱码)
-
根据需求设置对其样式
3.报表表格格式在数量众多的时候可以设计一个,后面的进行复制粘贴也会把格式带过去,或者在插入列或者插入行等操作时,沿用最近一个的所有格式
报表数据字段绑定
右击表格框------表达式------点击字段(如果字段没有,尝试刷新数据集之后重新点开字段)------双击值列表下的字段
Winform 使用报表控件
点击工具箱拉去ReportViewer 到窗体显示报表位置,本文该控件名称为reportViewer2
数据库填充数据集
从数据库获取与数据源相同字段的数据
Sql语句执行函数
csharp
/// <summary>
/// 数据库连接与SQL语句执行
/// </summary>
/// <param name="connectionString">连接语句</param>
/// <param name="strSql">Sql执行语句</param>
/// <returns></returns>
public DataSet ConnReadSql(string connectionString,string strSql)
{
DataSet dataSet = new DataSet();
using (SqlConnection connection = new SqlConnection(connectionString))
{
try
{
connection.Open();
SqlDataAdapter command = new SqlDataAdapter(strSql, connection);
command.Fill(dataSet, "ds");
}
catch (System.Data.SqlClient.SqlException ex)
{
throw new Exception(ex.Message);
}
}
return dataSet;
}
数据库填充数据集
csharp
private void Form1_Load(object sender, EventArgs e)
{
try
{
string connectionString = "Server=.;Integrated Security=SSPI;Database=BRL_measurement_DB";
string sql = "SELECT dateTime,normName,param1,param2,param3 FROM View_Data_Qualification";
DataSet dataSet = new DataSet();
dataSet = ConnReadSql(connectionString, sql);
///---向报表绑定数据源
this.reportViewer2.ProcessingMode = ProcessingMode.Local;
this.reportViewer2.LocalReport.DataSources.Add(new ReportDataSource("DataSet1001", dataSet.Tables[0]));
///---向报表查看器指定显示的报表
this.reportViewer2.LocalReport.ReportPath = @"..\..\Report1.rdlc";
this.reportViewer2.LocalReport.Refresh();
this.reportViewer2.RefreshReport();
}
catch (Exception er)
{
MessageBox.Show(er.Message.ToString());
}
}
动态表头设计
项目中如果表头需要中英文转换等需求,可以考虑动态表头设计
添加表头参数
打开报表数据------点击参数------添加参数
注意:该部位添加的参数需要与程序中参数名相同
绑定表头参数
右击表格框------参数------双击索要显示值------表达式正确------确定
表头数据添加与绑定
csharp
private void Form1_Load(object sender, EventArgs e)
{
try
{
string connectionString = "Server=.;Integrated Security=SSPI;Database=BRL_measurement_DB";
string sql = "SELECT dateTime,normName,param1,param2,param3 FROM View_Data_Qualification";
DataSet dataSet = new DataSet();
dataSet = ConnReadSql(connectionString, sql);
Random random = new Random();
int J = random.Next(18,21);
//动态表头设计
ReportParameter[] parameters=new ReportParameter[3];
if (J%2==0)
{
parameters[0] = new ReportParameter("ReportParameter1", "序号");
parameters[1] = new ReportParameter("ReportParameter2", "规格");
parameters[2] = new ReportParameter("ReportParameter3", "数据1");
}
else
{
parameters[0] = new ReportParameter("ReportParameter1", "Num");
parameters[1] = new ReportParameter("ReportParameter2", "Specifications");
parameters[2] = new ReportParameter("ReportParameter3", "Data1");
}
///---向报表绑定数据源
this.reportViewer2.ProcessingMode = ProcessingMode.Local;
this.reportViewer2.LocalReport.DataSources.Add(new ReportDataSource("DataSet1001", dataSet.Tables[0]));
///---向报表查看器指定显示的报表
this.reportViewer2.LocalReport.ReportPath = @"..\..\Report1.rdlc";
//动态表头设置
this.reportViewer2.LocalReport.SetParameters(parameters);
this.reportViewer2.LocalReport.Refresh();
this.reportViewer2.RefreshReport();
}
catch (Exception er)
{
MessageBox.Show(er.Message.ToString());
}
}
表格常用函数
行数自增长
=RowNumber(Nothing)
表格颜色
选中一行更改颜色
表格颜色表达式
点击文本框属性------填充------点击函数Fx------点击函数IIF------选择要判断的字段------赋值颜色。
该函数表明:如果param1值为真则为第一个参数,为假则为第二个参数,为空不做判断
行、列可见性
单击一行或一列,选择属性------可见性------基于表达式显示或隐藏------点击Fx
=IIf(IsNothing(Fields!param3.Value),true,false)