我是进步和编程的初学者,非常感谢一些帮助。
尝试编写连接到浏览器的查询。在我的窗口中还有一个无线电台(对浏览器进行排序,例如按名称或年龄排序)和填充(如果有任何内容写在那里并且“ok”被推送,那么只有姓氏以所写的内容开头的帖子是显示在浏览器中。
无线电设备具有默认值,在值更改时,浏览器再次打开。
我试图编写我的查询,如下所示,无线电网的排序工作,但不是fillin(显示它不理解查询的错误消息):
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.
您需要在字符串位之前和之后留出空格,将姓氏括在引号中,并将屏幕值用于rsSort位。只是为了帮助您理解第一部分,请向查询字符串发送消息。你会看到类似这样的事情:对于每个成员no-lock,member.surname开始于Ellenby member.chosenfield
当它应该是每个成员no-lock其中member.surname由member.chosenfield开始“Ellen”
只是为了确保,我会告诉rsSort的价值所以我建议你改为
ASSIGN cQuery = 'FOR EACH member NO-LOCK WHERE member.surname BEGINS '
+ Quoter(fiSurname) + ' BY member.' + rsSort:screen-value.
就像我说的那样,给整个事情发消息,复制它并尝试直接在Progress窗口中编写它,我觉得以这种方式调试这些动态查询对我有很大的帮助。
在BEGINS之后和引号内的BY之前,在fiSurname和额外的SPACE周围添加QUOTER()