線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2143
推到 Plurk!
推到 Facebook!

Stream有無大小的限制?

答題得分者是:hagar
star
初階會員


發表:37
回覆:93
積分:36
註冊:2002-07-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-22 18:26:02 IP:211.72.xxx.xxx 未訂閱
我的主題這樣問, 不知是否恰當? 使用:QuickRep+ADOQuery+MSSQL 2000 測試了二種將jpg圖片印表的方法, 但是當印到第13筆資料時,(當然第xx筆不一定) 會發生Stream read error的錯誤, 若我將圖檔改為較小時, 便可再印多幾筆資料,每一個圖檔都不到100kb,Table中也只有測試的建了約20筆record而已,將來有可能是好幾萬筆... 簡述此二種作法: >>再丟給>>,再丟給
star
初階會員


發表:37
回覆:93
積分:36
註冊:2002-07-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-22 21:43:07 IP:211.72.xxx.xxx 未訂閱
程式碼如下:(希望貼上來不會太亂, 最左邊要如何空格啊) <>(一) 直接讀取資料庫欄位 >> >> >(二)依檔名動態讀取圖片檔 > '' >> >>
code6421
版主


發表:43
回覆:223
積分:208
註冊:2002-08-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-23 18:09:01 IP:61.216.xxx.xxx 未訂閱
引言: (二)依檔名動態讀取圖片檔 procedure TQuickRep1.DetailBand1BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); var fs : TFileStream; begin QRImage1.Picture.Graphic := nil; if ADOQuery1.FieldByName('IMGFILE').AsString <> '' then begin try fs := TFileStream.Create('c:\123.jpg',fmCreate); try IdHTTP1.Get('http://192.168.1.1/' ADOQuery1.FieldByName('IMGFILE').AsString,fs); except end; finally fs.Free; end; end; try QRImage1.Picture.LoadFromFile('c:\123.jpg'); except end; end; end; p.s.難道資源都被吃掉了,可是有Free啊...一頭霧水啦...
QRImage1.Picture.Graphic := nil; //you have make memory leak in here,you should use Picture.Graphic.Free, //if you want free graphic object manually. //in fact,you don't need do this, //Picture.LoadFromFile will free previous graphic for you. Just coding... Taiwan:http://code6421.ktop.com.tw China:http://home.hoolee.com/~code6421
------
Just codeing...
star
初階會員


發表:37
回覆:93
積分:36
註冊:2002-07-18

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-27 10:47:18 IP:211.72.xxx.xxx 未訂閱
QRImage1.Picture.Graphic := nil; 本來是為了當圖檔不存在時, 印空白, 但是發現好像沒用... QRImage1.Picture.Graphic.Free?? 這樣會Access violation... 我的問題是不是與FileStream較有關係? Stream read error, 不知是什麼情況下會產生的? 我也不是很清楚, 請前輩指導一下, 萬分感激!
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-08-28 03:13:39 IP:211.76.xxx.xxx 未訂閱
1.在html語法裡面,用 code.../code 可以把程式碼的排版原封不動保留. 2. >>QRImage1.Picture.Graphic := nil 建議這個可以改成 qrimage1.Picture.Bitmap.Canvas.Draw(x,y,tgraphic) tgraphic的來源可以是一張空白的圖檔,以檔案形式存在或是自己建立一個空白的tbitmap. 3.以前有做過類似的系統,就是進銷存系統裡的產品基本檔圖檔,資料庫存的是路徑,要列印前先將報表資料庫建立一個圖形型態的欄位,然後將來源的圖檔存入,用這個方式的好處應該是確保圖檔有傳入,不過,中間有一個轉折,當來源是jpg類型時先轉換成bmp格式,本來也是花了一些時間研究怎麼樣可以不要轉,後來老闆催得急,不喜歡programmer做太多R&D,就跟同事西哩呼嚕的趕出來了. 4.您的問題的確是牽涉到了不光是報表這一段就是. 5.tpicture的graphic屬性可以直接loadfromstream, qrimage1.Picture.Graphic.LoadFromStream() 6.這個問題看來您好像搏鬥了好一陣子,從之前幾篇post可以略知一二,似乎是可以考慮用intraweb實做看看,以您的第二種做法來說. 這一題的應用層面很廣,還希望有興趣的朋友加入討論. 發表人 - hahalin 於 2003/08/28 03:18:05 發表人 - hahalin 於 2003/08/28 03:18:43
star
初階會員


