/ * sls-discount我是数据库名称 */美好的一天。关于特定浏览的值更改,我还有另一个问题。
我的添加按钮代码:
FIND CURRENT {&FIRST-TABLE-IN-QUERY-DIALOG-FRAME} NO-LOCK NO-ERROR.
IF AVAIL {&FIRST-TABLE-IN-QUERY-DIALOG-FRAME} THEN DO:
ASSIGN mode = 3.
ASSIGN BROWSE BROWSE-13:READ-ONLY = NO
sls-discount.dsc-amount:READ-ONLY IN BROWSE BROWSE-13 = NO
sls-discount.dsc-discount:READ-ONLY IN BROWSE BROWSE-13 = NO
sls-discount.log:READ-ONLY IN BROWSE BROWSE-13 = NO.
{&OPEN-QUERY-BROWSE-13}
IF BROWSE-13:num-iterations ne 0 then
BROWSE BROWSE-13:SELECT-FOCUSED-ROW().
BROWSE BROWSE-13:INSERT-ROW("BEFORE"). /*will cause value-change in browse*/
APPLY 'entry' TO sls-discount.dsc-discount IN BROWSE BROWSE-13.
RUN disp-enable.
END.
我的browse-13代码:
ASSIGN xpromo-no = {&FIRST-TABLE-IN-QUERY-BROWSE-13}.promo-no
mdlrid = {&FIRST-TABLE-IN-QUERY-BROWSE-13}.record-id.
MESSAGE xpromo-no mdlrid VIEW-AS ALERT-BOX INFO.
OPEN QUERY BROWSE-16 FOR EACH sls.sls-disccount-model WHERE sls.sls-disccount-model.promo-no = xpromo-no
AND sls.sls-disccount-model.record-id = mdlrid NO-LOCK,
EACH sls.sls-model WHERE sls.sls-model.car-model = sls.sls-disccount-model.car-model NO-LOCK.
如果我在浏览中取消注释整个值更改,它将在单击添加按钮时显示消息“**没有DBName记录可用。(91)”。但如果注释/删除,它将不会显示该消息。
希望你能再次帮助我..谢谢
答案 0 :(得分:1)
你无疑遇到了臭名昭着的“部分字段自动完成”#34;功能/错误。这意味着 - 如果您引用一个没有本地定义的变量,Progress编译器将搜索所有可用表中启动的字段,并使用相同的字母序列。
错误告诉你的是编译器将一个字段与" DBName"中的某个字段相关联。表,当代码尝试访问该变量时,DBName缓冲区不在范围内 - 这是可以理解的,因为访问它并不是你的意图。
我的猜测是你错误地指定了一个BROWSE结构。看看你的第一组结构,你有两种不同的形式:
BROWSE BROWSE-13:READ-ONLY = NO
sls-discount.dsc-amount:READ-ONLY IN BROWSE BROWSE-13 = NO
我打赌其中一个是错误的,并且编译器正在关联非法"浏览"引用DBName中以&#34开头的字段;浏览"。
如果您将代码编译为XREF文件,它会告诉您它尝试与DBName表关联的变量。纠正这一点,你会很高兴。
答案 1 :(得分:0)
我弄清楚代码上的问题..点击“添加”按钮后,由于{&OPEN-QUERY-BROWSE-13}
,浏览中的行被排列了。之后,由于BROWSE BROWSE-13:SELECT-FOCUSED-ROW()
,它专注于浏览的TOP日期,最后一个BROWSE BROWSE-13:INSERT-ROW("BEFORE")
,在最顶层创建了一个空白数据行。从而触发browse-13的值改变。在浏览器13上我的值已更改,代码的开头是get current browse-13
。由于它专注于空白行,因此导致错误,未找到任何查询。对不起,如果我在第一个例子中没有包含语法get current
。