C#水晶报表的问题?

awnuytnh 2009-09-27 02:25:59
水晶报表里有一个push的模式,我想知道怎么回事,pull我知道怎么弄了,可是这个push是怎么弄,说是有一个dateset,我想知道建的过程,比如是先建dateset然后再建CrystalReport,还是怎么样,还有,是不是先让dateset连接数据库?然后在将dateset和CrystalReport绑定,具体流程希望大家帮我说一下,细节部分我自己再多研究研究...
...全文
771 137 打赏 收藏 转发到动态 举报
写回复
用AI写文章
137 条回复
切换为时间正序
请发表友善的回复…
发表回复
U2008 2009-11-25
  • 打赏
  • 举报
回复


啊。。
phiso10 2009-10-15
  • 打赏
  • 举报
回复
从昨天看到今天,
挺过瘾的。
LZ真勤学好问呀!还有大侠出手就是不一样。
juyamei126 2009-10-15
  • 打赏
  • 举报
回复
抱歉,帮不上什么忙,顶
abc_aaa_012 2009-10-15
  • 打赏
  • 举报
回复
ding...
LANVICEH 2009-10-14
  • 打赏
  • 举报
回复
最近我在学网络编程.好象是做飞信那种款式吧..东西代码是不多..就是不太懂..
awnuytnh 2009-10-14
  • 打赏
  • 举报
回复
弱弱的顶一下...
awnuytnh 2009-10-14
  • 打赏
  • 举报
回复
[Quote=引用 126 楼 babyt 的回复:]
..弱弱的问一句,你配tableAdapter做什么。。
[/Quote]
代码我是根据你那个PUSH教程写的啊,有什么不对么?麻烦告诉一下,还有泰哥你能帮我解决那个选择时间段的问题么,就是那个dateTimePicker控件用法的问题
阿泰 2009-10-14
  • 打赏
  • 举报
回复
水晶报表的问题能翻到130多楼,这是我回答问题多年来第一次遇到,呵呵。

至于131楼的问题,是个基本逻辑。

da.Fill(dt1, "sms_alarm");
if (dt1.Tables[0].Rows.Count==0)
{
//具体的自己改改
MessageBox.Show("啥也没有");
crystalReportViewer1.Visual=false;
}
else
{
//

//创建我们的DataSet1实例

//填充dt1



ReportDocument CrystalReport1 = new ReportDocument();
string reportPath = @"C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\12110\12110\Crystalreport1.rpt";
CrystalReport1.Load(reportPath);

//绑定数据集,注意,一个报表用一个数据集。
CrystalReport1.SetDataSource(dt1);
crystalReportViewer1.ReportSource = CrystalReport1;
}


真诚希望这是本帖的最后一个回帖了。。看得晕。。
awnuytnh 2009-10-14
  • 打赏
  • 举报
回复
嘿嘿嘿,很不好意思的再问一个问题,保证是最后一个了,就是我不是要选取一段时间然后把属于这段时间内的内容显示出来么,当在我选取的这段时间里有信息的话那一切都没问题,可是如果在我选取的这段时间里没有信息的话就什么都不显示,所以我想做一个if语句,当else时,弹出一个messagebox提示,那如果这样的话我应该在if语句里的()里写入什么条件呢?
awnuytnh 2009-10-14
  • 打赏
  • 举报
回复
已解决,我把整个条理说一次,给以后的学习者一个参考,其实大部分在阿泰的教程里大家都可以看懂,只不过有一些细节可能大家没注意,我用的是2005,有一个地方,就是在dateset里右键数据集,选择里面的配置,打开,里面是让你输入你的SQL语句的,要注意,这的SQL语句一定要和你在后台代码里写的一至,否则就会出现问题,还有有些人在刚做的时候会修改dateset里的数据,这时你就要重新再一次重新绑定CrystalReports和dateset,有很多人没注意到这一点,下面我就说一下我所说的那个方法了,就是选择时间段的那个了,首先我先把代码给大家分享一下
select 字段 from 表名 where 数据库中你要查的字段>=TO_DATE('" + dateTimePicker1.Value.ToString("yyyy-MM-dd") + "','YYYY-MM-DD') and 数据库中你要查的字段<=TO_DATE('" + dateTimePicker2.Value.ToString("yyyy-MM-dd") + "','YYYY-MM-DD') 


