您的位置:程序门 -> .net技术 -> c#



vs2005水晶报表怎么打dataset数据问题,


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


vs2005水晶报表怎么打dataset数据问题,[已结贴,结贴人:wuernan]
发表于:2007-01-17 10:12:32 楼主
昨天我搞了一天无法解决,参考了一篇用dataset做打印数据源的,但是

我打的时候报错,该报表不含表,如何解决

crystalreport1   orpt   =   new   crystalreport1();
orpt.setdatasource(myclass.ds2.tables[0]); <-----该报表不含表

我确定里面有数据表啊,到底是哪里错了,顺便问下如何设定要打印的字段
发表于:2007-01-17 10:25:231楼 得分:0
急求!!!
发表于:2007-01-17 10:40:152楼 得分:0
up
发表于:2007-01-17 10:42:423楼 得分:10
orpt.setdatasource()这里需要一个类型为table的参数,并且table不能为空表
估计造成你错误的原因是tables[0]里没有值
或者把0换成你的table   name试试
发表于:2007-01-17 10:48:014楼 得分:10
da.fill(ds2);
orpt.setdatasource(myclass.ds2.tables[0]);


da.fill(ds2, "xxx ");
orpt.setdatasource(myclass.ds2.tables[ "xxx "]);

试试
发表于:2007-01-17 10:48:435楼 得分:0
tables[0]里肯定不是空表,因为我是把它当作datagridview的数据源的,view里有结果就说明这个表不为空吧,我改了下

datagridview2.datasource   =   myclass.ds2.tables[ "results "]; <---成功,并且正常显示


crystalreport1   orpt   =   new   crystalreport1();
orpt.setdatasource(myclass.ds2.tables[ "results "]); <---仍然出错,无表

求解决办法
发表于:2007-01-17 10:50:346楼 得分:0
da是指什么???dataadapter么???我这个dataset是从webservice那头传来的
发表于:2007-01-17 10:51:037楼 得分:0
不知道楼主的datagridview2与crystalrrport1在不在同一个页面上,如果不是的话,需要把ds2的属性由private   设置为public
发表于:2007-01-17 10:55:178楼 得分:0
不在同个页面上,crystalrrport1不是应该是个单独的rpt文件么??

我把ds2写成这样
public   static   class   myclass
{
public   static   dataset   ds2;
}

不知这样是否对???
发表于:2007-01-17 10:56:449楼 得分:0
估计是不能设置为static的,就用
public   dataset   ds2;试试
发表于:2007-01-17 11:00:1110楼 得分:0
那是不是类也要改成非静态的???
public   myclass
{
public   dataset   ds2;
}

这样???
发表于:2007-01-17 11:01:5311楼 得分:0
不知道你的具体情况,应该直接写成这样就ok
public   dataset   ds2;