發表:37
回覆:93
積分:36
註冊:2002-07-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-08-28 11:31:49 IP:211.72.xxx.xxx 未訂閱
謝謝您的回應. 1.印空白圖片的問題, 我已用我最早的撇步:TQRImage.Enabled去控制了,最近較沒多餘的時間測. 2.目前正是利用IntraWeb開發, 但報表仍以QuickReport ActiveX搭配, 因為須要在Client列印, 而且有些是套表, 我想RaveReport轉PDF...等格式可能較不適合吧!(我猜的,其實我也沒用過RaveReport) 3.之前我也曾考慮過是否將jpg格式轉成bmp格式再存入資料庫, 但是實在怕運用到此類的型態,萬一那天資料庫load太重而..., 那豈不掛了, 改天..改天..再測吧!
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-08-28 12:24:53 IP:61.222.xxx.xxx 未訂閱
>>謝謝您的回應. 不客氣 >>3.之前我也曾考慮過是否將jpg格式轉成bmp格式再存入資料庫, 但是實在怕運用到此類的型態,萬一那天資料庫load太重而..., 那豈不掛了, 改天..改天..再測吧! 列印報表時才存入,而不是追根究底把來源資料庫更動, 也就是說列印時會有一個報表資料庫,可以是實體的例如在client-side的paradox或是access或是文字檔或是xml,也可以是在記憶體跑的tlist,tdataset,tclientdataset.
star
初階會員


發表:37
回覆:93
積分:36
註冊:2002-07-18

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-08-28 15:19:24 IP:211.72.xxx.xxx 未訂閱
引言: 也就是說列印時會有一個報表資料庫,可以是實體的例如在client-side的paradox或是access或是文字檔或是xml,也可以是在記憶體跑的tlist,tdataset,tclientdataset.
在client side存成實體資料庫, 我想須視實際狀況而定吧! 有的client side是不固定位置的,例如web application以IE當介面的話, 可能不太適合.要不然,在某機場內的某部電腦內就可能存了一堆資料囉!
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-08-28 18:03:51 IP:210.243.xxx.xxx 未訂閱
>在client side存成實體資料庫, 我想須視實際狀況而定吧!    對,沒錯    >有的client side是不固定位置的,例如web application以IE當介面的話,  >可能不太適合.要不然,在某機場內的某部電腦內就可能存了一堆資料囉!    1.小弟提供的建議不一定是適合您的專案,還希望能拋磚引玉吸引更多朋友討論出更好的做法與可行的架構.    2.在client-side儲存報表的資料,這種做法例如正航的顧問系列就是這樣做的,以他們產品的定位來說,這是一個可以運作且可靠的架構,當然如果您規劃的專案有更大的規模與理想,當然這樣的做法可行不可行自然您會有所取捨囉.    3.隱隱然還是想說,就算是client-side存報表資料庫,也不是無限制的膨脹,同樣的報表,第二次列印的時候是    a.先清除資料庫. b.再將由後端資料庫篩選出來的資料存入這個client-side的資料庫.    4.至於說某機場的某台電腦,難不成您做的是機場的系統囉....
star
初階會員


發表:37
回覆:93
積分:36
註冊:2002-07-18

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-08-29 01:39:06 IP:61.66.xxx.xxx 未訂閱
引言: >> 至於說某機場的某台電腦,難不成您做的是機場的系統囉.... 您可誤會了, 我的意思是過客使用>< face="Verdana, Arial, Helvetica"> 不好意思,離題有點遠了... 有人能解題嗎?
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-08-29 02:17:02 IP:61.64.xxx.xxx 未訂閱
使用:QuickRep ADOQuery MSSQL 2000 ||||||||||||||||||||||||||||||||||||||||||||||||| 參考看看 【發表】Internet ActiveX Form Quickreport範例 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=35248 【Delphi】【發表】用網頁做報表(一),程式source http://delphi.ktop.com.tw/topic.php?TOPIC_ID=32837 【Delphi】【發表】用網頁做報表(三),程式source http://delphi.ktop.com.tw/topic.php?TOPIC_ID=33569 |||||||||||||||||||||||||||||||||||||||||||||||| 這 應該也是一個可行的方式 ********************************************************* 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind to make knowledge together! 希望能大家敞開心胸,將知識寶庫結合一起
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-08-29 02:51:16 IP:211.76.xxx.xxx 未訂閱
引言: 不好意思,離題有點遠了... 有人能解題嗎?
您原題目中關於tstream的問題post在object pascal討論區會比較適合 小弟雞婆了點,您關於這個列印的部分已經提了好幾題, http://delphi.ktop.com.tw/topic.php?TOPIC_ID=35757 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=35980 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=35656 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=35726 這幾篇都在您目前的問題打轉吧 拿過去的經驗來交流交流既然離題那就 ㄟㄟㄟ 另外兩個版主,來救救火喔!!! 還有...如果有解答,每天眾版主都會路過看看,畢竟報表大家都有使用的經驗,會回答的就是會回答,不答的可能是 1.忙 2.發問者提供的資訊不足 3.就算不忙,看心情回答 4.分數已經太高不用回答 所以囉,小弟三腳貓的實力有興趣來討論一下,不能幫上忙很遺憾唷... 多廢話了幾句,尚請海涵阿!!! 發表人 - hahalin 於 2003/08/29 03:00:35
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-08-29 08:32:22 IP:202.39.xxx.xxx 未訂閱
小弟的看法, 在 IDE 底下 run, 或以記錄 Log 的方式 檢查在哪一行程式發生 "stream read error" 確定後, 再來探討為什麼那一行發生 "stream read error" 的錯誤.    --- 歡迎光臨 KTop 研究院--<-<-<@
系統時間:2024-05-02 8:20:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!