/* Firstly create a dynamic temp-table for all the required fields */
CREATE TEMP-TABLE hTemp.
/* Add all the fields */
FOR FIRST _file NO-LOCK
WHERE _file._file-name = "test"
,FIRST _index OF _file NO-LOCK
WHERE _unique = TRUE
,EACH _index-field OF _index NO-LOCK
,FIRST _field OF _index-field NO-LOCK:
fld = _field._field-name.
hTemp:ADD-LIKE-FIELD(fld,_file._file-name + "." + fld).
/* Record all the fields in a variable to avoid the later reading of FOR FIRST _file */
END.
/* Complete the dynamic temp-table */
hTemp:TEMP-TABLE-PREPARE("ttDelete").
hDefault = hTemp:DEFAULT-BUFFER-HANDLE.
/* Create a Dynamic Query for the database records */
CREATE buffer bh for table vTable.
CREATE QUERY qh.
qh:SET-BUFFERS(bh).
qh:QUERY-PREPARE( "for each " + vTable + " no-lock" ).
qh:QUERY-OPEN().
qh:GET-FIRST().
DO WHILE NOT qh:QUERY-OFF-END:
/* Create a dynamic temp-table record for each database record */
/* Two possible options - not sure which one you require */
/* Option 1 */
hDefault:BUFFER-CREATE().
FOR FIRST _file NO-LOCK
WHERE _file._file-name = "test"
,FIRST _index OF _file NO-LOCK
WHERE _unique = TRUE
,EACH _index-field OF _index NO-LOCK
,FIRST _field OF _index-field NO-LOCK:
ASSIGN fh = bh:BUFFER-FIELD( _field._field-name )
vBufferValue = fh:BUFFER-VALUE() NO-ERROR.
hDefault:BUFFER-FIELD(_field._field-name):BUFFER-VALUE = vBufferValue.
END.
hDefault:BUFFER-RELEASE().
/* Option 2
FOR FIRST _file NO-LOCK
WHERE _file._file-name = "test"
,FIRST _index OF _file NO-LOCK
WHERE _unique = TRUE
,EACH _index-field OF _index NO-LOCK
,FIRST _field OF _index-field NO-LOCK:
ASSIGN fh = bh:BUFFER-FIELD( _field._field-name )
vBufferValue = fh:BUFFER-VALUE() NO-ERROR.
hDefault:BUFFER-CREATE().
hDefault:BUFFER-FIELD(_field._field-name):BUFFER-VALUE = vBufferValue.
hDefault:BUFFER-RELEASE().
END.
*/
qh:GET-NEXT().
END.
qh:QUERY-CLOSE().
/* All database records read so now write to the JSON file */
ASSIGN
vTargetType = "file"
vFile = _vTable + "_ttDelete.json"
lformatted = TRUE
lretok = hTemp:WRITE-JSON(vTargetType, vFIle, lformatted).
/* Finished with dynamic objects so clean up so that we don't produce a memory leak */
DELETE OBJECT qh.
DELETE OBJECT bh.
DELETE OBJECT hTemp.
ASSIGN qh = ?
bh = ?
hTemp = ?.