不需要单独写一个类
发表于:2007-01-17 11:04:5712楼 得分:0
非静态类要求对象引用,要怎么写哦,我myclass.后面没有出现ds2
发表于:2007-01-17 11:08:1413楼 得分:0
晕了,还是这个错,该报表不含表
发表于:2007-01-17 11:10:2214楼 得分:0
namespace   windowsapplication1
{
        public   partial   class   form1   :   form
        {
                private   sqlconnection   cn   =   new   sqlconnection( "... ");
                private   sqldataadapter   da;
                public   dataset   ds   =   new   dataset();
                .......
........

这样申明的ds即可以在datagridview里用又可以在crystalrrport1用了.

发表于:2007-01-17 11:15:2615楼 得分:60
我也跟楼主有同样的问题,不过你可以试一下
orpt.setdatasource(myclass.ds2)
我把setdatasource放成dataset时就通过了,
不知道你能不能行?!
发表于:2007-01-17 11:20:0216楼 得分:0
我写在initializecomponent();里面了,可是~~~~~~~~~~~~~
发表于:2007-01-17 11:24:0217楼 得分:0
不管写在哪儿,管用就行
发表于:2007-01-17 11:25:1618楼 得分:0
你可行了   !?你可是什么!?
发表于:2007-01-17 11:25:1719楼 得分:20
樓主確定自己的dataset一定有表
那就是樓主的報表有問題
建報表時里面的表和dataset要相對應
发表于:2007-01-17 11:25:5020楼 得分:0
我在initcompent();里面声明了public   system.data.dataset   ds2   =   new   system.data.dataset   ();

依然如此,我看了下代码,我并没有清楚数据或者干什么,不会取玩数据dataset里的数据就没了吧??
发表于:2007-01-17 11:27:2921楼 得分:0
你的dataset的值呢!?你不会是空数据集吧!?
发表于:2007-01-17 11:27:5622楼 得分:0
建報表時里面的表和dataset要相對應


如何对应,请教
发表于:2007-01-17 11:28:5523楼 得分:0
你换datagrid试绑定一下,看能不能显示数据
发表于:2007-01-17 11:30:2524楼 得分:0
orpt.setdatasource(myclass.ds2)
我把setdatasource放成dataset时就通过了,


括号里参数换成dataset是不?
发表于:2007-01-17 11:32:0825楼 得分:0
是哦!!!!
发表于:2007-01-17 11:32:4726楼 得分:0
你能看见了吗!?
发表于:2007-01-17 12:06:2827楼 得分:0
一样的错误,我把详细的代码贴出来给大家帮我分析下错在哪里

[webmethod]
        public   dataset   selectdb(string   query)                     //select查询,这个是webservice端的
        {
                try
                {
                        oracleconnection   cs   =   new   oracleconnection( "data   source=wms;user   id=abs_test;password=12345678; ");
                        oracledataadapter   mycommand   =   new   oracledataadapter(query,   cs);
                        dataset   mydataset   =   new   dataset();
                        mycommand.fill(mydataset,   "results ");
                        return   mydataset;
                }
                catch   (exception   ex)
                {
                        return   null;
                }
        }  


private   void   button5_click(object   sender,   eventargs   e)                 //查历史明细,                
{
                        try
                        {
                                movestore.localhost.service   query   =   new   movestore.localhost.service();
                               
                                ds2   =   query.selectdb( "select   a.billno,a.bookid,b.bookname,b.price,a.factoutqty,b.price*a.factoutqty   from   movestoredt   a,dict_bookcard   b   where   a.bookid=b.bookid   and   a.billno= "   +   textbox3.text);       <----这里把webservice回来的dataset给ds2;

                                datagridview2.datasource   =   ds2.tables[ "results "]; <-----这个也成功
                        }
                        catch   (exception   ex)
                        {  
                                messagebox.show(ex.message);  
                        }
                }


private   void   button7_click(object   sender,   eventargs   e) <------打印按钮
                {
                        crystalreport1   orpt   =   new   crystalreport1();
                        orpt.setdatasource(ds2);       <-------失败,没有表
                        //.reportsource   =   orpt;    
                        form   frm3=new   form3();
                        frm3.show();
发表于:2007-01-17 12:13:4628楼 得分:0
我在失败前一步写了句messagebox.show(ds2.tables.count.tostring());结果是1,说明不可能没有表
发表于:2007-01-17 12:29:4629楼 得分:0
建報表時里面的表和dataset要相對應
请问这要如何对应,我想就是这个问题,我在报表里用数据库专家找不到我定义的这个dataset
发表于:2007-01-17 12:43:2430楼 得分:0
datagridview2.datasource   =   ds2.tables[ "results "]; <-----这个也成功
????
我在我机子上试了一下,datagrid不显示数据!!!
发表于:2007-01-17 12:49:2431楼 得分:0
可是我可以显示啊,做一百次成一百次,


我找到问题症结了,报表里没有任何表,所以出错(我随便添了个表就通过了),但问题是我想添加的是ds2这个数据集里的表,不知应该怎么搞,数据库专家里浏览不到自定义的这个ds2!!!!!!!
发表于:2007-01-17 12:53:4832楼 得分:0
但是空白报表也可以绑定阿!!!
要不然人家直接用专家报表算了!
发表于:2007-01-17 12:55:0133楼 得分:0
那不等于报表是死的吗,必须制作好,不能自动生成!!!!
发表于:2007-01-17 12:58:3834楼 得分:0
我研究了一下,请问拉模型和推模型在哪里设置的   !!!
发表于:2007-01-17 13:08:4435楼 得分:0
拉和推是报表直接连数据库查数据对吧?可是我这个报表必须用本地的这个dataset,数据库在广域网的另一边,专家里只能看到xsd的数据集,整个ds2却无法看到
发表于:2007-01-17 13:09:4336楼 得分:0
goonhl(icebarg)   ,告诉我你的qq吧,这样比较方便
发表于:2007-01-17 13:15:1337楼 得分:0
不是吧拉模型

在拉模型中,驱动程序将连接到数据库并根据需要将数据“拉”进来。使用这种模型时,与数据库的连接和为了获取数据而执行的   sql   命令都同时由   crystal   reports   本身处理,不需要开发人员编写代码。如果在运行时无须编写任何特殊代码,则使用拉模型。

推模型

相反,推模型需要开发人员编写代码以连接到数据库,执行   sql   命令以创建与报表中的字段匹配的记录集或数据集,并且将该对象传递给报表。该方法使您可以将连接共享置入应用程序中,并在   crystal   reports   收到数据之前先将数据筛选出来。
发表于:2007-01-17 13:18:3538楼 得分:0
goonhl(icebarg),我的qq181408944,加我下,这样比较方便
发表于:2007-01-17 13:25:5839楼 得分:0
要不取个折衷方按,取dbgridview里面显示的数据进行打印这样是否可行???
发表于:2007-01-17 14:17:2040楼 得分:0
樓主用數據庫專家添加表就可以了
发表于:2007-01-17 14:46:0941楼 得分:0
郁闷就是数据库专家找不到弱dataset的表,只有强数据类型的表,但如果我返回的是强数据类型,就不让我转换成本地强数据类型,返回的弱数据类型,数据库专家无法看到,也没法转成强类型,可有好办法??
发表于:2007-01-17 15:12:2742楼 得分:0
03下面这样写通过了,没有问题,05.....怀疑bug   咳,先结帖吧
发表于:2007-01-17 15:13:3043楼 得分:0
數據庫專家只是個空的,只是把表結構放進去
至於數據你可以用sql語句導到dataset中(可以動態設置,根據不同參數導出不同數據),把它設置成報表的數據源就是了
這是最簡單的報表啊
沒你們想得那麼復雜


发表于:2007-01-17 15:32:3944楼 得分:0
关注。。帮顶..


快速检索

最新资讯
热门点击