hadisalahi2
شنبه 20 مهر 1387, 11:08 صبح
با سلام به همگی دوستان.
من برای ذخیره عکس در بانک اطلاعاتی Sql Server از کد زیر استفاده کنم
procedure TDataBaseForm.InsertBlob(ID:Byte;fileName:String);
var
bS : TADOBlobStream;
Fs:TFileStream;
begin
bS := TADOBlobStream.Create( tblobfield(adoquery1.Fields[10]),bmwrite);
bS.Seek(0, soFromBeginning);
fs := TFileStream.Create(fileName,fmOpenRead or fmShareDenyWrite);
bS.CopyFrom(fs, fs.Size);
fs.Free;
bS.Free;
end;
و برای بازیابی هم از کد زیر استفاده میکنم.
procedure TDataBaseForm.PicRecovery(fieldName:string;ID:byte );
var StreamPic2 :TMemoryStream; IP : TJPEGImage;
begin
StreamPic2:= TMemoryStream.Create;
IP:= TJPEGImage.Create;
try TBlobField(DataBaseForm.ADOQuery1.FieldByName('Top Image')).SaveToStream(StreamPic2);
StreamPic2.Seek(0, soFromBeginning);
IP.LoadFromStream(StreamPic2);
PolEditForm.TopImage.Picture.Graphic:= IP;
finally
StreamPic2.Free;
IP.Free;
end;
end;
حالا مشکل من اینه که موقع بازیابی یک تصویر در صورت خالی بودن اون فیلد تصویر که از نوع Image تعریف شده ، پیغام خطا صادر میشه ، مبنی بر خالی بودن فیلد. حالا چه طور میتونم چک کنم که یک فیلد با نوع تصویر دارای مقدار است یا نه؟
و در کد زیر هم
bS := TADOBlobStream.Create( tblobfield(adoquery1.Fields[10]),bmwrite);
چه طور میتونم به جای دادن شماره فیلد ، نام اون فیلد رو وارد کنم؟
یا حق
من برای ذخیره عکس در بانک اطلاعاتی Sql Server از کد زیر استفاده کنم
procedure TDataBaseForm.InsertBlob(ID:Byte;fileName:String);
var
bS : TADOBlobStream;
Fs:TFileStream;
begin
bS := TADOBlobStream.Create( tblobfield(adoquery1.Fields[10]),bmwrite);
bS.Seek(0, soFromBeginning);
fs := TFileStream.Create(fileName,fmOpenRead or fmShareDenyWrite);
bS.CopyFrom(fs, fs.Size);
fs.Free;
bS.Free;
end;
و برای بازیابی هم از کد زیر استفاده میکنم.
procedure TDataBaseForm.PicRecovery(fieldName:string;ID:byte );
var StreamPic2 :TMemoryStream; IP : TJPEGImage;
begin
StreamPic2:= TMemoryStream.Create;
IP:= TJPEGImage.Create;
try TBlobField(DataBaseForm.ADOQuery1.FieldByName('Top Image')).SaveToStream(StreamPic2);
StreamPic2.Seek(0, soFromBeginning);
IP.LoadFromStream(StreamPic2);
PolEditForm.TopImage.Picture.Graphic:= IP;
finally
StreamPic2.Free;
IP.Free;
end;
end;
حالا مشکل من اینه که موقع بازیابی یک تصویر در صورت خالی بودن اون فیلد تصویر که از نوع Image تعریف شده ، پیغام خطا صادر میشه ، مبنی بر خالی بودن فیلد. حالا چه طور میتونم چک کنم که یک فیلد با نوع تصویر دارای مقدار است یا نه؟
و در کد زیر هم
bS := TADOBlobStream.Create( tblobfield(adoquery1.Fields[10]),bmwrite);
چه طور میتونم به جای دادن شماره فیلد ، نام اون فیلد رو وارد کنم؟
یا حق