Axapta中Where子句中的变量

时间:2016-05-11 11:03:20

标签: axapta x++

我在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的解决方法?

2 个答案:

答案 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子句中使用此变量。

另请查看Strings [AX 2012]