当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: 如何实现如下语句 if messagedlg(是否真的删除该生档案,mtconfirmation, [mbyes, mbno], 0) = mryes then 我写的代码 smd1.buttoncount:=2; smd1.caption := 系统提示; smd1.text:= 是否要真的删除此条记录吗!; smd2.showmodal; ??这里不知道怎么写了 datamodule1......
    摘要: 各位老兄好: 我现在的想法是用宏定义一个不定参数的函数, 方法: #define deg_printf(lin) printf lin 在应用中应用: deg_printf( ("this is no %d", n) ); 它等价于 printf ("this is no %d", n); 我现在的想法,是想把他输出到错误终端, 谁用好的想法??......


水晶报表如何动态绑定数据求代码

现在正在做一个查询学生成绩的Winform.现在form上添加了一个datagrid和一个crystalreportview,根据要求查询学生成绩记录并显示在datagrid中已实现,现在的想法是水晶报表也要实现得到和datagrid中相同的数据,即运行以后datagrid和cristalreport动态绑定同一个dataset,这儿绑定的是dataview.即datagrid显示什么数据,crystalreportview就显示什么数据.然后再在crystalreportview中把表打印出来.打印再且不说,动态绑定dataset就花了我不少时间.  
  主要代码如下:  
  private   void   SearcherBk_Load(object   sender,   System.EventArgs   e)  
  {  
          dbCon=new   dbConnect();  
  dbCon.Open();  
  BkMage=new   BkMag(dbCon);  
  DataSet   DS=new   DataSet();  
                          SqlDataAdapter   DA=new   SqlDataAdapter();  
  TheRpt=new   CrystalReport2();  
  //TheRpt.SetDataSource(BkMage.GetDataView());  
  crystalReportViewer2.ReportSource=TheRpt;  
  DA.SelectCommand=new   SqlCommand("select   distinct   专业名   from   ZyDm",dbCon.GetDbCon()   );  
  DA.Fill(DS,"zym");  
  string   a;  
  DataRow   DR;  
  for   (int   i=0;i<DS.Tables["zym"].Rows.Count;i++)      
  {  
  DR=DS.Tables["zym"].Rows[i];  
  a=DR[0].ToString();    
  cbZym.Items.Add(a);  
  cbZym.Text=a;  
   
   
  }  
  //cbZym.DataSource=DS.Tables["zym"];  
  //cbZym.DisplayMember   ="专业名"   ;     //cbZym.ValueMember="专业名"    
         
   
  DA.SelectCommand=new   SqlCommand("select   distinct   开课学期   from   KeC",dbCon.GetDbCon()   );  
  DS.Clear();    
  //DataSet   DT=new   DataSet();;  
  DA.Fill(DS,"xq");  
  cbXq.DataSource   =DS.Tables["xq"   ];  
  cbXq.DisplayMember="开课学期";  
          cbXh.Enabled   =false;  
  cbXh.Text="";  
   
           
  }  
   
  private   void   button1_Click(object   sender,   System.EventArgs   e)  
  {  
          if(cbXh.Enabled==false)  
  BkMage.SetSeleCmd(cbZym.Text   ,cbXq.Text,"",true   );  
  else  
  BkMage.SetSeleCmd(cbZym.Text,cbXq.Text,cbXh.Text,false);          
  BkInfo.DataSource=BkMage.GetDataView();  
  TheRpt.SetDataSource(BkMage.GetDataView());  
  this.crystalReportViewer2.ReportSource=TheRpt;  
  //----------------------------------------------------------------------//  
  this.crystalReportViewer2.RefreshReport();  
  if   (BkMage.GetDataView().Count==0   )  
  MessageBox.Show("当前无任何记录!","信息");  
  }  
  当程序执行到this.crystalReportViewer2.ReportSource=TheRpt;时,出错,显示为  
   
  未处理的“CrystalDecisions.CrystalReports.Engine.InvalidArgumentException”类型的异常出现在   crystaldecisions.crystalreports.engine.dll   中。  
   
  其他信息:   文件   C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\temp_4d10433c-5944-4f81-be03-581347fcb397.rpt   内出错:  
  无效表号。  
   
  BkMage.cs为代码剥离出来的类.  
  请高手们帮忙,马上要交差了.最好帮我指出错误并更正一下,我很赖的哦.  
 

NO.1   作者: lisoft2002

DataSet是一定要建的,报表的列一顶是固定的,内容可以随便的填充,但报表的样子是必须先确定的

NO.2   作者: zhongwanli

先声明一个CrystalReport   的对象和DataSet   对象  
   
  用SqlDataAdapter   的fill   方法填充DataSet   后  
   
  将Dataset   绑定到CrystalReport   ,用SetDataSource方法  
   
  即可,如果你想再绑定到查看器上  
   
  crystalreportviewer1.ReportSource=CrystalReport对象


    摘要: 真是不习惯,阿拉丁很不错啊,可惜封了 ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE