无法分析字段绘图的字典验证表达式?

时间:2016-05-19 11:04:39

标签: progress-4gl openedge

我得到“无法分析字段绘制的字典验证表达式。”在编译以下程序时如何解决此错误?

/*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.

1 个答案:

答案 0 :(得分:3)

首先:内置数据库验证已过时。如果可能的话,不要使用它,最重要的是:如果可以,甚至将其移除!

您需要检查字典验证。转到数据字典,选择数据库和字段(pt_draw)。 这是一个例子: Data Dictionary

双击该字段或选择“字段属性”,这将打开“字段属性”对话框,您应在其中选择“验证”:

Field Properties dialogue

在字段验证中,您可以为要更新的字段输入一些需要验证为TRUE的代码。您还可以输入失败时显示的消息:

Testfield validation

你应该知道你在这里没有任何帮助。您几乎可以输入任何内容,并且没有语法检查。这是我对testfield2的验证:

Testfield2 validation

如果我尝试更新测试字段但未输入“TEST 1”或“TEST 2”,则会收到错误消息:

enter image description here

简单程序:

CREATE testtable.
UPDATE testfield.

现在添加我的(残缺的)测试场2甚至不会编译:

CREATE testtable.
UPDATE testfield testfield2.

Error message

(我的安装是瑞典语,但这基本上意味着:

  • 未知字段或变量:asdasdasdasdasd
  • 无法分析testfield2字典中的字段验证

解决此问题

如果您因某种原因无法(或不会)删除您残缺的验证,您可以让ABL为您处理:

添加验证选项

CREATE testtable.
UPDATE testfield testfield2 VALIDATE(TRUE, "").
  

VALIDATE(逻辑表达式,如果不是TRUE则为消息)

这将覆盖字典中的所有内容。你当然可以写一些比我上面的例子更有效的东西:

CREATE testtable.
UPDATE testfield testfield2 VALIDATE(TRIM(testtable.testfield2) <> "", "Field cannot be blank").