这是查询代码,这里要注意,这段代码要保证后台写的和我刚才说的在dateset里的配置里的代码要一致,一切都好后就开始喽,先在CrystalReport1.rpt里的空白处点右键,选插入->交叉表 打开,就会打开一个交叉表专家的界面,在交叉表的选项里把行和列分别要表示的字段写上去,然后重点来了,就是在汇总字段里选择你要统计的字段,都选择好后有一个更改汇总的按扭就会变亮,打开一个选项界面,在里面就会有一个列表,选择计数(因为我要统计查询出来的信息数量所以选这个,有其它需求的可以选别的),然后点确定,就出现一个类似excel表格的东西,不用理它,把它拖到界面外,然后选中它,点击右键,然后选择插入交叉表图表,之后的东西就和正常插入图表的一样了,呵呵,弄了这么久总算弄明白了,在这也要谢谢阿泰哥耐心的指导,还有一些朋友细节上的帮助,谢谢大家,贴子我明天中午结,会加点分的,因为回复太多了我得散点分给大家,麻烦大家了....
awnuytnh 2009-10-13
  • 打赏
  • 举报
回复
代码我是这么写的
"select * from sms_alarm where alarm_time1>=TO_DATE('"+ dateTimePicker1.Value.ToString("yyyy-MM-dd")+"','YYYY-MM-DD') and alarm_time1 <=TO_DATE('"+ dateTimePicker2.Value.ToString("yyyy-MM-dd")+"','YYYY-MM-DD')"; 

出现问题说是如下:

向导在配置tableAdapter时检测到以下问题:“FILL”:
详细信息:
已生成SELECT语句
无法分析查询文本


这是怎么回事?
阿泰 2009-10-13
  • 打赏
  • 举报
回复
唉。

做法就是我在113楼说的,简单的把语句替换掉就行了
如果不报错,就能出来结果了。
如果报错,就是这句的语法问题。


当然,你的这个SQL写法确实是不对,应该是这样

SQL="select * from 表名 where 数据库中时间字段名>=TO_DATE('"+ dateTimePicker1.Value.ToString("yyyy-MM-dd")+"','YYYY-MM-DD') and 数据库中时间字段名 <=TO_DATE('"+ dateTimePicker1.Value.ToString("yyyy-MM-dd")+"','YYYY-MM-DD')";


这个是基本的Oracle语法吧。。
awnuytnh 2009-10-13
  • 打赏
  • 举报
回复
108楼的朋友看到了再帮我解释一下行么?
awnuytnh 2009-10-13
  • 打赏
  • 举报
回复
谢谢你们了
....
阿泰 2009-10-13
  • 打赏
  • 举报
回复
..弱弱的问一句,你配tableAdapter做什么。。
awnuytnh 2009-10-13
  • 打赏
  • 举报
回复
把贴子顶起来...
awnuytnh 2009-10-12
  • 打赏
  • 举报
回复
分析得很对也很有条理,我现在就是想在这个SQL语句上做文章,我想知道如实现我想要的效果,108楼的说得好像有点道理,我在dateset里的配置里把SQL语句想换成选择时间的那个语句时就提示我跟to_date有关的东西,所以我想他能帮我解释一下...
wbpmrck 2009-10-12
  • 打赏
  • 举报
回复
楼主,我觉得你要把这个问题分解来看:
1:大致可分为“获取数据->展示数据” 2个阶段
2:水晶报表负责第2阶段,可以把数据集(不管你以什么形式获得的DataSet)以你想要的方式展现在报表上
2:总体来说,第一步获取数据的方式有很多,

楼主的问题:按时间范围来获取,那就需要在查询条件上做文章,也就是你代码中
da = new OracleDataAdapter("SELECT ALARM_TIME1,ID FROM WISEFLY.SMS_ALARM ", cn);
这个select语句就是从oracle数据库中获取数据的方法,所以你的查询条件也应该体现在这个语句中,就这么简单
awnuytnh 2009-10-12
  • 打赏
  • 举报
回复
[Quote=引用 113 楼 babyt 的回复:]
你把代码加在这里不就可以了吗,怎么直接就没加?
把这个sql替换成你之前写的那个
da = new OracleDataAdapter("SELECT ALARM_TIME1,ID FROM WISEFLY.SMS_ALARM ", cn);

[/Quote]
你的意思是我把"select * from 表名 where 数据库中时间字段名>='"+ dateTimePicker1.Value.ToString("yyyy-MM-dd")+"' and 数据库中时间字段名 <='"+ dateTimePicker1.Value.ToString("yyyy-MM-dd")+"'";
替换掉这句?
阿泰 2009-10-12
  • 打赏
  • 举报
回复
你把代码加在这里不就可以了吗,怎么直接就没加?
把这个sql替换成你之前写的那个
da = new OracleDataAdapter("SELECT ALARM_TIME1,ID FROM WISEFLY.SMS_ALARM ", cn);
加载更多回复(116)

110,533

社区成员

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

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

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