我在axapta的Job中有一个更新语句,我想在updates where子句中使用一个变量
static void UpdateSomeValues(Args _args)
{
Table myTable;
str likeThis;
;
likeThis = 'W200';
ttsBegin;
select forUpdate myTable
where myTable.start == 'W100'
&& myTable.destination like likeThis;
myTable.AlloweMove = NoYes::Yes;
myTable.AllowStop = NoYes::Yes;
ttsCommit;
}
我得到的错误是这样的:
未绑定字符串在where子句
中是不允许的在x ++的where子句中是否有使用Strings的解决方法?
答案 0 :(得分:6)
因为字符串具有无限长度而发生错误。尝试使用适当的EDT或str 50 likeThis;
static void UpdateSomeValues(Args _args)
{
Table myTable;
str 50 likeThis;
;
likeThis = 'W200';
ttsBegin;
select forUpdate myTable
where myTable.start == 'W100'
&& myTable.destination like likeThis;
myTable.AlloweMove = NoYes::Yes;
myTable.AllowStop = NoYes::Yes;
ttsCommit;
}
答案 1 :(得分:5)
在x ++的where子句中是否有使用Strings的解决方法?
是的,您必须使用有界字符串,该字符串是定义的最大长度的字符串。这就是为什么通常使用扩展数据类型作为变量的数据类型的原因,因为扩展数据类型属性已经定义了最大长度。但是,如果您不能使用扩展数据类型,您还可以设置字符串变量的最大长度,如下所示:
select sum(replace(input, 'A', '')) from input_table
| sum(replace(input, 'A', '')) |
|------------------------------|
| 38 |
之后的数字定义变量的最大长度。然后可以在select语句的where子句中使用此变量。