全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2949
推到 Plurk!
推到 Facebook!

關於使用ole將資料匯至excel。

答題得分者是:RootKit
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-06-10 15:02:36 IP:60.248.xxx.xxx 訂閱
請問各位大大,

目前我是使用ole過濾sql文丟至execl中,在execl中作一些計算及格式轉換,
因為處理的時間很久,所以想加入progressbar來顯示,但是有個問題就是,
一但開始執行,控制權交由excel處理,就無法讓使用者在from上看出進度,
如沒有加progressbar時,使用者會以為當在execl中,請問各位有沒有什麼好方法,
可以不讓使用者以為是電腦跑到當掉。

thks..麻煩大家。
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-06-10 15:12:48 IP:61.67.xxx.xxx 未訂閱
加一個TIMER, 在開始轉EXCEL前去啟動, TIMER內每一秒偵測一次, 很簡單就是顯示一次訊息(如秒數, 或一個會動的訊息), 等EXCEL轉完勢必會回到你的程式段, 再停止 TIMER即可
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-06-10 16:39:23 IP:60.248.xxx.xxx 訂閱
PD 大大您好。

可是一旦開始跑EXECL時,原本的主FROM就無法動就算放TIME或ProgressBar都看不到,
整個被execl咬著,好像沒有反應。

thks,麻煩您。
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-06-11 01:01:02 IP:61.67.xxx.xxx 未訂閱
我不知道你跑excel是怎麼寫, 不過一般是利用迴圈一筆筆指定到excel.cell上, 如是的話, 在迴圈(如 for next, do while ..)間第一列的位置加入Application.ProcessMessages, 就可以讓控制權交回Delphi, 至於螢幕上要如何保持top顯示, 本站有很多討論可以參考
mypigbaby
高階會員


發表:11
回覆:168
積分:155
註冊:2006-07-20

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-06-11 08:11:25 IP:203.73.xxx.xxx 訂閱
豬寶寶的寫法供您參考
[code delphi]
while NOT PROC_REC.Eof do
begin
for I :=0 to PROC_REC.FieldCount-1 do
begin
EXCEL.Cells[Y ,I 1].VALUE:=PROC_REC.Fields[I].AsString;
Application.ProcessMessages;
end;
INC(Y);
PROC_REC.Next;
end;

[/code]
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-06-11 10:20:17 IP:60.248.xxx.xxx 訂閱
 PD & 豬寶寶 各位 大大謝謝,
豬寶寶您的方式我有加入Application.ProcessMessages這段,
可是都沒有反應,可能我還不會用from設定top,
目前我想利用progressbar timer去處理這段看似當掉處理,
這幾天網上所提供方法,似乎不太會用,還在研究中。
這支程式有兩個from1,from2,
from1為登入畫面,from2為主要處理from,
其中button1為轉excel動作,在丟execl之前會跑一段長逹1分多的sql文->
接序丟至excel後 -> 而後在excel格式轉換及畫格子等等。
時間等待最久應該是那段sql文吧,
我希望可以在將progressbar(加入StatusBar1.panil[1]) timer放至from2
麻煩各位有沒有類似的範例,繼續加油中。
thks.
mypigbaby
高階會員


發表:11
回覆:168
積分:155
註冊:2006-07-20

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-06-11 11:24:38 IP:203.73.xxx.xxx 訂閱
如果是在OPEN那段..
豬寶寶個人也無解=.=
不知道有其他那位先進能提供方法嗎?


===================引 用 t0288542 文 章===================
PD & 豬寶寶 各位 大大謝謝,
豬寶寶您的方式我有加入Application.ProcessMessages這段,
可是都沒有反應,可能我還不會用from設定top,
目前我想利用progressbar timer去處理這段看似當掉處理,
這幾天網上所提供方法,似乎不太會用,還在研究中。
這支程式有兩個from1,from2,
from1為登入畫面,from2為主要處理from,
其中button1為轉excel動作,在丟execl之前會跑一段長逹1分多的sql文->
接序丟至excel後 -> 而後在excel格式轉換及畫格子等等。
時間等待最久應該是那段sql文吧,
我希望可以在將progressbar(加入StatusBar1.panil[1]) timer放至from2
麻煩各位有沒有類似的範例,繼續加油中。
thks.
RootKit
資深會員


發表:16
回覆:358
積分:419
註冊:2008-01-02

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-06-11 13:25:20 IP:61.222.xxx.xxx 訂閱
不清楚你使用 Excel 是為顯示狀態還是隱藏狀態做處理。
如果為顯示狀態,可能會遮住目前的視窗

可另外Popup一個 FormStyle = fsStayOnTop 的 From3並擺入 PrograssBar
做處理。
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#9 引用回覆 回覆 發表時間:2008-06-11 13:50:57 IP:60.248.xxx.xxx 訂閱
請問您,excel以隱藏狀態作處理的話,
from3 設 FormStyle = fsStayOnTop 內PrograssBar就會有動作嗎,
excel以隱藏狀態 請問 這段要如何去設呢。

thks
===================引 用 RootKit 文 章===================
不清楚你使用 Excel 是為顯示狀態還是隱藏狀態做處理。
如果為顯示狀態,可能會遮住目前的視窗

可另外Popup一個 FormStyle = fsStayOnTop 的 From3並擺入 PrograssBar
做處理。
RootKit
資深會員


發表:16
回覆:358
積分:419
註冊:2008-01-02

發送簡訊給我
#10 引用回覆 回覆 發表時間:2008-06-11 17:40:08 IP:61.222.xxx.xxx 訂閱
>from3 設 FormStyle = fsStayOnTop 內PrograssBar就會有動作嗎,
會。因為視窗沒有被遮住。
不過顯示視窗過程中需要稍微處理。

> excel以隱藏狀態
應該有個 Visible 得參數。搜索網站應該就有。






系統時間:2024-03-29 13:03:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!