Syntax 是否可以在Powerbuilder的表达式中使用列属性?

Syntax 是否可以在Powerbuilder的表达式中使用列属性?,syntax,expression,powerbuilder,Syntax,Expression,Powerbuilder,假设我在数据窗口上有一个字段,它是数据库列的值(“插入>列”),它有需要保护的条件(属性>常规>保护) 在保护字段时,我希望字段背景为灰色。目前,我唯一能解决的方法是复制保护条件,无论多么复杂,用1(保护)和0(不保护)替换颜色值 在表达式字段中,是否有某种语法可以用于引用列的保护值的列背景颜色?我尝试过 if(列保护=1,灰色,白色) 但是它返回errorous,说它期望一个真/假条件 我所追求的是不可能的,或者只是获得正确语法的问题 干杯。哇。你喜欢复杂、层次分明的问题 第一个问题是访问值,

假设我在数据窗口上有一个字段,它是数据库列的值(“插入>列”),它有需要保护的条件(属性>常规>保护)

在保护字段时,我希望字段背景为灰色。目前,我唯一能解决的方法是复制保护条件,无论多么复杂,用1(保护)和0(不保护)替换颜色值

在表达式字段中,是否有某种语法可以用于引用列的保护值的列背景颜色?我尝试过

if(列保护=1,灰色,白色)

但是它返回errorous,说它期望一个真/假条件

我所追求的是不可能的,或者只是获得正确语法的问题


干杯。

哇。你喜欢复杂、层次分明的问题

第一个问题是访问值,这并不像您描述的那样直接。事实上,您使用的是descripe()来获取值。唯一的问题是,它以以下格式作为字符串返回,并带有引号(请注意,我们使用的是标准PowerScript字符串表示法,~t是一个制表符)

这看起来很复杂,但是如果您将Mid()表达式放在计算字段中以便可以看到结果,您将看到它只是解析出Protect表达式并将其放入上述描述(Evaluate())语法中

为了简单起见,我在我的代码中加入了一个小技巧。我利用了在我的Protect表达式中只有单引号的知识,选择了Evaluate()双引号中的表达式字符串。如果我尝试对任何列进行常规操作,并且不能假定我的保护表达式中没有双引号,我将使用全局函数用转义引号(~“”)替换保护表达式中的任何双引号,我相信在你的代码中,它看起来像一个三块瓷砖和一个引号。同样,如果我必须进行全局函数调用(请注意,如果有很多行,表达式中的全局函数调用可能会对性能产生重大影响),我只需将descripe(“column.protect”)和GetRow()传递给它,然后在PowerScript中构建整个表达式,这样更易于理解和维护

祝你好运

特里。

非常感谢特里,这对我非常有用:)
"<DefaultValue>~t<Expression>"
Describe ("Evaluate('<expression>', <rownum>)")
if (Describe ("Evaluate (~"" + Mid (Describe ("b.protect"), 
Pos (Describe ("b.protect"), "~t")+1, 
Len (Describe ("b.protect")) -  Pos (Describe ("b.protect"), "~t") - 1) 
+ "~", " + String (GetRow()) + ")")='1', 
rgb(128, 128, 128), 
rgb(255,255,255))