Попытка написать запрос, связанный с сортировкой браузера - PullRequest
1 голос
/ 17 марта 2019

Я новичок в Progress и в программировании, был бы очень признателен за некоторую помощь.

Попытка написать запрос, связанный с браузером.В моем окне также есть радиосеть (которая сортирует браузер, например, по имени или возрасту) и заполнение (если там что-то написано и нажимается «ок», тогда только сообщения, где фамилия начинается с того, что написано, предназначены длябудет отображаться в браузере.

Радиосет имеет значение по умолчанию, при изменении значения браузер снова открывается.

Я попытался написать свой запрос, как показано ниже, и сортировкарадиосет работает, но не заполняется (показывает сообщение об ошибке, что он не понимает запрос):

DEFINE INPUT PARAMETER pfiSurname AS CHARACTER NO-UNDO.
DEFINE VARIABLE cQuery AS CHARACTER NO-UNDO.
DEFINE VARIABLE hQueryHandle AS HANDLE    NO-UNDO.
&SCOPED-DEFINE BROWSER brMembers

DO WITH FRAME  {&FRAME-NAME}:
    ASSIGN rsSort.

  IF fiSurname = '' THEN 
    ASSIGN cQuery = 'FOR EACH Member NO-LOCK by member.' + rsSort.
  ELSE 
    ASSIGN cQuery = 'FOR EACH member NO-LOCK WHERE member.surname BEGINS' 
     + fiSurname + 'BY member.' + rsSort. 

  hQueryHandle = {&BROWSER}:QUERY.
  hQueryHandle:QUERY-PREPARE(cQuery).
  hQueryHandle:QUERY-OPEN().

END.
END PROCEDURE.  

Ответы [ 2 ]

2 голосов
/ 17 марта 2019

Вам нужно пробелить до и после ваших строковых битов, заключить фамилию в кавычки и использовать экранное значение для бита rsSort. Просто, чтобы помочь вам понять для первой части, отправьте сообщение в строку запроса. Вы увидите что-то вроде этого: Для каждого члена без блокировки, где member.surname начинаетсяEllenby member.chosenfield

Когда это должно быть Для каждого члена без блокировки, где member.surname начинается с имени "Ellen" member.chosenfield

И просто чтобы убедиться, что я сообщу значение rsSort Поэтому я рекомендую вам изменить на

 ASSIGN cQuery = 'FOR EACH member NO-LOCK WHERE member.surname BEGINS ' 
 + Quoter(fiSurname) + ' BY member.' + rsSort:screen-value.

И, как я уже сказал, отправьте сообщение целиком, скопируйте его и попробуйте написать его прямо в окне Progress. Я обнаружил, что мне очень помогает отлаживать эти динамические запросы таким образом.

1 голос
/ 17 марта 2019

Добавьте QUOTER () вокруг fiSurname и дополнительных пробелов после BEGINS и перед BY в кавычках

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...