如何将jpg文件从sql server中取出来 |
答題得分者是:sos_admin
|
reebokmonkey
一般會員 發表:44 回覆:73 積分:23 註冊:2003-08-06 發送簡訊給我 |
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
reebokmonkey
一般會員 發表:44 回覆:73 積分:23 註冊:2003-08-06 發送簡訊給我 |
上面的例子只是取单张jpg文件的。请问如果从一个记录集中连续的取出jpg文件
应该怎么取。我作了个例子可是有错,请高人指点。代码如下
var
jpgstream:TJpegImage ;
ImageName,aa:String; Stream: TBlobStream; Stream1: TBlobStream;
Stream2: TStream; begin SelArchives.Form4.ShowModal; RunNum:=0; ADODataSet1.CommandText :='Select * From Tb_Doc Where Item_id=' + Form4.ItemId ;
ADODataSet1.CursorType:=ctDynamic;
ADODataSet1.Open; jpgstream:= TJPEGImage.Create;
while not ADODataSet1.Recordset.EOF do
begin
Stream2:=ADODataSet1.CreateBlobStream(ADODataSet1.FieldByName('doc_content'), bmRead);
ImageName:='c:\Test' + IntToStr(RunNum+1) + '.jpg';
ShowMessage(ImageName);
jpgstream.LoadFromStream(Stream2); jpgstream.SaveToFile(ImageName);
if not ADODataSet1.Recordset.EOF then ADODataSet1.Recordset.MoveNext ;
Stream2.Free;
RunNum:=RunNum+1;
end;
ADODataSet1.Close;
jpgstream.free; end; 错误是“Access violation at address 0041b946 in module "Scanmain.exe"”Scanmain是我的工程名字 發表人 - reebokmonkey 於 2003/09/04 14:29:16 發表人 - reebokmonkey 於 2003/09/04 14:45:26 發表人 - reebokmonkey 於 2003/09/04 14:50:59
|
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
....... while not ADODataSet1.Recordset.EOF do
begin
Stream2:=TStream.Create ;
TRY
Stream2:=ADODataSet1.CreateBlobStream(ADODataSet1.FieldByName('doc_content'), bmRead);
ImageName:='c:\Test' IntToStr(RunNum 1) '.jpg';
ShowMessage(ImageName);
Stream2.Position :=0;
jpgstream.LoadFromStream(Stream2);
jpgstream.Position :=0;
jpgstream.SaveToFile(ImageName);
FINALLY
Stream2.Free;
END;
if not ADODataSet1.Recordset.EOF then ADODataSet1.Recordset.MoveNext ;
RunNum:=RunNum 1;
end; ........ 我修改了一下,try ~~
|
reebokmonkey
一般會員 發表:44 回覆:73 積分:23 註冊:2003-08-06 發送簡訊給我 |
引言: ....... while not ADODataSet1.Recordset.EOF do begin Stream2:=TStream.Create ; TRY Stream2:=ADODataSet1.CreateBlobStream(ADODataSet1.FieldByName('doc_content'), bmRead); ImageName:='c:\Test' IntToStr(RunNum 1) '.jpg'; ShowMessage(ImageName); Stream2.Position :=0; jpgstream.LoadFromStream(Stream2); jpgstream.Position :=0; jpgstream.SaveToFile(ImageName); FINALLY Stream2.Free; END; if not ADODataSet1.Recordset.EOF then ADODataSet1.Recordset.MoveNext ; RunNum:=RunNum 1; end; ........ 我修改了一下,try ~~为什么总是显示的一条记录 这句话实执行了ADODataSet1.Recordset.MoveNext,可还事显示的事第一条记录 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |