尝试编写连接到排序浏览器的查询

Trying to write query connected to sort browser

我是 Progress 和编程的初学者,如果能得到一些帮助,我将不胜感激。

正在尝试编写连接到浏览器的查询。在我的 window 中还有一个收音机(它对浏览器进行排序,例如按姓名或年龄排序) 和一个填充物(如果那里写了任何东西并且 "ok" 被推送那么只有帖子 在浏览器中显示姓氏开头的任何内容。

radioset 有一个默认值,在值更改时浏览器会再次打开。

我试过像下面这样编写我的查询,并且按 radioset 排序有效,但不是填充(显示它不理解查询的错误消息):

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.  

在 fiSurname 周围添加 QUOTER() 并在引号

中的 BEGINS 之后和 BY 之前添加额外的 SPACE

您需要在字符串位前后 space,将姓氏用引号引起来,并将屏幕值用于 rsSort 位。只是为了帮助您理解第一部分,消息查询字符串。你会看到这样的东西: 对于 member.surname beginsEllenby 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.

就像我说的,把整个事情都发消息,复制它并尝试直接在进度中写它window,我发现以这种方式调试这些动态查询对我有很大帮助。