Функция SetAnyTableMemo |
Сохраняет хендл на мемо-поле. Предназначена для вызова в обработчике триггера.
Важной особенностью является то, что реальное копирование мемо-поля из файла происходит в функции ModifyTableRecord или ModifyAnyTableRecord, а не в данной функции, как могло бы показаться. Поэтому закрывать хендлы c файлами нужно после вызова ModifyTableRecord или ModifyAnyTableRecord.
function SetAnyTableMemo(tableCode: word; memoHandle : longInt ) : word;
tableCode - код таблицы, запись в которой мы считываем.
memoHandle - хендл на мемо-поле.
Код ошибки. (tsOk, tsInternalError).
Функция не выбрасывает исключений.
#include recAaa1.inc handler with replace c_aaa1 on trigger aaa1 convert action { var old_buf: record as table aaa1; // буфер старой таблицы var new_buf: recAAA1; // буфер новой таблицы, берем из include-файла var f,ff: longint; var s,n: string; GetTableBuffer(old_buf); // считываем старый буфер new_buf2.nRec := myNrec; // берем где-нибудь nRec (например, по ссылке) // для такого кода Aaa2 должна быть уже отконвертирована if (GetAnyTableRecord(coAaa2, new_buf2, tiAaa2$Aaa2Id) = tsOk) { new_buf2.s := old_buf.s; // копируем поле f := OpenFileHandle(GetTableMemo); // открываем поток с мемо-полем ff := CreateFileHandle('xxx'); // создаем хендл с именем ххх n := CreateTmpFileName; file_openFile(n, stCreate, ff); // открываем файл для нового мемо-поля file_readln(s, f); // читеам старое s := '['+s+']'; // как-то обрабатываем file_writeln(s, ff); // записываем в файл SetAnyTableMemo(coAaa2, GetMemoHandleFF(ff)); // сохраняем изменения как мемо-поле // реальное копирование мемо-поля из файла происходит в этой функции // поэтому закрывать хендлы нужно после нее ModifyAnyTableRecord(coAaa2, new_buf); // сохраняем изменения DeleteFileHandle(f); // закрываем хендл DeleteFileHandle(ff); // закрываем хендл } result := true; }
Атлантис 5.0.02.