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

String 浏览值更改期间字符串值的突然更改,string,combobox,progress-4gl,openedge,String,Combobox,Progress 4gl,Openedge,在浏览中更改值的过程中,我的字符串值突然更改,特别是字符串(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(employe

在浏览中更改值的过程中,我的字符串值突然更改,特别是字符串(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')).
如果员工编号的字符串值为9,则progress会将其更改为0。。生成具有无效值的错误消息

ex: from 819001 /*correct*/ to 810001 /*incorrect*/
如果没有字符串(9),它将显示为:818002


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

显然,在这种情况下,版本并不重要。我只是在10.2B08中使用带有命名表的临时表模拟了它。问题是,当您将屏幕值分配给组合时,您试图将整个字符串(员工编号+姓名+分隔符)转换为9999999格式。 因为您的组合是列表项对 (“我希望它显示什么”,“真实值”, '等等显示','等等值') 您的解决方案是将屏幕值仅分配给实际值,而忽略标签。换言之,只需更改值即可将代码更改为

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

这对我有用。如果您仍有问题,请告诉我。

听起来很奇怪,9.1已经成熟/过时了。如果有错误,就应该知道。也许还有别的事情发生?你能发更多的代码吗?我可以试试。但并非全部。出于保密原因。。代码的哪一部分是需要的?据我所见,这些代码是唯一存在问题的相互关系。。我尝试在browse的值更改中添加消息语法。它显示了正确的字符串值。谢谢@bupereira。。是的,只需使用字符串值即可。。没有标签,再次感谢