PDA

View Full Version : یه مشکل کوچولو در ذخیره کردن تصویر تو بانک !



mosharecat
جمعه 01 شهریور 1387, 20:21 عصر
وقتی AdoTable روی فرم هستش این کد که برای ذخیره کردن تصویر و دیتابیس هستش کاملا درست عمل میکنه ولی وقتی AdoTable روبه DataMadule میبریم (که اینکار حتما باید انجام بشه بخاطر بعضی از اصول ها ) خطای Row Cannot Be Located For Updating .Some Values May Have Been Chaned Since It was Last Read. رو میده!
تابع JpegStartsInBlob و Procedure SaveJpegToTable برای ذخیره کردن تصویر هستن وقتی برنامه به خط SaveJpegToTable میرسه و اون زیربرنامه (با DataMadule.Adotable برای پارامتر اول مقداردهی میشه ) رو صدا میزنه ومیره داخل زیربرنامه، داخل زیربرنامه وقتی به خط table.Edit میرسه اون خطا رو میده و این در حالیه که وقتی Adotable روی خود فرم هستش نه تو DataMAdule و وقتی ما اونو بصورت (SaveJpegToTable(ADOTable1,DataModule1.ADOTable1Pi c,picpath برنامه کاملا درست عمل میکنه وهیچ مشکلی نیست خواهشا راهنمایی بفرمایید بدجوری بهش احتیاج دارم. :ناراحت::افسرده:






function JpegStartsInBlob(PicField:TBlobField):integer;


function JpegStartsInBlob(PicField:TBlobField):integer;
var
; bS : TADOBlobStream
;buffer : Word
; hx : string
begin


; Result := -1
bS := TADOBlobStream.Create(PicField, bmRead);
try
while (Result = -1) and (bS.Position + 1 < bS.Size) do begin
; (bS.ReadBuffer(buffer, 1)
; ( hx:=IntToHex(buffer,2)
if hx = 'FF' then begin
; (bS.ReadBuffer(buffer, 1
; (hx:=IntToHex(buffer,2
if hx = 'D8' then Result := bS.Position - 2
; else if hx = 'FF' then bS.Position := bS.Position-1
end;
end;//while
finally


bS.Free


end; //try


end;


//================================================== ===================


Procedure SaveJpegToTable(Table:TADOTable;PicField:TBlobFiel d;spicPath : string);


var


fs: TfileStream;


begin


fs:=TFileStream.create(spicPath,fmOpenRead);
try
;Table.Edit
; (picfield.LoadFromStream(fs
;Table.Post
finally
fs.free;
; end
End


//================================================== ===================


procedure TRegForm.saveClick(Sender: Tobject);


var
;bS : TADOBlobStream
;Pic : TJPEGImage


begin
....
...
// save filed pic
if picpath <> '' then
begin
;DataModule1.ADOTable1.Edit
; (SaveJpegToTable(DataModule1.ADOTable1,DataModule1 .ADOTable1Pic,picpath


'';:=picpath


; (bS := TADOBlobStream.Create(DataModule1.ADOTable1Pic, bmRead
try
; ( bS.Seek(JpegStartsInBlob(DataModule1.ADOTable1Pic) , soFromBeginning
;Pic:=TJpegImage.Create
try


; ( Pic.LoadFromStream(bS
;picimage.Picture.Graphic:=Pic


finally


;Pic.Free
;end
finally
bS.Free
;end
;end




http://i33.tinypic.com/23wlrr.jpg

vcldeveloper
شنبه 02 شهریور 1387, 00:15 صبح
Row Cannot Be Located For Updating
همین عبارت را در سایت جستجو کنید

Hsimple11
شنبه 02 شهریور 1387, 00:16 صبح
در ضمن بهتره بعد از این سوالتون رو زیباتر، خلاصه تر و منظم تر بنویسید تا دیگران وقت بذارند اون رو بخونند تا به جوابتون برسید.