.net 水晶报表自动生存列的问题,大家帮忙看看!!!

博客讲述在报表操作中,使用IFildeObject对象添加参数字段,用TextObject对象显示报表列。通过CheckBox选择字段填充DataSet,给报表自动写列名和参数字段赋值。但传Int类型值时需格式化字段,否则无法显示,使用的是.net 2003自带的水晶报表9.1.000,求助解决办法。

 

None.gif        Dataset1 ds;                            //DataSet对象
None.gif        
string sqlText;                            //根据选择的字段来写的查询语句
None.gif        ParameterFields parameters;    //参数字段集合
None.gif        ParameterField parameter;      //参数字段对象
           CrystalReport1 report1;        //报表对象

下面是通过一个Button的事件!报表里面我把要传值的参数字段都加到了报表中用的IFildeObject对象 但显示报表列的时候我用的是TextObject 对象.

None.gif    public TextObject GetTextObject(ReportDocument Report,string reportObjectName)
ExpandedBlockStart.gif     {  
InBlock.gif            TextObject text;
InBlock.gif            text 
= Report.ReportDefinition.ReportObjects[reportObjectName] as TextObject;
InBlock.gif            
if(text != null)
InBlock.gif                
return text;
InBlock.gif            
else
InBlock.gif                
return null;
ExpandedBlockEnd.gif        }

None.gif

这里是给TextObject 传值;

           None.gifstring field = "";
None.gif            parameters 
= new ParameterFields();
None.gif            
string[] FieldString;
None.gif            
if(this.checkBox1.Checked)
None.gif                field 
= this.checkBox1.Text;
None.gif            
if(this.checkBox2.Checked)
None.gif                field 
+= "," + this.checkBox2.Text;
None.gif            
if(this.checkBox3.Checked)
None.gif                field 
+= "," + this.checkBox3.Text;
None.gif            
if(this.checkBox4.Checked)
None.gif                field 
+= "," + this.checkBox4.Text;
None.gif            
if(this.checkBox5.Checked)
None.gif                field 
+="," + this.checkBox5.Text;
None.gif            
if(field == "")
ExpandedBlockStart.gifContractedBlock.gif            
dot.gif{
InBlock.gif                MessageBox.Show(
"选择字段");
InBlock.gif                
return;
ExpandedBlockEnd.gif            }

None.gif            
if(field.Substring(0,1== ","
None.gif                field 
= field.Substring(1,field.Length -1);
None.gif            FieldString 
= field.Split(',');
None.gif
None.gif            sqlText 
= "Select "+ field.ToString()+ " from Power.busy"//根据条件自动生产查询语句
None.gif

None.gif            dbConnection 
= new OracleConnection(constring);
None.gif            dbAdapter 
= new OracleDataAdapter(sqlText,dbConnection);
None.gif            ds 
= new Dataset1();
None.gif            
try
ExpandedBlockStart.gifContractedBlock.gif            
dot.gif{
InBlock.gif                dbAdapter.Fill(ds.Tables[
"Busy"]);
ExpandedBlockEnd.gif            }

None.gif            
catch(Exception ex)
ExpandedBlockStart.gifContractedBlock.gif            
dot.gif{
InBlock.gif                Debug.Fail(ex.Message);
ExpandedBlockEnd.gif            }

这里我做测试用了CheckBox 来选择字段,填充DataSet

None.gifreport = new CrystalReport1();
None.gif            
for(int i=0;i<FieldString.Length;i++)
ExpandedBlockStart.gifContractedBlock.gif            
dot.gif{
InBlock.gif                report 
= new CrystalReport1();
InBlock.gif                report.DataDefinition.FormulaFields[
"myField"+(i+1)].Text = "{BUSY."+FieldString[i]+"}";
InBlock.gif                
string StringText = "";
InBlock.gif                StringText 
= FieldString[i].ToString();
InBlock.gif                TextObject textObject;
InBlock.gif                
string textObjects = "Text"+i.ToString();
InBlock.gif
InBlock.gif                
if(FieldString[i] == "ID")
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    textObject 
= GetTextObject(report,textObjects);
InBlock.gif                    textObject.Text 
= "业务ID号码";
ExpandedSubBlockEnd.gif                }

InBlock.gif                
if(FieldString[i] == "Name")
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    textObject 
= GetTextObject(report,textObjects);
InBlock.gif                    textObject.Text 
= "业务名称";
ExpandedSubBlockEnd.gif                }

InBlock.gif                
if(FieldString[i] == "CATALOG")
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    textObject 
= GetTextObject(report,textObjects);
InBlock.gif                    textObject.Text 
= "";
ExpandedSubBlockEnd.gif                }

InBlock.gif                
if(FieldString[i] == "TOWN")
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    textObject 
= GetTextObject(report,textObjects);
InBlock.gif                    textObject.Text 
= "镇名称";
ExpandedSubBlockEnd.gif                }

InBlock.gif                
if(FieldString[i] == "DISTRICT")
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    textObject 
= GetTextObject(report,textObjects);
InBlock.gif                    textObject.Text 
= "";
ExpandedSubBlockEnd.gif                }

InBlock.gif
InBlock.gif
InBlock.gif                
int j=0;
InBlock.gif                
for(j=i+1;j<6;j++)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
dot.gif{
InBlock.gif                    parameter 
= new ParameterField();
InBlock.gif                    parameter.ParameterFieldName 
= "myParaField"+j.ToString();
InBlock.gif                    parameters.Add(parameter);
InBlock.gif
InBlock.gif                    parameterValue 
= new ParameterDiscreteValue();
InBlock.gif                    parameterValue.Value 
= "";
InBlock.gif
InBlock.gif                    parameter.CurrentValues.Add(parameterValue);
InBlock.gif                    parameters.Add(parameter);
InBlock.gif                    parameter.EnableAllowMultipleValue 
= false;
InBlock.gif                    parameter.EnableAllowEditingDefaultValue 
= false;
InBlock.gif
InBlock.gif                    
this.crystalReportViewer2.ParameterFieldInfo = parameters;
InBlock.gif                    report.SetDataSource(ds);
InBlock.gif                    
this.crystalReportViewer2.ReportSource = report;
ExpandedSubBlockEnd.gif                }


这里是给报表自动写列名和给参数字段赋值.值是都可以传到但是有问题就出在报表里面,当传的值是Int类型的,需要格式化字段,如果没有格式就显示不出来,我现在用的水晶报表是9.1.000的 .net 2003自己带的,而且很多都不是它帮助里面提供的属性.请问谁做过这方面的报表和思路希望朋友帮忙解决!!!
谢谢大家!!!

转载于:https://www.cnblogs.com/xjaifly/archive/2005/09/15/237582.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值