Topic: Удаление DBImage(режим LinkFile) при удалении записи.

Пользовал поиск не нашёл ответа... Как удалить файл изображения из папки добавленный с помощью компонента DBImage работающего в режиме LinkFile при удалении записи?

Re: Удаление DBImage(режим LinkFile) при удалении записи.

Приветствую.


Скачайте пожалуйста посделюю бета версию
https://www.dropbox.com/s/wutj7mnux7f3a … a.zip?dl=0


Сделал для вас проект с примером, чтобы файл изображения удалялся как при удалении записи, так и при удалении или изменении изображения на форме.

Post's attachments

Attachment icon DBImage LinkFile Delete file.zip 142.07 kb, 343 downloads since 2018-08-16 

Dmitry.

Re: Удаление DBImage(режим LinkFile) при удалении записи.

Подскажите пожалуйста. Пользуюсь вашим примером всё прекрасно работает в пределах одного компьютера. А при использовании программы в режиме локальной сети файлы добавляются в папку на сервере, но не удаляются. На данный момент рабочий вариант это запуск программы непосредственно из папки на сервере, но при множественном подключении бывают сбои.

Re: Удаление DBImage(режим LinkFile) при удалении записи.

К сожалению в настоящий момент нет доступа к локальной сети.
Как я понимаю, у вас свойство CopyTo компонента DBImage указывает не относительный, а абсолютный путь?


Тогда попробуйте в данном примере заменить

procedure Form1_bDelete_OnAfterClick (Sender: TObject);
begin
    // remove file
    DeleteFile(ExtractFileDir(Application.ExeName) +  Form1.bDelete.TagString);
end;

на

procedure Form1_bDelete_OnAfterClick (Sender: TObject);
begin
    // remove file
    DeleteFile(Form1.bDelete.TagString);
end;

и

procedure frmEmployee_bSave_OnClick (Sender: TObject; var Cancel: boolean);
begin
    if frmEmployee.DBImage1.dbImageIsChanged then // if picture is changed
    begin
        if frmEmployee.DBImage1.TagString <> frmEmployee.DBImage1.dbFileName then
            DeleteFile(ExtractFileDir(Application.ExeName) +  frmEmployee.DBImage1.TagString); // remove previous file
    end;
end;

заменить на

procedure frmEmployee_bSave_OnClick (Sender: TObject; var Cancel: boolean);
begin
    if frmEmployee.DBImage1.dbImageIsChanged then // if picture is changed
    begin
        if frmEmployee.DBImage1.TagString <> frmEmployee.DBImage1.dbFileName then
            DeleteFile(frmEmployee.DBImage1.TagString); // remove prevous file
    end;
end;
Dmitry.

Re: Удаление DBImage(режим LinkFile) при удалении записи.

Спасибо. Подтверждаю работоспособность.

Re: Удаление DBImage(режим LinkFile) при удалении записи.

Подскажите пожалуйста. Использую метод добавления файлов к записи взятый в одном из примеров, так же там описан процесс удаления файла. Как удалять файлы в случае абсолютного пути?
Вот код из примера.

 
var
     sDeletedFile: string;

procedure frmEmployee_bDeleteFile_OnClick (Sender: string; var Cancel: boolean);
begin
    sDeletedFile := SQLExecute('SELECT file_filename FROM files WHERE id='+frmEmployee.TableGrid1.sqlValue);
    sDeletedFile := ExtractFileDir(Application.ExeName) + sDeletedFile;
end;

procedure frmEmployee_bDeleteFile_OnAfterClick (Sender: string);
begin
    DeleteFile(sDeletedFile);
end;

Re: Удаление DBImage(режим LinkFile) при удалении записи.

просто удалите эту строку

sDeletedFile := ExtractFileDir(Application.ExeName) + sDeletedFile;
Dmitry.