Бывают случаи когда нам нужно переименовать файл, находящийся в поле-контейнер. До выхода 13 версии FileMaker, единственным способом были экспортировать файл на диск под нужным именем и вставить обратно в контейнер. Начиная с 13-й версии мы можем воспользоваться связкой новых функций Base64Encode() и Base64Decode(). Хитрость состоит в том, что функция Base64Decode() имеет опциональный параметр — имя файла. Так что последовательное кодирование, и обратное декодирования файла в контейнере позволит нам переименовать файл.
В общем случае функция переименования будет выглядеть так:
Base64Decode ( Base64Encode ( Table::Container ) ; "NewFileName" )
По ссылке можно скачать файл примера.
Важным преимуществом такого способа переименования, что он (в отличии от способа импорт/экспорт) работает при любых способах подключения к базе, в том числе и при использовании WebDirect.
Однако нужно помнить, что кодирование и декодирование файла может занять определенное время, если размер файла достаточно большой. По тестам коллег из ClickWorks переименование 100мб файла на маке с SSD диском заняло 30 секунд.
Оригинал заметки можно прочитать здесь
а может, имеет смысл озвучить также способ переименования файла без импорта-экспорта в младших версиях (разумеется, БД должны быть размещены на сервере)? Хотя сейчас, наверное, никто уже младшими версиями и не пользуется.
Так озвучьте 🙂
[…] выхода статьи Переименование файла в контейнере без импорта/экспорт… Андрей Волков прислал описание еще одиного способа, […]