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

【Delphi問題】【以ADO連結Excel後無法做 Insert 與 Delete】

尚未結案
Mars123
一般會員


發表:6
回覆:9
積分:3
註冊:2003-07-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-07 09:56:51 IP:202.129.xxx.xxx 未訂閱
請教各位前輩們 小弟以ADO連結上Excel,以Excel當作資料庫,並以sheet作為資料表來作業 在針對其Excel下SQL指令時,除了Update 正常外, Insert 與 Delete皆會出現錯誤,訊息如下: 在 Insert 時的錯誤訊息為:『準則運算式的資料類型不符合』 在 Delete 時的錯誤訊息為:『此ISAM不支援在連結資料表中刪除資料』 以下為小弟所下的指令,請指教 //Insert strsql := 'insert into [' sheet_name ']' ; strsql :=strsql ' (name,birthday,id,address,tel)'; strsql :=strsql 'values(' '''' Edit_name.Text '''' ',' '''' Edit_YYYY.Text Edit_MM.Text Edit_DD.Text '''' ',' '''' Edit_id.Text '''' ',' '''' Edit_address.Text '''' ',' '''' Edit_tel.Text '''' ',' '''' Edit_yyyy1.Text Edit_mm1.Text Edit_dd1.Text '''' ')'; ADOQuery_Excel.Close; ADOQuery_Excel.SQL.Clear ; ADOQuery_Excel.SQL.Add(strsql); ADOQuery_Excel.ExecSQL; //Delete strsql := 'DELETE FROM [' sheet_name ']' ; strsql := strsql ' where id = ''' Edit_IDNO.Text ''''; ADOQuery_Excel.Close; ADOQuery_Excel.SQL.Clear ; ADOQuery_Excel.SQL.Add(strsql); ADOQuery_Excel.ExecSQL;
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-07 16:20:30 IP:61.221.xxx.xxx 未訂閱
Mars123 你好:  
引言: 在 Insert 時的錯誤訊息為:『準則運算式的資料類型不符合』 (name,birthday,id,address,tel)-----5個欄位 'values(' '''' Edit_name.Text '''' ',' '''' Edit_YYYY.Text Edit_MM.Text Edit_DD.Text '''' ',' '''' Edit_id.Text '''' ',' '''' Edit_address.Text '''' ',' '''' Edit_tel.Text '''' ',' '''' Edit_yyyy1.Text Edit_mm1.Text Edit_dd1.Text '''' ')'--6個
------
======================
昏睡~
不昏睡~
不由昏睡~
Mars123
一般會員


發表:6
回覆:9
積分:3
註冊:2003-07-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-10 13:21:22 IP:202.129.xxx.xxx 未訂閱
KO兄,你好 感謝你的指正,不過,這不是問題點所在 是小弟輸入上的錯誤,在Code的部份沒錯, 倒是剛剛試了一下,發現其實小弟的SQL語法是可以在EXCEL上做Inser與Update 指令的,只是在其中的一欄位(Tel)會出現錯誤訊息如下: 『準則運算式的資料類型不符合』 在該欄位(Tel)內,如果要Insert 或 Update 時,如果值為02-12345678 則會出現錯誤訊息; 但若輸入的值為0212345678,則一切正常 小弟輸入的值皆為文字型態,且也在Excel中的欄位的儲存格格式的類別已設定為文字型態 怎麼還會有這個錯誤產生?目前尚找不出癥結所在 還請各位前輩不吝指教,謝謝!
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-10 17:42:00 IP:61.221.xxx.xxx 未訂閱
Mars123 你好: 關於 insert into 建議 將'''' Edit_name.Text '''' 變更為 QuotedStr(Edit_name.Text) 可以解決 字串 的問題 關於 DELETE 可能是因為Excel的欄位是固定不可以更動的所以不能 刪除 而要變更成用update成空值
------
======================
昏睡~
不昏睡~
不由昏睡~
hagar
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-11-10 19:10:16 IP:202.39.xxx.xxx 未訂閱
小弟參考 2002 三月號的 Delphi Informant magazine 的說法 無論是用 ADO 或 ODBC(BDE) 連結 Excel 檔 可以 Read、Insert、Update 資料 但是不能 Delete 資料 要 Delete 資料, 得用 Automation --- Everything I say is a lie.
Mars123
一般會員


發表:6
回覆:9
積分:3
註冊:2003-07-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-11-11 10:56:50 IP:202.129.xxx.xxx 未訂閱
感謝KO兄的指引明燈 小弟在 將'''' Edit_name.Text '''' 變更為 QuotedStr(Edit_name.Text) 之後,果真就沒有異常出現了,總算可以交差了,甘溫吶~~ 另外,hagar兄,您的這篇回應,小弟在別的文章看過您的回應了 感激您的再次回應 小弟覺得可惜的是,難道從2002 三月之後Delphi都沒有加強這個功能嗎? 另外,您提到的Delphi Informant magazine,在一般的坊間也能買的到嗎?
wendp
一般會員


發表:1
回覆:3
積分:0
註冊:2004-08-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-09-09 08:38:26 IP:61.57.xxx.xxx 未訂閱
Mars123 您好: 最近本人也在用ADOConnection和ADOQuery在讀取Excel檔案,可是我遇到了問題... 就是我無法直接用ADOQuery直接下Update指令來直接更新Excel的資料. 不知您是否也有用到這個部份,可否給我指點指點呢?? 感恩啊!!
系統時間:2024-06-02 18:43:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!