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

DbDateEdit 元件在 Onchange 新增資料時發生問題

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


發表:63
回覆:148
積分:42
註冊:2007-04-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-04-09 16:29:15 IP:220.131.xxx.xxx 訂閱
我是用DbDateEdit 連接Tabel 的index Key 在編譯時出現下列錯誤訊息
>>>raised exception class EDBEngine Error With Message Type mismatch in expression

但是整個程式離開之後用 exe檔 去Run 則只會出現 Type mismatch in expression 把訊息警告x
忽略之後還是可以新增資料
PS:有一點必須先告知,那就是本元件我是去關聯另一個Tabel 的主Key ,所以只要不是新增,
Onchange 時瀏覽帶出相關 資料是很正常,唯獨新增時才會出現錯誤訊息‧
Exp:假設我在DbDateEdit Click 一下選擇2007/04/09 關聯的Tabel 若是同Key 則會帶出 是星期一
農曆0960222 癸酉日,
====================================<<<
請問各位高手 有誰能替我解決這個問題 非常急迫耶!!! 先感謝各位高手囉!
hagar
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-04-09 18:05:44 IP:210.242.xxx.xxx 未訂閱
您的 DbDateEdit 在 Onchange 事件寫了哪些程式?
還有對應到的欄位型態為何?
K1086
初階會員


發表:63
回覆:148
積分:42
註冊:2007-04-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-04-10 11:20:59 IP:220.131.xxx.xxx 訂閱

===================引 用 文 章===================
您的 DbDateEdit?在 Onchange 事件寫了哪些程式?
還有對應到的欄位型態為何?
=======>>>>
procedure TTwn_Lot_49Fm1.DBDateEdit1Change(Sender: TObject);
VAR STDT:STRING;
begin
STDT:=COPY(DBDateEdit1.TEXT,6,5) '/' COPY(DBDateEdit1.TEXT,1,4);
QUERY1.Close;
QUERY1.SQL.CLEAR;
QUERY1.SQL.ADD('SELECT * FROM Twn_Day WHERE ');
QUERY1.SQL.ADD('開獎日期<=''' STDT ''' ');
QUERY1.SQL.ADD('ORDER BY 開獎日期 ASC');
QUERY1.OPEN;
QUERY1.Last;
QUERY1.NEXT;
EDT_01.TEXT:=QUERY1.FIELDBYNAME('農曆年').ASSTRING;
EDT_02.TEXT:=QUERY1.FIELDBYNAME('農曆月').ASSTRING;
EDT_03.TEXT:=QUERY1.FIELDBYNAME('農曆日').ASSTRING;
EDT_04.TEXT:=QUERY1.FIELDBYNAME('星期').ASSTRING;
EDT_05.TEXT:=QUERY1.FIELDBYNAME('干支').ASSTRING;
EDT_06.TEXT:=QUERY1.FIELDBYNAME('本數').ASSTRING;
EDT_07.TEXT:=QUERY1.FIELDBYNAME('納音').ASSTRING;
EDT_08.TEXT:=QUERY1.FIELDBYNAME('五行').ASSTRING;
EDT_09.TEXT:=QUERY1.FIELDBYNAME('沖肖').ASSTRING;
EDT_10.TEXT:=QUERY1.FIELDBYNAME('沖數').ASSTRING;
EDT_11.TEXT:=QUERY1.FIELDBYNAME('九星').ASSTRING;
EDT_12.TEXT:=QUERY1.FIELDBYNAME('玄空').ASSTRING;
end;
=======>>>> 以上程式對應有錯嗎?
hagar
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-04-10 17:41:29 IP:210.242.xxx.xxx 未訂閱
加紅色這一行試試
因為在新增一筆資料時, 也會觸發 OnChange 事件
但此時 DBDateEdit1.Text 值為空, 造成底下的 STDT 得到的值也為空
小弟認為是這個錯誤..

procedure TTwn_Lot_49Fm1.DBDateEdit1Change(Sender: TObject);
VAR STDT:STRING;
begin
if DBDateEdit1.TEXT = '' then Exit;
STDT:=COPY(DBDateEdit1.TEXT,6,5) '/' COPY(DBDateEdit1.TEXT,1,4);
...
end;
K1086
初階會員


發表:63
回覆:148
積分:42
註冊:2007-04-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-04-11 11:39:12 IP:220.131.xxx.xxx 訂閱

===================引 用 文 章===================
加紅色這一行試試
因為在新增一筆資料時, 也會觸發 OnChange 事件
但此時 DBDateEdit1.Text 值為空, 造成底下的 STDT 得到的值也為空
小弟認為是這個錯誤..

procedure TTwn_Lot_49Fm1.DBDateEdit1Change(Sender: TObject);
VAR?????? STDT:STRING;
begin
? if DBDateEdit1.TEXT = '' then Exit;
? STDT:=COPY(DBDateEdit1.TEXT,6,5) '/' COPY(DBDateEdit1.TEXT,1,4);
? ...
end;
=======>>>
謝謝版主 幫我解決這個問題 真的很感謝您!
其實 用 if DBDateEdit1.TEXT = '' then Exit; 執行時會自動存一筆空白記錄
若 改成 if DBDateEdit1.TEXT = '' then
begin
STDT:=COPY(DBDateEdit1.TEXT,6,5) '/' COPY(DBDateEdit1.TEXT,1,4);
.....
則不會發生自動存一筆空白記錄
在此特別 告知 版主 希望以後有 會員類似問題 可以通用模式 謝謝您
系統時間:2024-11-23 13:40:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!