水晶报表字段类型

wartim 2009-06-15 03:49:39
网上的视频讲解介绍push模式是用的vs2003,
首先,他在vs2003里新建了一个数据集xsd,然后往里头添加一个个的element,而且每个element名字盘就可以设置字段类型
然后,新建一张报表,然后数据源指定为这个xsd,于是,报表设计器里就可以用这些xsd里设计的字段设计报表了,

我实验了下,设计完xsd后,通过运行时setdatasource自动通过表名和字段名去映射真实的字段,可以显示出字段值了
不过我用的是vs2005,数据集xsd新建后不能建立element而是要建立一张table,然后建列,但只能写列名,不能设置列的类型(设置tableadapater不考虑),报表设计器数据源关联到这个xsd后,所有字段都是识别成字符串的,导致日期字段显示无法格式化(右键字段格式化编辑器是字符串的格式化编辑器,没有日期设计标签),即使把报表上的字段的时、分、秒都设置为crNo...了也没用,输出还是字符串,类似:2009-1-1 0:0:0,不要时间部分,怎么处理?

05里的xml架构项目倒很像03里的数据集xsd项目,可惜无法用来当设计时的数据源,之所以不用sql语句、tableadapater之类的东西,是因为我的报表数据集是动态的,而且数据是早就读进来的

不想用read xml 的方法,有个xsd字段列表比较直观,也容易维护,现在的问题就是怎么设置vs05的数据集xsd文件里的列的类型为datatime,使得成为数据源后报表设计器自动识别该字段为日期字段

public frmPreview(String Title, Type ReportType, DataTable[] DataTables)
{
InitializeComponent();

crystalReportViewer1.ShowGroupTreeButton = false;
crystalReportViewer1.DisplayGroupTree = false;
ReportClass RC = (ReportClass)Activator.CreateInstance(ReportType);
DataSet DS = new DataSet();
DS.Tables.AddRange(DataTables);
RC.SetDataSource(DS);
crystalReportViewer1.ReportSource = RC;
}

...全文
125 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wartim 2009-06-20
  • 打赏
  • 举报
回复
没看仔细
wartim 2009-06-20
  • 打赏
  • 举报
回复
自己解决了,没看自己,vs08的数据集xsd也可以设置字段类型,不过是挪到属性里了
qldsrx 2009-06-16
  • 打赏
  • 举报
回复
我用的是VS2008,创建水晶报表时直接在“创建新连接”里点OLE DB建立好一个新连接,然后双击该连接下的“添加命令”,就弹出一个SQL语句录入的窗口,还可以添加参数,不过一般不需要参数,除非设计主从表的时候。

完了你要使用该报表也很简单,把在水晶报表创建时使用的SQL语句复制到C#里用它创建一个DataTable,同一个SQL语句,结构肯定一样了,记得是用new DataTable("命令")来创建DataTable,因为水晶报表里“添加命令”产生的表的表名就叫做"命令",必须保证一致才行,别设置数据库的登录,设置好DataSource就OK了。
mabailin 2009-06-16
  • 打赏
  • 举报
回复
直接用存储过程做数据源
qldsrx 2009-06-16
  • 打赏
  • 举报
回复
推荐直接使用SQL语句作为数据源设计,让系统推断数据类型。我不知道楼主你顾虑什么,我用起来就好好的,也许是你什么地方没搞清楚吧。
evaa006 2009-06-16
  • 打赏
  • 举报
回复
帮顶
wts_net 2009-06-16
  • 打赏
  • 举报
回复

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