0

レコードが存在するかどうかを確認し、存在しない場合は作成する必要がある場合に、頻繁に発生する状況の解決策を実装したいと考えています。

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!@^__、私はこの解決策があまり好きではありません。

4

2 に答える 2