Я искал много и нашел рабочее решение для отчета 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
Если бы попытался это, но возникла проблема, когда реальные реальные данные показывают это. В любом случае мне было предложено изменить значение evenwithin textobject, но как только вы меняете текст, поля больше не связаны, и когда вы создаете отчет, любой текстовый объект с текстом внутри, например: '", это значение: {data.quantity} "' с отображением '{data.quantity}' в качестве текста, если вы изменяете – Franck