2016-05-19 6 views
0

Я получил «Невозможно проанализировать выражение для проверки словаря для поля« Рисование ». Эта ошибка при компиляции ниже программы, как разрешить это?Невозможно проанализировать словарное выражение для выражения для рисования полей?

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

ADE Джоунс ответ правильный, но так как кто-то требует разъяснения: в Прогрессе, 4GL код хранится в словаре и компилируется в код. Это своего рода крест между хранимыми процедурами SQL и C include-файлами. Кажется, что этот код, который не отображается в приведенном выше примере кода, имеет в нем синтаксическую ошибку. Чтобы исправить это, вам нужно использовать приложение «Словарь прогресса данных», чтобы проверить значение выражения проверки словаря. Вы также можете запросить его прямо в таблице _field. НТН. – GregT

+0

проверить выражение для проверки словаря для поля: pt_draw –

ответ

2

Прежде всего: встроенная проверка базы данных устарела. Если возможно, не используйте его и лучше всего: даже удалите его, если сможете!

Необходимо проверить правильность вашего словаря. Перейдите в словарь данных, выберите базу данных и поле (pt_draw). Вот пример: Data Dictionary

Дважды щелкните на поле или выберите «Свойства поля» откроется свойства полей диалоговое окно, где вы должны выбрать Validation:

Field Properties dialogue

В проверке поле вы можете ввести некоторый код, который должен проверять значение TRUE для обновляемого поля. Вы также можете ввести сообщение, которое появляется, если вы не:

Testfield validation

Вы должны знать, что вы здесь без какой-либо помощи. Вы можете ввести почти все, и проверка синтаксиса отсутствует. Вот моя проверка для testfield2:

Testfield2 validation

Если я пытаюсь обновить testfield и не входят "ТЕСТ 1" или "TEST 2" Я получаю сообщение об ошибке:

enter image description here

Простой программа:

CREATE testtable. 
UPDATE testfield. 

Теперь добавить мои (калека) testfield 2 не будет даже скомпилировать:

CREATE testtable. 
UPDATE testfield testfield2. 

Error message

(Моя установка Swedish, но это в основном означает:

  • Неизвестное поле или переменная: asdasdasdasdasd
  • Не удается проанализировать проверку поля в словаре для testfield2

Фиксация этого

Если вы по какой-то причине или другой не может (или привычка) удалить искалеченную проверки вы можете позволить ABL заботиться о нем для вас:

Добавить параметр проверки

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

VALIDATE(logical expression, message if not TRUE)

Это заменит все, что у вас есть в словаре.Конечно, вы можете написать что-то более правильное, чем мой пример выше:

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

+1 для - не используйте проверку! эта возможность сделала хорошую демонстрацию в 1985 году. В качестве функции это не то, что должно быть использовано в 2016 году –