線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1233
推到 Plurk!
推到 Facebook!

SQL error message

答題得分者是:Justmade
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-16 02:08:17 IP:61.228.xxx.xxx 未訂閱
PmADOQuery1keypassword.ReadOnly:=False; PmADOQuery1.SQL.Clear; PmADOQuery1.SQL.Add('Update mschkuser'); PmADOQuery1.SQL.Add('set keypassword ="85210"'); PmADOQuery1.SQL.Add('Where keyuser = "00005"'); PmADOQuery1.ExecSQL; PmADOQuery1.Close; PmADOQuery1keypassword.ReadOnly:=True; 再Dbgrid中有3個欄位,1,2在Dbgrid.Readonly:=False,第3Filed Readonly:=True,(不管是True or False)都會出現 invalid column name'85210' 撒魔.懇請前輩指導,謝謝
FrederickPau
資深會員


發表:4
回覆:161
積分:268
註冊:2002-11-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-16 03:10:20 IP:61.228.xxx.xxx 未訂閱
你的問題應該是雙引號吧 (") 改成這樣試試    PmADOQuery1keypassword.ReadOnly:=False; PmADOQuery1.SQL.Clear; PmADOQuery1.SQL.Add('Update mschkuser'); PmADOQuery1.SQL.Add('set keypassword = ''85210'''); PmADOQuery1.SQL.Add('Where keyuser = ''00005'''); PmADOQuery1.ExecSQL; PmADOQuery1.Close; PmADOQuery1keypassword.ReadOnly:=True;
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-16 11:52:16 IP:61.216.xxx.xxx 未訂閱
PmADOQuery1keypassword.ReadOnly:=False; PmADOQuery1.SQL.Clear; PmADOQuery1.SQL.Add('Update mschkuser '); PmADOQuery1.SQL.Add('set keypassword =' #39 '85210' #39); PmADOQuery1.SQL.Add('Where keyuser = ' #39 '00005' #39); PmADOQuery1.ExecSQL; PmADOQuery1.Close; PmADOQuery1keypassword.ReadOnly:=True; TRY TRY SEE
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-16 11:55:42 IP:61.228.xxx.xxx 未訂閱
引言: 你的問題應該是雙引號吧 (") 改成這樣試試 PmADOQuery1.SQL.Clear; PmForm2.PmADOQuery1.SQL.Add('Update mschkuser'); PmForm2.PmADOQuery1.SQL.Add('Set keypassword=' PmcEdit1.Text ' Where keyuser = ' Se); PmcEdit1是edit.text值, Se:= PmADOQuery1keyuser.AsVariant; 或寫 PmForm2.PmADOQuery1.SQL.Add('Set keypassword = ' PmcEdit1.Text); PmForm2.PmADOQuery1.SQL.Add('Where keyuser = ' PmForm2.PmADOQuery1keyuser.AsVariant); 多會出現could not convert of type(null) into type (String) (error message) keyuser,keypassword都是char(ms-sql2000 *.dbo) 看網站搜詢相關資料,還是霧薩薩 Query Analyzer "update mschkuser set keypassword='1234' where keyuser='00007' 就可以,在delphi真稿鈣,求救大師,謝謝 PmADOQuery1.ExecSQL;
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-16 12:17:07 IP:61.228.xxx.xxx 未訂閱
引言: PmADOQuery1keypassword.ReadOnly:=False; PmADOQuery1.SQL.Clear; PmADOQuery1.SQL.Add('Update mschkuser '); PmADOQuery1.SQL.Add('set keypassword =' #39 '85210' #39); PmADOQuery1.SQL.Add('Where keyuser = ' #39 '00005' #39); PmADOQuery1.ExecSQL; PmADOQuery1.Close; PmADOQuery1keypassword.ReadOnly:=True; TRY TRY SEE 謝謝大師指點 '85210','00005'或用變數都可以 但是Dbgrid 變成無連結,畫面只留Dbgrid標題,資料也不見, DBNavigator也變成灰色,一定要按視窗的x離開,不知為何?
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-16 14:16:03 IP:61.217.xxx.xxx 未訂閱
PmADOQuery1keypassword.ReadOnly:=False; PmADOQuery1.SQL.Clear; PmADOQuery1.SQL.Add('Update mschkuser '); PmADOQuery1.SQL.Add('set keypassword =' #39 '85210' #39); PmADOQuery1.SQL.Add('Where keyuser = ' #39 '00005' #39); PmADOQuery1.ExecSQL; PmADOQuery1.Close; PmADOQuery1.Open;//加上這行看看 PmADOQuery1keypassword.ReadOnly:=True; TRY TRY SEE
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-03-16 14:43:03 IP:218.16.xxx.xxx 未訂閱
引言: 但是Dbgrid 變成無連結,畫面只留Dbgrid標題,資料也不見, DBNavigator也變成灰色,一定要按視窗的x離開,不知為何?
你執行的是 Update statment 耶,是將 keyuser = '00005' 這個記錄 的 keypassword 欄位更新成 '85210'。 你之後沒有重新選取記錄,PMADOQuery1 是空而且是關閉的,當然沒資料沒連結啦。 你可以在 PmADOQuery1.Close 後,加上 PmADOQuery1.SQL.Text := 'select * from mschkuser'; (或原本的SQL) PmADOQuery1.Active := true; DBGrid 便應會有資料了。 更好的做法是,別用 PmADOQuery1 而另開一個 Query 來做 Update SQL,這樣就不會影響你的 PmADOQuery1 和相對的 DBGrid 了。
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-03-16 17:24:53 IP:61.228.xxx.xxx 未訂閱
引言: 你可以在 PmADOQuery1.Close 後,加上 PmADOQuery1.SQL.Text := 'select * from mschkuser'; (或原本的SQL) PmADOQuery1.Active := true; 可以了,謝謝 可以請教一點,更新單一筆資料,用SQL語法 update table set ...... 或使用edit,來得好
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-03-16 18:14:19 IP:218.16.xxx.xxx 未訂閱
引言: 更新單一筆資料,用SQL語法 update table set ...... 或使用edit,來得好
若你的 Query 是可修改的 (RequestLive = true),對單一筆資料的修改,用edit 應比較簡單罷。其實,即使你用edit,Delphi 還是自動的幫你變成 update table set... 來更新的。 雖說讓 Delphi 自動轉換好像多了一重轉接,但若你自己用update,之後又要select豈不是更轉接用更多資源?即使你使用我提議的另一個 Query,也是用多了一個 Query 的資源。 不過很多時 Query 的結果是不能直接Edit的 (例如 select form 數個 Table),所以還是常常需要用到 update table 的。
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-03-16 18:46:10 IP:61.228.xxx.xxx 未訂閱
引言: [quote] 非常感謝指導,讓我對delphi更一部瞭解,謝謝大師
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-03-16 19:01:02 IP:61.228.xxx.xxx 未訂閱
引言: 使用Query 好像我無法使用.因為我無再BDE建 DataBaseName Alias 我直接ADOQuery1 -> ConnectionString 連結 Database 我的test程式使用ADOQuery,DBgrid,Datasource,DBnavigator 4個元件 不知大師建議Query ,是否該拿掉ADOquery後,使用Query 多謝指導
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-03-16 19:52:46 IP:218.16.xxx.xxx 未訂閱
我所說的 Query 是泛指任何 Query 組件,不是單指 TQuery TQuery 也好 TADOQuery 也好 dbExpress 的 TSQLQuery 也好,甚或 TClientDataSet 也好,總之你能使用之來執行 SQL 的就好了。 若你的數據庫是慣用 TADOQuery 的,那便放心用 ADOQuery 罷。 至於建議你用另一個 Query 來做 Update ,即是除了你原本的 PmADOQuery1 外,開多一個 PmADOQuery2,用相同的 ConnetionString 連上數據庫,專作 Update 之用。 另外別叫大師啦,在這裡只是大家分享,剛好這個題目我會一點才答,別的還可能要向你請教呢,別害我給真正的高手見笑喲。
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-03-17 00:55:28 IP:61.228.xxx.xxx 未訂閱
引言: 人間有情,謝謝
系統時間:2024-05-13 16:30:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!