当前位置: 首页 > news >正文

报表生成器FastReport .Net用户指南:表达式(下)

在上一篇文章《报表生成器FastReport .Net用户指南:表达式(上)》中,我们已经介绍了表达式中的表达式编辑器引用报告对象使用 .Net 函数数据元素参考这四部分,接下来让我们继续介绍表达式中的:引用数据源引用总值参考报告参数

FastReport .Net是一款全功能的Windows Forms、ASP.NET和MVC报表分析解决方案,使用FastReport .NET可以创建独立于应用程序的.NET报表,同时FastReport .Net支持中文、英语等14种语言,可以让你的产品保证真正的国际性。

FastReport.NET官方版下载(qun:585577353)icon-default.png?t=N7T8https://www.evget.com/product/1861/download

引用数据源

在引用数据源列时,使用以下格式:

[DataSource.Column]

例如,源名称与列名称之间用句号隔开:

[Employees.FirstName]

如果使用关系引用数据源,源名称可以是复合的。更多详情,请参阅 "数据 "部分。例如,可以这样引用相关数据源列:

[Products.Categories.CategoryName]

让我们看看下面这个在表达式中使用列的示例:

[Employees.FirstName] + " " + [Employees.LastName]

这里需要注意的是:每一列都有明确的数据类型,该类型在 "DataType(数据类型)"属性中设置(如果事先在 "Data(数据)"窗口中选择了数据列,则可以在 "Properties(属性)"窗口中看到)。表达式中如何使用列取决于列的类型。例如,在上述示例中,名和姓这两列都是字符串类型,因此可以这样使用。在下面的示例中,我们将尝试使用数值类型的 "Employees.Age "列,这将导致错误:

[Employees.FirstName] + " " + [Employees.Age]

出现错误的原因是,字符串和数字不能混用。为此,您需要将数字转换为字符串:

[Employees.FirstName] + " " + [Employees.Age].ToString()

在本例中,我们把 "Employees.Age "列当作一个整数变量来引用。事实也是如此。我们知道,所有表达式都是经过编译的。从编译器的角度来看,所有非标准的东西(如引用数据列)都会被转换成另一种类型,而这种类型是编译器可以理解的。因此,最后一个表达式将被转换成下面的形式:

(string)(Report.GetColumnValue("Employees.FirstName")) + " " +
(int)(Report.GetColumnValue("Employees.Age")).ToString()

如图所示,FastReport 按以下方式更改对数据列的引用:
[Employees.FirstName] --> (string)(Report.GetColumnValue("Employees.FirstName"))

[Employees.FirstName] --> (string)(Report.GetColumnValue("Employees.FirstName"))[Employees.Age] --> (int)(Report.GetColumnValue("Employees.Age"))

也就是说,我们可以在表达式中将数据列当作具有确定类型的变量来使用。例如,下面的表达式将返回雇员姓名的第一个符号:

[Employees.FirstName].Substring(0, 1)
引用总值

要引用一个总值,请使用其名称:

[TotalSales]

FastReport 将引用总数转换为以下形式:

Report.GetTotalValue("TotalSales")

正如您所看到的,这里没有使用数据类型。之所以如此,是因为总值属于 FastReport.Variant 类型。它可以在任何表达式中直接使用,因为它会自动转换为任何类型。例如:

[TotalSales] * 0.2f
参考报告参数

要用报告参数,应使用其名称:

[Parameter1]

参数可以嵌套。在这种情况下,父参数名和子参数名都应使用以下形式:

[ParentParameter.ChildParameter]

参数有明确的数据类型。它在参数的 "DataType "属性中设置。在表达式中的使用方式取决于参数的数据类型。

FastReport 将对报告参数的引用转换为以下方式:

((string)Report.GetParameterValue("Parameter1"))
http://www.lryc.cn/news/312692.html

相关文章:

  • JavaScript极速入门(1)
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:浮层)
  • Meta AI移动设备上部署LLM的新框架MobileLLM
  • 使用Tesseract-OCR对PDF等图片文件进行文字识别
  • 部署YOLOv8模型的实用常见场景
  • SpringBoot缓存
  • STC89C52串口通信详解
  • 基础算法|线性结构|前缀和学习
  • 设计模式之模版方法实践
  • sql中COALESCE函数详解
  • rust-analyzer报错“Failed to spawn one or more proc-macro servers,....“怎么解决?
  • Communications--9--一文读懂双机热备冗余原理
  • 可调恒定电流稳压器NSI50150ADT4G车规级LED驱动器 提供专业的汽车级照明解决方案
  • Unity中使用代码动态修改URP管线下的标准材质是否透明
  • 关于制作Python游戏全过程(汇总1)
  • 独立站营销新纪元:AI与大数据塑造个性化体验的未来
  • C语言项目实战——贪吃蛇
  • ArmSoM规划开发基于RK3576的开发套件
  • 视频剪辑如何提取伴奏?短视频剪辑有妙方
  • 【Web】浅浅地聊SnakeYaml反序列化两条常见利用链
  • 详解openGauss客户端工具gsql的高级用法
  • 开源工业软件:SCADA系统开源
  • 关于AI彩票预测算法的设想
  • 设计模式之策略模式实践
  • 讨论:解决哈希冲突的几种方法
  • 遥感分析时什么情况下需要做大气校正?
  • 设计模式学习笔记 - 设计原则 - 7.DRY 原则及提高代码复用性
  • 方法的调用
  • VGW在 Windows 平台上局域网就绪的旁路由器程序
  • 能源大数据采集,为您提供专业数据采集服务