我得到“无法分析字段绘制的字典验证表达式。”在编译以下程序时如何解决此错误?
/*Sample Item master Maintenance Program*/
/* DISPLAY TITLE */
{us/mf/mfdtitle.i "3+ "}
form
pt_part colon 25
with frame a side-labels width 80.
/* SET EXTERNAL LABELS */
setFrameLabels(frame a:handle).
form
"Enter the Value of" pt__qad13 colon 30 skip(1)
"Enter the Value of" pt_draw colon 30 skip(1)
"Enter the Value of" pt_group colon 30
with frame b side-labels width 80.
setFrameLabels(frame b:handle).
view frame a.
repeat with frame a:
prompt-for pt_part
editing:
/* FIND NEXT/PREVIOUS RECORD */
{us/mf/mfnp.i pt_mstr pt_part "pt_mstr.pt_domain = global_domain and pt_part" pt_part pt_part pt_part }
if recno <> ? then
do:
display pt_part.
end.
end.
find pt_mstr exclusive-lock where pt_domain = global_domain and pt_part = input pt_part .
disp pt__qad13 pt_draw pt_group with frame b.
update pt__qad13 pt_draw pt_group with frame b.
end.
答案 0 :(得分:3)
首先:内置数据库验证已过时。如果可能的话,不要使用它,最重要的是:如果可以,甚至将其移除!
您需要检查字典验证。转到数据字典,选择数据库和字段(pt_draw)。 这是一个例子:
双击该字段或选择“字段属性”,这将打开“字段属性”对话框,您应在其中选择“验证”:
在字段验证中,您可以为要更新的字段输入一些需要验证为TRUE的代码。您还可以输入失败时显示的消息:
你应该知道你在这里没有任何帮助。您几乎可以输入任何内容,并且没有语法检查。这是我对testfield2的验证:
如果我尝试更新测试字段但未输入“TEST 1”或“TEST 2”,则会收到错误消息:
简单程序:
CREATE testtable.
UPDATE testfield.
现在添加我的(残缺的)测试场2甚至不会编译:
CREATE testtable.
UPDATE testfield testfield2.
(我的安装是瑞典语,但这基本上意味着:
解决此问题
如果您因某种原因无法(或不会)删除您残缺的验证,您可以让ABL为您处理:
添加验证选项
CREATE testtable.
UPDATE testfield testfield2 VALIDATE(TRUE, "").
VALIDATE(逻辑表达式,如果不是TRUE则为消息)
这将覆盖字典中的所有内容。你当然可以写一些比我上面的例子更有效的东西:
CREATE testtable.
UPDATE testfield testfield2 VALIDATE(TRIM(testtable.testfield2) <> "", "Field cannot be blank").