我搜索了很多,发现RAS报告的工作解决方案,但没有为水晶。无论如何,如果有人最终在这里寻找答案,这里的工作。
无论何时必须连接报表上的多个字段,请勿使用TextObject
。请使用Formula
。公式字段不会投注部分ReportObjects
,而是ReportDocument.DataDefinition.FormulaFields
的一部分,Kind
是CrystalDecisions.Shared.FieldKind.FormulaField
,您将要检查ValueType
,因此它是CrystalDecisions.Shared.FieldValueType.StringField
。
然后你可以操纵它们。
我确实需要,对报告的翻译住所以这里的公式解析方法:
try
{
var sFormula = formula.Text;
string pattern = "\"[\\w ]*\"";
Regex r = new Regex(pattern);
MatchCollection mc = r.Matches(sFormula);
foreach (Match m in mc)
{
var sValue =m.Value;
var sParsedValue = sValue.Substring(1, sValue.Length - 2);
if (sParsedValue.StartsWith("s"))
{
var stest = "\"" + CApplicationData.TranslateStringValue(sParsedValue) + "\"";
sFormula = sFormula.Replace(sValue, stest);
}
}
formula.Text = sFormula;
}
catch{}
这上面,你会发现我使用“S”作为关键要知道这可能是一个值是翻译,所以它不是强制性的。使用上述这个公式与西班牙语:
"sPage" + " " + totext(PageNumber) + " " + "sOf" + " " + totext(TotalPageCount)
将修改公式:的
"Página" + " " + totext(PageNumber) + " " + "de" + " " + totext(TotalPageCount)
给输出:
Página 1 de 4
曾试图这一点,但当实际的真实数据显示那样的时候就会出现问无论如何,我被要求修改的价值,即使在那些textobject,但只要你改变文本字段不再链接,并且当你生成报告任何文本对象与文本里面像:'“的值是:{data.quantity}”'如果您修改,则将“{data.quantity}”显示为文本 – Franck