DbDateEdit 元件在 Onchange 新增資料時發生問題 |
答題得分者是:hagar
|
K1086
初階會員 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
我是用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 發送簡訊給我 |
|
K1086
初階會員 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
===================引 用 文 章=================== 您的 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 發送簡訊給我 |
加紅色這一行試試
因為在新增一筆資料時, 也會觸發 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 發送簡訊給我 |
===================引 用 文 章=================== 加紅色這一行試試 因為在新增一筆資料時, 也會觸發 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); ..... 則不會發生自動存一筆空白記錄 在此特別 告知 版主 希望以後有 會員類似問題 可以通用模式 謝謝您 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |