我是Stimulsoft的Noobie。我在Visual Studio 2013中为我们的应用程序运行了Stimulsoft Version 2015.3。
在YouTube上找到的示例视频已经过时了,我还没有找到任何展示如何使用内置条件逻辑创建变量的视频。
有一个字典可以创建变量:
目前,如果我尝试编译,我有10个错误,如下所示:
我会专注于第一个:decInvoiceCost
。
错误说“;”预期,并给出这个小预览:
使用他们的编辑器输入的代码是:
{if (blnUseMarketCost) { VwInvoice.MarketCost } else { VwInvoice.AverageCost } }
其中blnUseMarketCost
是布尔值,两(2)个十进制值MarketCost
和AverageCost
来自数据库视图。
返回错误,如果我点击“转到代码”:
...我接受了他们的设计师提供的源代码:
public virtual decimal decInvoiceCost
{
get
{
// CheckerInfo: Value decInvoiceCost
return {if (blnUseMarketCost) { VwInvoiceDetail.MarketCostInInvPricingUnit } else { VwInvoiceDetail.AverageCostInInvPricingUnit } }m;
}
}
我认为“m”最终导致了一些问题,但我真的不知道。
更新
报告的C#代码由设计者生成。我可以用它来看看设计师想要做什么,但我不明白所有的细微差别。
namespace Reports
{
public class Report : Stimulsoft.Report.StiReport
{
public Report() {
this.InitializeComponent();
}
#region StiReport Designer generated code - do not modify
//
// {snip}
//
public virtual decimal decMarkup
{
get
{
// CheckerInfo: Value decMarkup
return ((decInvoiceCost==0) ? 0 : (decInvoiceProfit / decInvoiceCost))m;
}
}
//
// {snip}
//
#endregion StiReport Designer generated code - do not modify
}
}
答案 0 :(得分:2)
decInvoiceCost
获取实施的代码无效。您应该使用以下任一实现:
public virtual decimal decInvoiceCost
{
get
{
// CheckerInfo: Value decInvoiceCost
if (blnUseMarketCost)
return VwInvoiceDetail.MarketCostInInvPricingUnit;
else
return VwInvoiceDetail.AverageCostInInvPricingUnit;
}
}
这将基于if语句返回两个值中的任何一个。
或
public virtual decimal decInvoiceCost
{
get
{
// CheckerInfo: Value decInvoiceCost
return blnUseMarketCost
? VwInvoiceDetail.MarketCostInInvPricingUnit
: VwInvoiceDetail.AverageCostInInvPricingUnit;
}
}
使用三元运算符<boolExpr> ? <valueifTrue> : <valueIfFalse>;
答案 1 :(得分:1)
你应该在那里使用一个返回值的表达式。 if语句不是表达式。尝试使用条件运算符(?:)。
答案 2 :(得分:1)
更新版本有很多帮助。似乎Stimulsoft期望在那里用文字形式的常数(例如5.0或7.4 ......)。然后它尝试将其标记为编译器的十进制数(更多信息,请Letter after a number, what is it called?)。
这意味着它不期望计算,决策或代码。我从未使用过软件,所以我只能猜测如何解决这个问题。这就是我为什么要提交这个作为答案的原因。我的第一个猜测是将Init by:
或第二个Type
下拉列表更改为value
之外的其他内容。像code
,calculation
或类似的东西将是我正在寻找的东西。
其他属性似乎处理代码/计算很好,所以试着看看它们正在使用什么。
答案 3 :(得分:0)
我找到了答案!
在Stimulsoft变量编辑器中,有一个名为 Init by:的选项预先填充值。
我将 Init by:更改为表达式,报告现在提取数据:
代码视图似乎没有任何不同:
public virtual decimal decMarkup
{
get
{
// CheckerInfo: Value decMarkup
return ((decInvoiceCost==0) ? 0 : (decInvoiceProfit / decInvoiceCost))m;
}
}
Stimulsoft Reports Documentation on Conditional Expressions没有提到这一点。
这里关于Stimulsoft的问题并不多,甚至更少有人有答案。所以,我希望其他人可以使用它。