Topic: Уникальное имя изображения

Может кто подскажет, а то что-то не могу понять. К приёму в ремонт прикладывается изображение устройства, как при сохранении в папку Photo этому изображению присвоить уникальное имя? Предположим Номер заказа+Дата оформления? С учётом того, что изображений может быть несколько?

надо идти вперёд....

Re: Уникальное имя изображения

Сделал для вас проект с примером:



скрипт

procedure frmAbonent_bOK_OnAfterClick (Sender: string);
var
    dbFileName, sFileName, sNewFileName: string;
begin
    if frmAbonent.dbPhoto.dbImageIsChanged then
    begin
        sFileName := frmAbonent.dbPhoto.dbFileName;
        sFileName := ExtractFileDir(Application.ExeName)+sFileName;
        sNewFileName := ExtractFilePath(Application.ExeName) + frmAbonent.dbPhoto.dbCopyTo + '\'+ frmAbonent.EditCounter.Text + '_' + DateToStr(frmAbonent.dtDate.Date) + ExtractFileExt(sFileName);

        dbFileName := '"\'+frmAbonent.dbPhoto.dbCopyTo + '\'+ frmAbonent.EditCounter.Text + '_' + DateToStr(frmAbonent.dtDate.Date) + ExtractFileExt(sFileName)+'"';

        if FileExists(sNewFileName) then
        begin
            if IDYES = MessageBox('File exists.' + #13+ sNewFileName+#13+ 'Overwrite?', 'Warning', MB_YESNO+MB_ICONQUESTION) then
            begin
                DeleteFile(sNewFileName);
                if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE person SET photo_filename = '+dbFileName + ' WHERE id='+IntToStr(frmAbonent.bOK.dbGeneralTableId));
            end;
        end else if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE person SET photo_filename = '+dbFileName + ' WHERE id='+IntToStr(frmAbonent.bOK.dbGeneralTableId));
    end;
end;


Проект:

Post's attachments

Attachment icon LinkFile and change filename.zip 51.87 kb, 294 downloads since 2020-03-17 

Dmitry.

Re: Уникальное имя изображения

DriveSoft wrote:

Сделал для вас проект с примером:



скрипт

procedure frmAbonent_bOK_OnAfterClick (Sender: string);
var
    dbFileName, sFileName, sNewFileName: string;
begin
    if frmAbonent.dbPhoto.dbImageIsChanged then
    begin
        sFileName := frmAbonent.dbPhoto.dbFileName;
        sFileName := ExtractFileDir(Application.ExeName)+sFileName;
        sNewFileName := ExtractFilePath(Application.ExeName) + frmAbonent.dbPhoto.dbCopyTo + '\'+ frmAbonent.EditCounter.Text + '_' + DateToStr(frmAbonent.dtDate.Date) + ExtractFileExt(sFileName);

        dbFileName := '"\'+frmAbonent.dbPhoto.dbCopyTo + '\'+ frmAbonent.EditCounter.Text + '_' + DateToStr(frmAbonent.dtDate.Date) + ExtractFileExt(sFileName)+'"';

        if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE person SET photo_filename = '+dbFileName);
    end;
end;


Проект:

Спасибо, но есть два вопроса:
- создал в вашем примере нового абонента, и у всех стала одна и та-же добавленная мною последняя фотка. Попробовал несколько раз, иногда выводиться правильно, потом опять создаёшь абонента и опять "криво" выводятся изображения
- и как это реализовать если надо сохранить от 3-6 изображений.

надо идти вперёд....

Re: Уникальное имя изображения

Скачайте проект снова, видимо вы успели скачать проект до того, как я его исправил.

Dmitry.

Re: Уникальное имя изображения

DriveSoft wrote:

Скачайте проект снова, видимо вы успели скачать проект до того, как я его исправил.

Да, заработало. А подскажите как реализовать если на frmAbonent для абонента не одна фотка, а три?

надо идти вперёд....

Re: Уникальное имя изображения

kovalenko wrote:
DriveSoft wrote:

Скачайте проект снова, видимо вы успели скачать проект до того, как я его исправил.

Да, заработало. А подскажите как реализовать если на frmAbonent для абонента не одна фотка, а три?

procedure frmAbonent_bOK_OnAfterClick (Sender: string);
var
    dbFileName, sFileName, sNewFileName: string;
begin
    if frmAbonent.dbPhoto1.dbImageIsChanged then
    begin
        sFileName := frmAbonent.dbPhoto1.dbFileName;
        sFileName := ExtractFileDir(Application.ExeName)+sFileName;
        sNewFileName := ExtractFilePath(Application.ExeName) + frmAbonent.dbPhoto1.dbCopyTo + '\'+ frmAbonent.EditCounter.Text + '_' + DateToStr(frmAbonent.dtDate.Date) + ExtractFileExt(sFileName);

        dbFileName := '"\'+frmAbonent.dbPhoto1.dbCopyTo + '\'+ frmAbonent.EditCounter.Text + '_' + DateToStr(frmAbonent.dtDate.Date) + ExtractFileExt(sFileName)+'"';

        if FileExists(sNewFileName) then
        begin
            if IDYES = MessageBox('File exists.' + #13+ sNewFileName+#13+ 'Overwrite?', 'Warning', MB_YESNO+MB_ICONQUESTION) then
            begin
                DeleteFile(sNewFileName);
                if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE person SET photo1_filename = '+dbFileName + ' WHERE id='+IntToStr(frmAbonent.bOK.dbGeneralTableId));
            end;
        end;
    end;
    
    if frmAbonent.dbPhoto2.dbImageIsChanged then
    begin
        sFileName := frmAbonent.dbPhoto2.dbFileName;
        sFileName := ExtractFileDir(Application.ExeName)+sFileName;
        sNewFileName := ExtractFilePath(Application.ExeName) + frmAbonent.dbPhoto2.dbCopyTo + '\'+ frmAbonent.EditCounter.Text + '_' + DateToStr(frmAbonent.dtDate.Date) + ExtractFileExt(sFileName);

        dbFileName := '"\'+frmAbonent.dbPhoto2.dbCopyTo + '\'+ frmAbonent.EditCounter.Text + '_' + DateToStr(frmAbonent.dtDate.Date) + ExtractFileExt(sFileName)+'"';

        if FileExists(sNewFileName) then
        begin
            if IDYES = MessageBox('File exists.' + #13+ sNewFileName+#13+ 'Overwrite?', 'Warning', MB_YESNO+MB_ICONQUESTION) then
            begin
                DeleteFile(sNewFileName);
                if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE person SET photo2_filename = '+dbFileName + ' WHERE id='+IntToStr(frmAbonent.bOK.dbGeneralTableId));
            end;
        end;
    end;

    if frmAbonent.dbPhoto3.dbImageIsChanged then
    begin
        sFileName := frmAbonent.dbPhoto3.dbFileName;
        sFileName := ExtractFileDir(Application.ExeName)+sFileName;
        sNewFileName := ExtractFilePath(Application.ExeName) + frmAbonent.dbPhoto3.dbCopyTo + '\'+ frmAbonent.EditCounter.Text + '_' + DateToStr(frmAbonent.dtDate.Date) + ExtractFileExt(sFileName);

        dbFileName := '"\'+frmAbonent.dbPhoto3.dbCopyTo + '\'+ frmAbonent.EditCounter.Text + '_' + DateToStr(frmAbonent.dtDate.Date) + ExtractFileExt(sFileName)+'"';

        if FileExists(sNewFileName) then
        begin
            if IDYES = MessageBox('File exists.' + #13+ sNewFileName+#13+ 'Overwrite?', 'Warning', MB_YESNO+MB_ICONQUESTION) then
            begin
                DeleteFile(sNewFileName);
                if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE person SET photo3_filename = '+dbFileName + ' WHERE id='+IntToStr(frmAbonent.bOK.dbGeneralTableId));
            end;
        end;
    end;
end;
Dmitry.

Re: Уникальное имя изображения

DriveSoft wrote:
kovalenko wrote:
DriveSoft wrote:

Скачайте проект снова, видимо вы успели скачать проект до того, как я его исправил.

Да, заработало. А подскажите как реализовать если на frmAbonent для абонента не одна фотка, а три?

procedure frmAbonent_bOK_OnAfterClick (Sender: string);
var
    dbFileName, sFileName, sNewFileName: string;
begin
    if frmAbonent.dbPhoto1.dbImageIsChanged then
    begin
        sFileName := frmAbonent.dbPhoto1.dbFileName;
        sFileName := ExtractFileDir(Application.ExeName)+sFileName;
        sNewFileName := ExtractFilePath(Application.ExeName) + frmAbonent.dbPhoto1.dbCopyTo + '\'+ frmAbonent.EditCounter.Text + '_' + DateToStr(frmAbonent.dtDate.Date) + ExtractFileExt(sFileName);

        dbFileName := '"\'+frmAbonent.dbPhoto1.dbCopyTo + '\'+ frmAbonent.EditCounter.Text + '_' + DateToStr(frmAbonent.dtDate.Date) + ExtractFileExt(sFileName)+'"';

        if FileExists(sNewFileName) then
        begin
            if IDYES = MessageBox('File exists.' + #13+ sNewFileName+#13+ 'Overwrite?', 'Warning', MB_YESNO+MB_ICONQUESTION) then
            begin
                DeleteFile(sNewFileName);
                if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE person SET photo1_filename = '+dbFileName + ' WHERE id='+IntToStr(frmAbonent.bOK.dbGeneralTableId));
            end;
        end;
    end;
    
    if frmAbonent.dbPhoto2.dbImageIsChanged then
    begin
        sFileName := frmAbonent.dbPhoto2.dbFileName;
        sFileName := ExtractFileDir(Application.ExeName)+sFileName;
        sNewFileName := ExtractFilePath(Application.ExeName) + frmAbonent.dbPhoto2.dbCopyTo + '\'+ frmAbonent.EditCounter.Text + '_' + DateToStr(frmAbonent.dtDate.Date) + ExtractFileExt(sFileName);

        dbFileName := '"\'+frmAbonent.dbPhoto2.dbCopyTo + '\'+ frmAbonent.EditCounter.Text + '_' + DateToStr(frmAbonent.dtDate.Date) + ExtractFileExt(sFileName)+'"';

        if FileExists(sNewFileName) then
        begin
            if IDYES = MessageBox('File exists.' + #13+ sNewFileName+#13+ 'Overwrite?', 'Warning', MB_YESNO+MB_ICONQUESTION) then
            begin
                DeleteFile(sNewFileName);
                if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE person SET photo2_filename = '+dbFileName + ' WHERE id='+IntToStr(frmAbonent.bOK.dbGeneralTableId));
            end;
        end;
    end;

    if frmAbonent.dbPhoto3.dbImageIsChanged then
    begin
        sFileName := frmAbonent.dbPhoto3.dbFileName;
        sFileName := ExtractFileDir(Application.ExeName)+sFileName;
        sNewFileName := ExtractFilePath(Application.ExeName) + frmAbonent.dbPhoto3.dbCopyTo + '\'+ frmAbonent.EditCounter.Text + '_' + DateToStr(frmAbonent.dtDate.Date) + ExtractFileExt(sFileName);

        dbFileName := '"\'+frmAbonent.dbPhoto3.dbCopyTo + '\'+ frmAbonent.EditCounter.Text + '_' + DateToStr(frmAbonent.dtDate.Date) + ExtractFileExt(sFileName)+'"';

        if FileExists(sNewFileName) then
        begin
            if IDYES = MessageBox('File exists.' + #13+ sNewFileName+#13+ 'Overwrite?', 'Warning', MB_YESNO+MB_ICONQUESTION) then
            begin
                DeleteFile(sNewFileName);
                if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE person SET photo3_filename = '+dbFileName + ' WHERE id='+IntToStr(frmAbonent.bOK.dbGeneralTableId));
            end;
        end;
    end;
end;

Однако))))
Спасибо!!!

надо идти вперёд....

Re: Уникальное имя изображения

DriveSoft wrote:
kovalenko wrote:
DriveSoft wrote:

Скачайте проект снова, видимо вы успели скачать проект до того, как я его исправил.

Да, заработало. А подскажите как реализовать если на frmAbonent для абонента не одна фотка, а три?

procedure frmAbonent_bOK_OnAfterClick (Sender: string);
var
    dbFileName, sFileName, sNewFileName: string;
begin
    if frmAbonent.dbPhoto1.dbImageIsChanged then
    begin
        sFileName := frmAbonent.dbPhoto1.dbFileName;
        sFileName := ExtractFileDir(Application.ExeName)+sFileName;
        sNewFileName := ExtractFilePath(Application.ExeName) + frmAbonent.dbPhoto1.dbCopyTo + '\'+ frmAbonent.EditCounter.Text + '_' + DateToStr(frmAbonent.dtDate.Date) + ExtractFileExt(sFileName);

        dbFileName := '"\'+frmAbonent.dbPhoto1.dbCopyTo + '\'+ frmAbonent.EditCounter.Text + '_' + DateToStr(frmAbonent.dtDate.Date) + ExtractFileExt(sFileName)+'"';

        if FileExists(sNewFileName) then
        begin
            if IDYES = MessageBox('File exists.' + #13+ sNewFileName+#13+ 'Overwrite?', 'Warning', MB_YESNO+MB_ICONQUESTION) then
            begin
                DeleteFile(sNewFileName);
                if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE person SET photo1_filename = '+dbFileName + ' WHERE id='+IntToStr(frmAbonent.bOK.dbGeneralTableId));
            end;
        end;
    end;
    
    if frmAbonent.dbPhoto2.dbImageIsChanged then
    begin
        sFileName := frmAbonent.dbPhoto2.dbFileName;
        sFileName := ExtractFileDir(Application.ExeName)+sFileName;
        sNewFileName := ExtractFilePath(Application.ExeName) + frmAbonent.dbPhoto2.dbCopyTo + '\'+ frmAbonent.EditCounter.Text + '_' + DateToStr(frmAbonent.dtDate.Date) + ExtractFileExt(sFileName);

        dbFileName := '"\'+frmAbonent.dbPhoto2.dbCopyTo + '\'+ frmAbonent.EditCounter.Text + '_' + DateToStr(frmAbonent.dtDate.Date) + ExtractFileExt(sFileName)+'"';

        if FileExists(sNewFileName) then
        begin
            if IDYES = MessageBox('File exists.' + #13+ sNewFileName+#13+ 'Overwrite?', 'Warning', MB_YESNO+MB_ICONQUESTION) then
            begin
                DeleteFile(sNewFileName);
                if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE person SET photo2_filename = '+dbFileName + ' WHERE id='+IntToStr(frmAbonent.bOK.dbGeneralTableId));
            end;
        end;
    end;

    if frmAbonent.dbPhoto3.dbImageIsChanged then
    begin
        sFileName := frmAbonent.dbPhoto3.dbFileName;
        sFileName := ExtractFileDir(Application.ExeName)+sFileName;
        sNewFileName := ExtractFilePath(Application.ExeName) + frmAbonent.dbPhoto3.dbCopyTo + '\'+ frmAbonent.EditCounter.Text + '_' + DateToStr(frmAbonent.dtDate.Date) + ExtractFileExt(sFileName);

        dbFileName := '"\'+frmAbonent.dbPhoto3.dbCopyTo + '\'+ frmAbonent.EditCounter.Text + '_' + DateToStr(frmAbonent.dtDate.Date) + ExtractFileExt(sFileName)+'"';

        if FileExists(sNewFileName) then
        begin
            if IDYES = MessageBox('File exists.' + #13+ sNewFileName+#13+ 'Overwrite?', 'Warning', MB_YESNO+MB_ICONQUESTION) then
            begin
                DeleteFile(sNewFileName);
                if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE person SET photo3_filename = '+dbFileName + ' WHERE id='+IntToStr(frmAbonent.bOK.dbGeneralTableId));
            end;
        end;
    end;
end;

Дмитрий здравствуйте. Что-то у меня работать не хочет. Готов вам на почту выслать свой проект, поможете?

надо идти вперёд....

Re: Уникальное имя изображения

kovalenko
Пришлите пожалуйста проект на support@drive-software.com со ссылкой на данную тему.

Dmitry.

Re: Уникальное имя изображения

DriveSoft wrote:

kovalenko
Пришлите пожалуйста проект на support@drive-software.com со ссылкой на данную тему.

Отправил.
Спасибо.

надо идти вперёд....

Re: Уникальное имя изображения

kovalenko wrote:
DriveSoft wrote:

kovalenko
Пришлите пожалуйста проект на support@drive-software.com со ссылкой на данную тему.

Отправил.
Спасибо.

Дмитрий здравствуйте. Я могу рассчитывать на вашу помощь?

надо идти вперёд....

Re: Уникальное имя изображения

Можете, к сожалению на форуме скопилось много вопросов, не успеваю ответить всем быстро )

Dmitry.

Re: Уникальное имя изображения

Пожалуйста опишите порядок действий, чтобы протестировать работу скрипта, при создании нового заказа я не вижу на форме frmApplication "Изображения к заказу"

Dmitry.

Re: Уникальное имя изображения

DriveSoft wrote:

Пожалуйста опишите порядок действий, чтобы протестировать работу скрипта, при создании нового заказа я не вижу на форме frmApplication "Изображения к заказу"

Здравствуйте. Там есть GroupBox "Устройство" на нём Check box "Изображения к заказу".

надо идти вперёд....

Re: Уникальное имя изображения

Попробуйте так

procedure frmApplication_Button1_OnAfterClick (Sender: string);
var
    dbFileName, sFileName, sNewFileName: string;
begin
    if frmApplication.DBImage1.dbImageIsChanged then
    begin
        sFileName := frmApplication.DBImage1.dbFileName;
        sFileName := ExtractFileDir(Application.ExeName)+sFileName;
        sNewFileName := ExtractFilePath(Application.ExeName) + frmApplication.DBImage1.dbCopyTo + '\'+ frmApplication.edCounter.Text + '_' + DateToStr(frmApplication.dtDate.Date) + ExtractFileExt(sFileName);

        dbFileName := '"\'+frmApplication.DBImage1.dbCopyTo + '\'+ frmApplication.edCounter.Text + '_' + DateToStr(frmApplication.dtDate.Date) + ExtractFileExt(sFileName)+'"';

        if FileExists(sNewFileName) then
        begin
            if IDYES = MessageBox('File exists.' + #13+ sNewFileName+#13+ 'Overwrite?', 'Warning', MB_YESNO+MB_ICONQUESTION) then
            begin
                DeleteFile(sNewFileName);
                //if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE application SET PhotoIn1_filename = '+dbFileName + ' WHERE id='+IntToStr(frmApplication.Button1.dbGeneralTableId));
            end;
        end;

        if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE application SET PhotoIn1_filename = '+dbFileName + ' WHERE id='+IntToStr(frmApplication.Button1.dbGeneralTableId));
    end;


    if frmApplication.DBImage2.dbImageIsChanged then
    begin
        sFileName := frmApplication.DBImage2.dbFileName;
        sFileName := ExtractFileDir(Application.ExeName)+sFileName;
        sNewFileName := ExtractFilePath(Application.ExeName) + frmApplication.DBImage2.dbCopyTo + '\'+ frmApplication.edCounter.Text + '_' + DateToStr(frmApplication.dtDate.Date) + ExtractFileExt(sFileName);

        dbFileName := '"\'+frmApplication.DBImage2.dbCopyTo + '\'+ frmApplication.edCounter.Text + '_' + DateToStr(frmApplication.dtDate.Date) + ExtractFileExt(sFileName)+'"';

        if FileExists(sNewFileName) then
        begin
            if IDYES = MessageBox('File exists.' + #13+ sNewFileName+#13+ 'Overwrite?', 'Warning', MB_YESNO+MB_ICONQUESTION) then
            begin
                DeleteFile(sNewFileName);
                //if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE person SET photo2_filename = '+dbFileName + ' WHERE id='+IntToStr(frmApplication.Button1.dbGeneralTableId));
            end;
        end;

        if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE application SET PhotoIn2_filename = '+dbFileName + ' WHERE id='+IntToStr(frmApplication.Button1.dbGeneralTableId));

    end;

    if frmApplication.DBImage3.dbImageIsChanged then
    begin
        sFileName := frmApplication.DBImage3.dbFileName;
        sFileName := ExtractFileDir(Application.ExeName)+sFileName;
        sNewFileName := ExtractFilePath(Application.ExeName) + frmApplication.DBImage3.dbCopyTo + '\'+ frmApplication.edCounter.Text + '_' + DateToStr(frmApplication.dtDate.Date) + ExtractFileExt(sFileName);

        dbFileName := '"\'+frmApplication.DBImage3.dbCopyTo + '\'+ frmApplication.edCounter.Text + '_' + DateToStr(frmApplication.dtDate.Date) + ExtractFileExt(sFileName)+'"';

        if FileExists(sNewFileName) then
        begin
            if IDYES = MessageBox('File exists.' + #13+ sNewFileName+#13+ 'Overwrite?', 'Warning', MB_YESNO+MB_ICONQUESTION) then
            begin
                DeleteFile(sNewFileName);
                //if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE person SET photo3_filename = '+dbFileName + ' WHERE id='+IntToStr(frmApplication.Button1.dbGeneralTableId));
            end;
        end;

        if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE application SET PhotoIn3_filename = '+dbFileName + ' WHERE id='+IntToStr(frmApplication.Button1.dbGeneralTableId));
    end;
end;
Dmitry.

Re: Уникальное имя изображения

DriveSoft wrote:

Попробуйте так

procedure frmApplication_Button1_OnAfterClick (Sender: string);
var
    dbFileName, sFileName, sNewFileName: string;
begin
    if frmApplication.DBImage1.dbImageIsChanged then
    begin
        sFileName := frmApplication.DBImage1.dbFileName;
        sFileName := ExtractFileDir(Application.ExeName)+sFileName;
        sNewFileName := ExtractFilePath(Application.ExeName) + frmApplication.DBImage1.dbCopyTo + '\'+ frmApplication.edCounter.Text + '_' + DateToStr(frmApplication.dtDate.Date) + ExtractFileExt(sFileName);

        dbFileName := '"\'+frmApplication.DBImage1.dbCopyTo + '\'+ frmApplication.edCounter.Text + '_' + DateToStr(frmApplication.dtDate.Date) + ExtractFileExt(sFileName)+'"';

        if FileExists(sNewFileName) then
        begin
            if IDYES = MessageBox('File exists.' + #13+ sNewFileName+#13+ 'Overwrite?', 'Warning', MB_YESNO+MB_ICONQUESTION) then
            begin
                DeleteFile(sNewFileName);
                //if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE application SET PhotoIn1_filename = '+dbFileName + ' WHERE id='+IntToStr(frmApplication.Button1.dbGeneralTableId));
            end;
        end;

        if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE application SET PhotoIn1_filename = '+dbFileName + ' WHERE id='+IntToStr(frmApplication.Button1.dbGeneralTableId));
    end;


    if frmApplication.DBImage2.dbImageIsChanged then
    begin
        sFileName := frmApplication.DBImage2.dbFileName;
        sFileName := ExtractFileDir(Application.ExeName)+sFileName;
        sNewFileName := ExtractFilePath(Application.ExeName) + frmApplication.DBImage2.dbCopyTo + '\'+ frmApplication.edCounter.Text + '_' + DateToStr(frmApplication.dtDate.Date) + ExtractFileExt(sFileName);

        dbFileName := '"\'+frmApplication.DBImage2.dbCopyTo + '\'+ frmApplication.edCounter.Text + '_' + DateToStr(frmApplication.dtDate.Date) + ExtractFileExt(sFileName)+'"';

        if FileExists(sNewFileName) then
        begin
            if IDYES = MessageBox('File exists.' + #13+ sNewFileName+#13+ 'Overwrite?', 'Warning', MB_YESNO+MB_ICONQUESTION) then
            begin
                DeleteFile(sNewFileName);
                //if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE person SET photo2_filename = '+dbFileName + ' WHERE id='+IntToStr(frmApplication.Button1.dbGeneralTableId));
            end;
        end;

        if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE application SET PhotoIn2_filename = '+dbFileName + ' WHERE id='+IntToStr(frmApplication.Button1.dbGeneralTableId));

    end;

    if frmApplication.DBImage3.dbImageIsChanged then
    begin
        sFileName := frmApplication.DBImage3.dbFileName;
        sFileName := ExtractFileDir(Application.ExeName)+sFileName;
        sNewFileName := ExtractFilePath(Application.ExeName) + frmApplication.DBImage3.dbCopyTo + '\'+ frmApplication.edCounter.Text + '_' + DateToStr(frmApplication.dtDate.Date) + ExtractFileExt(sFileName);

        dbFileName := '"\'+frmApplication.DBImage3.dbCopyTo + '\'+ frmApplication.edCounter.Text + '_' + DateToStr(frmApplication.dtDate.Date) + ExtractFileExt(sFileName)+'"';

        if FileExists(sNewFileName) then
        begin
            if IDYES = MessageBox('File exists.' + #13+ sNewFileName+#13+ 'Overwrite?', 'Warning', MB_YESNO+MB_ICONQUESTION) then
            begin
                DeleteFile(sNewFileName);
                //if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE person SET photo3_filename = '+dbFileName + ' WHERE id='+IntToStr(frmApplication.Button1.dbGeneralTableId));
            end;
        end;

        if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE application SET PhotoIn3_filename = '+dbFileName + ' WHERE id='+IntToStr(frmApplication.Button1.dbGeneralTableId));
    end;
end;

Всё заработало!!!
ОГРОМНЕЙШЕЕ СПАСИБО!!!

надо идти вперёд....

17 (edited by sdhale29 2020-03-17 07:26:27)

Re: Уникальное имя изображения

Hello,

I downloaded the example, and I cannot get it to work.  Even with no changes to the phonebook example.  It just keeps adding 1 to the photo names.  Like
image.jpg,  image(1).jpg, image(2).jpg and so on. 
It doesn't rename them from the original name, or give a warning that the file exists.  I would just like to delete the existing file from the folder (or overwrite) when I select a new one.  Any help would be appreciated.  I love MVD!!!!!!

Thanks,
Sonny
MVD 6.2

Correction MVD 6.3!!!!!!

Sonny.

Re: Уникальное имя изображения

sdhale29 wrote:

Hello,

I downloaded the example, and I cannot get it to work.  Even with no changes to the phonebook example.  It just keeps adding 1 to the photo names.  Like
image.jpg,  image(1).jpg, image(2).jpg and so on. 
It doesn't rename them from the original name, or give a warning that the file exists.  I would just like to delete the existing file from the folder (or overwrite) when I select a new one.  Any help would be appreciated.  I love MVD!!!!!!

Thanks,
Sonny
MVD 6.2

Correction MVD 6.3!!!!!!

Hello.


Thank you for the bug report, fixed, please download the example again
http://myvisualdatabase.com/forum/misc. … download=1

Dmitry.

Re: Уникальное имя изображения

Hello Dmitry,

Thanks for the quick response, however it still isn't working for me.  I have not made any changes to the example.  I just added a picture to John over and over again and it is still the same. I have attached a screenshot.

Thanks,
Sonny

Post's attachments

Attachment icon File Rename.png 114.88 kb, 164 downloads since 2020-03-17 

Sonny.

Re: Уникальное имя изображения

sdhale29 wrote:

Hello Dmitry,

Thanks for the quick response, however it still isn't working for me.  I have not made any changes to the example.  I just added a picture to John over and over again and it is still the same. I have attached a screenshot.

Thanks,
Sonny

Please check the script

procedure frmAbonent_bOK_OnAfterClick (Sender: string);
var
    dbFileName, sFileName, sNewFileName: string;
begin
    if frmAbonent.dbPhoto.dbImageIsChanged then
    begin
        sFileName := frmAbonent.dbPhoto.dbFileName;
        sFileName := ExtractFileDir(Application.ExeName)+sFileName;
        sNewFileName := ExtractFilePath(Application.ExeName) + frmAbonent.dbPhoto.dbCopyTo + '\'+ frmAbonent.EditCounter.Text + '_' + DateToStr(frmAbonent.dtDate.Date) + ExtractFileExt(sFileName);

        dbFileName := '"\'+frmAbonent.dbPhoto.dbCopyTo + '\'+ frmAbonent.EditCounter.Text + '_' + DateToStr(frmAbonent.dtDate.Date) + ExtractFileExt(sFileName)+'"';

        if FileExists(sNewFileName) then
        begin
            if IDYES = MessageBox('File exists.' + #13+ sNewFileName+#13+ 'Overwrite?', 'Warning', MB_YESNO+MB_ICONQUESTION) then
            begin
                DeleteFile(sNewFileName);
                if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE person SET photo_filename = '+dbFileName + ' WHERE id='+IntToStr(frmAbonent.bOK.dbGeneralTableId));
            end;
        end else if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE person SET photo_filename = '+dbFileName + ' WHERE id='+IntToStr(frmAbonent.bOK.dbGeneralTableId));
    end;
end;

Pay attention to this line

        end else if RenameFile(sFileName, sNewFileName) then SQLExecute('UPDATE person SET photo_filename = '+dbFileName + ' WHERE id='+IntToStr(frmAbonent.bOK.dbGeneralTableId));
Dmitry.