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

多重步驟操生發生錯誤.請檢查每個狀態值

缺席
yannyann
一般會員


發表:8
回覆:20
積分:10
註冊:2003-02-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-17 04:08:37 IP:163.28.xxx.xxx 未訂閱
我利用TTimer設計每0.1sec新增一筆含有BLOB Data的資料到Access資料庫裡 不過常常會出現"多重步驟操生發生錯誤.請檢查每個狀態值 " 這個錯誤訊息... 這應該從哪方面下手呢? 程式碼如下
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
(略)
        ADOtbVideo->Insert();
        s=ADOtbVideo->CreateBlobStream( ADOtbVideo->FieldByName("Image"), bmWrite );
        s->Seek( 0, 0 );
        pJPEG->SaveToStream(s);
        ADOtbVideo->FieldByName("DateTime")->AsString=DateTimeToStr(Now());
        delete s;
        delete pJPEG;
        ADOtbVideo->Post();
}
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-17 08:35:14 IP:203.73.xxx.xxx 未訂閱
yannyann 你好: 請先修改你的程式碼如下,看看 dwDiff 的值為多少??    
引言: 我利用TTimer設計每0.1sec新增一筆含有BLOB Data的資料到Access資料庫裡 不過常常會出現"多重步驟操生發生錯誤.請檢查每個狀態值 " 這個錯誤訊息... 這應該從哪方面下手呢? 程式碼如下
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
(略)
        DWORD dwStart=GetTickCount();
        ADOtbVideo->Insert();
        s=ADOtbVideo->CreateBlobStream( ADOtbVideo->FieldByName("Image"), bmWrite );
        s->Seek( 0, 0 );
        pJPEG->SaveToStream(s);
        ADOtbVideo->FieldByName("DateTime")->AsString=DateTimeToStr(Now());
        delete s;
        delete pJPEG;
        ADOtbVideo->Post();
        DWORD dwEnd=GetTickCount();
        DWORD dwDiff=dwEnd-dwStart;
}
-- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2003/03/17 13:40:40
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
yannyann
一般會員


發表:8
回覆:20
積分:10
註冊:2003-02-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-17 13:38:43 IP:163.28.xxx.xxx 未訂閱
引言: yannyann 你好: 請先修改你的程式碼如下,看看 dwDiff 的值為多少??
RaynorPao你好.. dwDiff 在0 與 -16 之間跳動.. 不過我整個void __fastcall TForm1::Timer1Timer(TObject *Sender) 需要60-90ms的時間... RaynorPao你覺得可能是我Timer1Timer內耗時超過0.1sec? 我也想過這問題,不過我將timer interval改成200(0.2sec) 還是會出現相同問題...
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-17 13:50:05 IP:203.73.xxx.xxx 未訂閱
引言: RaynorPao你好.. dwDiff 在0 與 -16 之間跳動.. 不過我整個void __fastcall TForm1::Timer1Timer(TObject *Sender) 需要60-90ms的時間... RaynorPao你覺得可能是我Timer1Timer內耗時超過0.1sec? 我也想過這問題,不過我將timer interval改成200(0.2sec) 還是會出現相同問題...
yannyann 你好:
(1)那如果是這樣子寫呢(先試試看)
>>>
<><>
備註:
請 >    -- 
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
yannyann
一般會員


發表:8
回覆:20
積分:10
註冊:2003-02-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-17 14:07:13 IP:163.28.xxx.xxx 未訂閱
RaynorPao你好.. 加入之後依然會產生這個問題,而且執行時間拉長了..超過0.1sec. 你所指其它資料庫部分..我說明一下我程式資料庫部分的架構 我是用ACCESS 2000格式的資料庫,不過我是使用ACCESS 2002 連接部分,我使用 ADOtbVideo,ADOtbBack兩個ADOTable連到ADOConnection,再連往資料庫 Connection String: Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data Source=D:\My Documents\VIDEO.mdb;Mode=ReadWrite;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False 在FormCreate時,Active 兩個ADOTable, 在Timer1Timer function中,只Insert資料到ADOtbVideo.. 昨晚看了找了一晚上,實在看不出可能問題會在哪.. 可以給我個方向嗎? 發表人 - yannyann 於 2003/03/17 14:27:16
yannyann
一般會員


發表:8
回覆:20
積分:10
註冊:2003-02-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-25 04:36:59 IP:163.28.xxx.xxx 未訂閱
經過多日奮戰...最後解決方法居然是....換掉資料庫... 我改用
系統時間:2024-04-23 21:46:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!