当我需要检查记录是否存在并在不存在时创建它时,我想针对频繁出现的情况实施解决方案。
PROCE CreateIfNotFound:
DEF INPUT PARAM bBuf AS HANDLE NO-UNDO.
DEF INPUT PARAM chPred AS CHAR NO-UNDO.
DEF INPUT PARAM iLockMode AS INT NO-UNDO:
DEF VAR hQry AS HANDLE NO-UNDO.
CREATE QUERY hQry.
hQry:SET-BUFFERS(bBuf).
hQry:QUERY-PREPARE("FOR EACH " + bBuf:NAME + " WHERE " + chPred).
hQry:QUERY-OPEN.
IF NOT hQry:GET-FIRST(LockMode) THEN DO:
bBuf:BUFFER-CREATE.
???
END.
END PROCE.
chPred
应该是:
field1 = value1 AND field2 = value2 AND [...]
其中 field1、field2 和 [...] 是唯一索引字段。chPred
我应该如何在不解析的情况下使用给定值初始化创建记录的给定字段?分隔符也无济于事,因为值可能包含AND
,=
通常我可以选择任何分隔符。如果是的话当然不太可能_!^@_MY_DELIM!@^__
,但我真的不喜欢这个解决方案。