2015-11-19 4 views
0

/* sls-discount i she database name */Добрый день. У меня есть еще одна проблема, связанная с изменением стоимости конкретного просмотра.** Нет записи sls-discount. (91)

мой код на кнопку Добавить:

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. 

мой код для просмотра-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) "при нажатии кнопки добавления. но если он прокомментирован/удален, он не отобразит сообщение.

надеюсь, что вы можете помочь мне снова .. Спасибо

ответ

1

Вы, несомненно, столкнулись с печально известной «частичное поле автозавершения» особенность/ошибка. Это означает, что если вы укажете переменную без локального определения для нее, компилятор Progress выполнит поиск всех доступных таблиц для поля, которое начинает с той же буквой и использует это вместо этого.

Ошибка в том, что компилятор связал поле с чем-то в таблице «DBName», а когда код пытается получить доступ к этой переменной, буфер DBName не входит в область действия - это понятно после доступа это не ваше намерение.

Я предполагаю, что вы неправильно определили конструкцию BROWSE. Глядя на ваш первый набор конструкций, у вас есть две различные формы:

BROWSE BROWSE-13:READ-ONLY = NO 
sls-discount.dsc-amount:READ-ONLY IN BROWSE BROWSE-13 = NO 

Я буду держать пари, один из них неправильно, а компилятор ассоциирует нелегальную «Обзор» цитата с полем в DbName, что начинается с «Обзор».

Если вы скомпилируете код в файл XREF, он скажет вам, какую переменную он пытается связать с таблицей DBName. Правильно, и тебе будет хорошо.

+0

В вашем комментарии проблема была «ПРОСМОТР ПРОСМОТРА 13: .... и т. Д.». Я попытался прокомментировать целое 'ASSIGN BROWSE BROWSE-13: READ-ONLY = NO sls-discount.dsc-amount: ПРОЧИТАТЬ ТОЛЬКО В ПРОСМОТРЕ ПРОСМОТРА-13 = НЕТ sls-discount.dsc-discount: READ- ТОЛЬКО В ПРОСМОТРЕ ПРОСМОТРА-13 = НЕТ sls-discount.log: ПРОЧИТАТЬ ТОЛЬКО В ПРОСМОТРЕ ПРОСМОТРА-13 = НЕТ. все еще не работал ... извините, если моя договоренность о комментариях несколько запутанна. упорядочить код в комментариях – noob

+0

В этом случае скомпилируйте программу в файл XREF (см. ссылки документа COMPILE для специфики) и посмотрите, какое поле оно связывает с таблицей DBName. –

0

Я выясню, в чем проблема с кодом. При нажатии кнопки «Добавить» строка внутри browse-13 была организована из-за {&OPEN-QUERY-BROWSE-13}. после этого, из-за BROWSE BROWSE-13:SELECT-FOCUSED-ROW(), он сфокусировался на верхней точке обзора и последним, BROWSE BROWSE-13:INSERT-ROW("BEFORE"), создал пустую строку данных на самом верху. тем самым вызывая изменение ценности в режиме просмотра-13. на моем значении, измененном на browse-13, начало кода было get current browse-13. поскольку он был сфокусирован на пустой строке, это привело к ошибке без поиска запроса. извините, если я не включил синтаксис get current в свой первый пример.

 Смежные вопросы

  • Нет связанных вопросов^_^