浏览值更改期间字符串值突然更改

sudden change in string value during a browse value change

在浏览中的值更改期间,我的字符串值突然发生变化,特别是字符串 (9) 将更改为字符串 (0)。

样本:

在我的组合框中,我使用了带有以下代码的列表项对:

cb-name:LIST-ITEM-PAIRS = ?.
cb-name:DELIMITER = '?'.
FOR EACH employee WHERE employee.date-resigned = ? NO-LOCK BY employee.employee-no.
    cb-name:ADD-LAST(TRIM(STRING(employee.employee-no, '99999999') + " - " + employee.last-name + ", " + employee.first-name + " " + SUBSTRING(employee.middle-name,1,1)) + ".",employee.employee-no).
END.
cb-name:SCREEN-VALUE = cb-name:ENTRY(1).

在浏览的值改变:

ASSIGN cb-name:SCREEN-VALUE = 
STRING(TRIM(STRING(employee.employee-no, '99999999') + " - " + employee.last-name + ", " + employee.first-name + " " + SUBSTRING(employee.middle-name,1,1)) + "." , 
       STRING(employee.employee-no, '99999999')).

如果 employee no 的字符串值为 9,progress 会将其更改为 0.. 生成包含无效值的错误消息..

ex: from 819001 /*correct*/ to 810001 /*incorrect*/

如果没有string(9),则显示like:818002

如果我向 STRING(employee.employee-no, '99999999')) 发送消息,它将显示正确的字符串值

显然,在这种情况下,版本无关紧要。我只是在 10.2B08 中使用名为 tables 的临时 table 模拟了它。问题是当您将屏幕值分配给您试图将整个字符串(员工编号 + 姓名 + 分隔符)转换为格式 99999999 的组合时。 由于您的组合是列表项对 ('Whatever I want it to display','the real value', 'and so on display' , 'and so forth value') 您的解决方案是将屏幕值分配给实际值,忽略标签。换句话说,就像将您的值更改代码更改为

一样简单
ASSIGN cb-name:SCREEN-VALUE = STRING(employee.employee-no, '99999999') .

它对我有用。如果您仍然遇到问题,请告诉我。