Я выяснил, как сохранить и получить файл JPEG в моей базе данных. Если файл JPEG есть, я могу его легко отредактировать, но если я попытаюсь ввести новую запись, я всегда получаю JPEG Error # 42. Вот мои фрагменты кода. Я использую btnLabelGetClick для загрузки изображения в поток, который будет опубликован.Получение JPEG Ошибка # 42 при попытке добавить новую запись
procedure TfrmWines.AutoSetDataChange(Sender: TObject; Field: TField);
var
JPG: TJPEGImage;
ms: TMemoryStream;
begin
JPG := TJPEGImage.Create;
ms := TMemoryStream.Create;
try
TBlobField(wdatamod.mywines.FieldByName('winelabel')).SaveToStream(ms);
ms.Position := 0;
JPG.LoadFromStream(ms);
Image1.Picture.Assign(JPG);
finally
JPG.Free;
ms.Free;
end;
end;
procedure TfrmWines.btnAddClick(Sender: TObject);
begin
ButtonsEnter;
//btnLabelGet.Click;
wdatamod.mywines.Insert;
edWinename.SetFocus;
end;
procedure TfrmWines.btnLabelGetClick(Sender: TObject);
begin
if OpenPictureDialog1.Execute(Self.Handle) then
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
Возможный дубликат [Почему я получаю JPEG ошибка 42, когда она хранится в базе данных?] (HTTP: // StackOverflow .com/questions/12697699/why-do-i-get-jpeg-error-42-when-its-stored-in-a-database). Платит выполнение базового веб-поиска. Это было задано в той или иной форме так много раз. –
Если ваше поле blob пусто, данных для загрузки в 'TJPEGImage' нет. Вы должны проверить это условие перед вызовом 'LoadFromStream'. –
Я исследовал это. Исследуя это, я получил возможность получить текущий код. Я думаю, что я решил это, отключив источник данных, а затем добавив запись, и я больше не получаю JPEG Error # 42. –