Всем Привет.
Помогите пожалуйста найти ошибку или недочёт в коде. Пытаюсь загрузить документ в blob ячейку в базе sql. Иногда первый раз загружается нормально, но иногда выдаёт ошибку "процесс не может получить доступ к файлу так как этот файл занят другим процессом".
В чем ошибка - никак не могу понять. То загружается, то нет.
Код:
//sdstemp2: TSimpleDataSet;
procedure TfmMain.btnCreateDocClick(Sender: TObject); // кнопка добавляет новую запись
begin
sdstemp2.Insert;
sdstemp2.Fields[0].Value:=1;
end;
procedure TfmMain.BitBtn2Click(Sender: TObject); // кнопка выбора документа
begin
if OpenDialog2.Execute then
begin
if not FileExists(OpenDialog2.FileName) then
begin
ShowMessage('Файл не найден.');
Exit;
end
else
tblobfield(sdstemp2.FieldByName('document')).LoadFromFile(OpenDialog2.FileName);
end;
end;
procedure TfmMain.BitBtn5Click(Sender: TObject); // кнопка Post
begin
sdstemp2.Post;
sdstemp2.ApplyUpdates(0);
sdstemp2.Refresh;
statusbar1.Panels[0].Text:='документ загружен';
opendialog2.Free;
end;
собственно ошибка
http://saveimg.ru/show-image.php?id=...2e7304121d870d
Так же есть кнопка открытия документа. Работает хорошо, до тех пор, пока не попробуешь загрузить документ. После этого опять вылезает та же самая ошибка.
Код:
//sdsopendoc: TSimpleDataSet;
procedure TfmMain.BitBtn1Click(Sender: TObject);
var
ptkwrd:Tmemorystream;
begin
sdsopendoc.Open;
ptkwrd:= Tmemorystream.Create;
tblobfield(sdsOpenDoc.FieldByName('document')).SaveToStream(ptkwrd);
ptkwrd.Position:=0;
ptkwrd.SaveToFile('tmp/temp_document.doc');
shellexecute(Handle, 'open','tmp/temp_document.doc',nil,nil,SW_SHOWNORMAL);
ptkwrd.Free;
end;