虽然我有一个大问题要解决,但我正在尝试使用Axosoft的创建一个自定义报告。报告将包含从要显示的数据库中提取的特定项的计算总数和计数。其中一个这样的字段(Custom_163)是布尔值,其中true将它作为一种类型的项(增强),而false则将它作为另一种类型(维护)。我能够得到报告中项目总数的一个计数,但我想将其细分为总数的百分比。
问题:一个布尔字段将确定两种类型的项。区分它们来收集每一个的计数是我在挣扎的地方。
初始化变量:
private bool _oddRow = true;
private string[] _labels = new string[3];
private int _defectsTotal = 0;
private int _enhanceTotal = 0;
private int _maintenTotal = 0;详细信息部分(在这里它为项创建行):
public void Detail1_Format()
{
if (rpt.Fields.Contains("Custom_163") && rpt.Fields["Custom_163"].Value != null)
{
if ((bool)rpt.Fields["Custom_163"].Value == true)
{
//needs something here to add a count towards this type
return enhanceTotal;
}
else
{
//needs something here to add a count towards this type
return maintenTotal;
}
_defectsTotal++;
_enhanceTotal += enhanceTotal;
_maintenTotal += maintenTotal;
// To Color Every Other Row
if (_oddRow)
{
rpt.Sections["Detail1"].BackColor = System.Drawing.Color.FromArgb(224, 224, 224);
}
else
{
rpt.Sections["Detail1"].BackColor = System.Drawing.Color.White;
}
_oddRow = !_oddRow;
// Converting to String Values
if (rpt.Fields["ItemId"].Value == null) return;
}
}问题是专门针对以下行的:
if((bool)rpt.Fields["Custom_163"].Value == true)我已经改变了一吨从类似的条件:
if(rpt.Fields["Custom_163"].Value.ToString() == "True")
if(rpt.Fields["Custom_163"].Value == true)
if(rpt.Fields["Custom_163"].Value = true)
if(rpt.Fields["Custom_163"].Value == 1)
if(rpt.Fields["Custom_163"].Value.ToString() == "1")
if (Convert.ToBoolean(rpt.Fields["Custom_163"].Value) == true)
etc...但它们似乎不像预期的那样起作用。我希望它过滤掉这个字段是真的项,这样剩下的就会执行。
另一件事是从if-else语句返回值(不工作,我尝试使用下面的另一种方法,这个方法也不起作用):
public class findTotals
{
public findTotals()
{
}
public int resultTotals()
{
bool item = (bool)rpt.Fields["Custom_163"].Value;
if ( item == true)
{
int enhanceTotal = 1;
return;
}
else
{
int maintenTotal = 1;
return;
}
}
}(整个方法需要大量的工作TBH)。
最后,这些行必须在第二行以外,否则,或者至少以某种方式返回原始的if,以便打印到报告中:
_enhanceTotal += enhanceTotal;
_maintenTotal += maintenTotal;_defectsTotal获得所有项目的总计数,这很好。但是,这两行应该根据上述条件为每种类型添加一个计数,这样,增强的总量和维护项的总数就会在报告的末尾发布。它不工作,如果不是一个转换/转换错误或条件迫使数组超出界限,这是另外一些问题。我也玩过这些命令。
可能的解决方案?
提前谢谢。
发布于 2015-03-26 19:07:09
我知道问题出在哪里了。
所以基本上..。
if (Convert.ToBoolean(rpt.Fields["Custom_163"].Value) == true)
{
enhanceTotal++;
}
else
{
maintenTotal++;
}
_defectsTotal++;(这都在另一个if语句和一堆与发布无关的代码中。)这很好,并返回计数,之后的另一个障碍是找出标签,以便它可以正确地打印到它的占位符。不需要整个findTotals方法。我不需要比上面列出的三个变量更多的变量来使它工作。我不断出错的一个原因是,我试图使用一个变量作为标签,将其打印到报表中的不同位置,这显然是不允许的。我做了几个相同的标签,确保给它们起不同的名字等等,而不是使用一个标签,把它贴在任何地方。
因此,在三个不同的报告部分中,X不是X,而是X、Y、Z(所有相同但不同的标识符),并在需要的地方将其粘在一起。伙计,现在看来很明显了,再一次谢谢。
发布于 2015-03-25 23:38:44
您应该能够将字符串与"True“进行比较。即
if(string.Compare(rpt.Fields"Custom_163".Value.ToString(),“真”) == 0)
https://stackoverflow.com/questions/29265783
复制相似问题