Good Day all,
Я пишу программу для создания отчета, в котором я создаю инструкцию SQL для вставки выбранных записей в файл, и после этой вставки я хотел бы сделать простое обновление файлаизменить выделенные поля в некоторых записях.
Проблема заключается в том, что после запуска вставки каждый раз, когда я пытаюсь обновить файл, я получаю сообщение об ошибке записи или файла в использовании.
Я пробовал обновлять его программно с помощью sqlrpgle и с функциями чтения и установки ввода / вывода, и я даже пытался просто обновить файл в STRSQL после запуска программы, и все я сталкиваюсь с одной и той же ошибкой.
Я подозреваю, что не закрываю что-то правильно, но я не уверен, что.
Код выглядит следующим образом:
// Assign SQL Query
sqlstmt = 'insert into jallib/orhsrpt ('+
'oacctd, oacmp, oaord, oacust, o8type, ' +
'o8text, o8date, o8time ) ' +
'select oacctd, oacmp, oaord, oacust, ' +
'o8type, o8text, o8date, o8time ' +
'from r50files.vcohead ' +
'join r50files.vcopkct ' +
'on oacmp = o8cmp and oaord = o8ord ' +
'where oacmp = 1 ' +
'and o8type not in (' +
'''C'',''a'',''H'',''E'',''F'', '+
'''A'',''1'',''N'',''M'') ' +
'and oacctd = ' + curdate +
' order by oaord, o8time ';
// Prepare for multiple sql statements
exec sql
Set Option Commit = *NONE;
// Clear output file before executing SQL
exec sql
Delete from jallib/orhsrpt;
if sqlcode < *zeros;
errmsg = 'Delete of file failed';
endif;
// Execute SQL Insert statement
exec sql prepare sqlsel from :sqlstmt;
exec sql execute sqlsel;
if sqlcode < *zeros;
errmsg = 'Insert of file failed';
endif;
// Update file data
exec sql
Set Option clossqlcsr = *ENDMOD;
exec sql
Update jallib/orhsrpt
set o8text = 'Order Invoiced'
where o8type = 'I'
Ошибка STRSQL заключается в следующем
Строка или объект ORHSRPT в типе JALLIB * Используемый файл.