|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Загрузка файла в Blob через OpenDialog
Всем Привет.
Помогите пожалуйста найти ошибку или недочёт в коде. Пытаюсь загрузить документ в 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; Последний раз редактировалось MadFroG, 19.01.2012 в 13:41. |