我希望有人可以帮助回答我的问题,也许是想知道去哪里,或者我想做的事情是不可能做到的。
我已经被要求根据我们的ERP
表单组件或变量所持有的数据编写一组规则。
不幸的是,这些组件和变量无法在ERP
之外访问或使用,因此我无法使用SQL
查询值,然后构建某种SQL
} query。
他们喜欢这样的陈述的能力:
C(MyComponentName) = C(MyOtherComponentName)
V(MyVariableName) > 16
(C(MyComponentName) = "") AND V(MyVariableName) <> "")
((C(MyComponentName) = "") OR C(MyOtherComponentName) = "") AND V(MyVariableName) <> "")
这应该变成某种查询,它获取MyComponentName
和MyOtherComponentName
的值,并且(在这种情况下)比较它们的相等性。
他们不一定只想比较相等,而是能够确定component / variable
值是否大于等等。
基本上它是一个自由格式的语句,可以转换成类似于IF
语句的内容。
我试过这个:
Sub TestCondition()
Dim Condition as string = String.Format("{0} = {1}", _
Component("MyComponent").Value, Component("MyOtherComponent").Value)
If (Condition) Then
' Do Something
Else
' Do Something Else
End If
End Sub
显然,这不起作用,老实说,我认为这不会那么简单。
忽略我必须解析该行的事实,提取所需的运算符,组件或变量的值(用C或V表示) - 我该怎么做?
我看过表情树,但这些令人困惑,特别是因为我从未听说过它们,更不用说使用它们了。 (Is it possible to create an expression tree for dynamic if statements? - 此链接提供了有关C#)
中表达式树的一些详细信息我知道解决这个问题的一种更简单的方法可能是简单地使用多个下拉列表填充表单,以便用户从列表中选择他们想要的内容或填写特定搜索条件的文本框。
这不是一件简单的事情,因为ERP
不允许您在其表单上动态创建控件。您必须手动拖动每个组件并且旁边没用,因为我们可能希望每个表单(100 +)至少有1 rule
。
我要么找人说你不能按照你想要的方式做到这一点(有合适的理由或建议如何做到这一点)我能做到带上我的经理或一些提示,也许是一个链接或2指向我正确的方向。
答案 0 :(得分:0)
答案 1 :(得分:0)
对于我的特殊要求,使用NCalc库使我能够完成我想做的大部分工作。易于使用,文档非常广泛 - 很多例子。