至于水晶报表的一些定义之类的东西,在这就不说了,在google、baidu上有很多,直接进入正题吧。
  
   往往在做报表的时候,不是拽出来的每一字段都是合适每一个客户的电脑的,也就是报表内容整体偏向左或偏向右,这些可能性都是存在的。如果每一次都要因为这改来改去,等于做许多无用功。

            
            
//实例化报表
            CryTCL crystal =new CryTCL();

            
//登录信息
            crystal.SetDatabaseLogon(clsConn.DATABASE_LOG ,clsConn.DATABASE_IPPASSWPRD,clsConn.DATABASE_ADDRESS,clsConn.DATABASE_NAME  );

            
//绑定数据源(datatable)
            crystal.SetDataSource(this.crydDs( this.sqlwhere ).Tables[0]);

            
//调用动态的字段方法
            setLocal(crystal);

            
            
this.cryViewTCL.ReportSource = crystal ;
            
this.cryViewTCL.Refresh();

            
/// <summary>
            
/// 给水晶报表字段的属性传参数
             
/// </summary>
            
/// <param name="report"></param>

        private void setLocal(CrystalDecisions.CrystalReports.Engine.ReportDocument report )
        
{
            
//水平
            for(int m= 1;m< 74;m++)  //m< 74 -->  报表的字段数
            {
                FieldObject fobj 
= (FieldObject)report.ReportDefinition.ReportObjects["Field"+m];
                
                
//1厘米=566.6666 缇,这里我是通过配置文件来取值的,这个可以根据每个人所喜欢来做 
                
//0.1 * Convert.ToInt32(clsIO.GetKeyValue("leftToMiddle"))表示毫米=厘米*0.1
                Double left = fobj.Left + 0.1 * Convert.ToDouble(clsIO.GetKeyValue("leftToMiddle")) * 566.6666 ; 

                fobj.Left 
= Convert.ToInt32(left);
            }

            
//坚直
            for(int m= 1;m< 74;m++)
            
{
                FieldObject fobj 
= (FieldObject)report.ReportDefinition.ReportObjects["Field"+m];
                
                
//Double left ;
                Double top = fobj.Top + 0.1 * Convert.ToDouble(clsIO.GetKeyValue("topToMiddle")) * 566.6666 ; 

                fobj.Top 
= Convert.ToInt32(top);
            }

        }



如果有什么写得不对的,请各位多多指教。谢谢
posted on 2008-01-24 11:05  渔民  阅读(777)  评论(0编辑  收藏  举报