SQL error message |
答題得分者是:Justmade
|
nick167
中階會員 發表:86 回覆:133 積分:53 註冊:2003-02-12 發送簡訊給我 |
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 發送簡訊給我 |
你的問題應該是雙引號吧 (")
改成這樣試試 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 發送簡訊給我 |
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 發送簡訊給我 |
引言: 你的問題應該是雙引號吧 (") 改成這樣試試 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 發送簡訊給我 |
引言: 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 發送簡訊給我 |
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 發送簡訊給我 |
引言: 但是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 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
引言: 更新單一筆資料,用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 發送簡訊給我 |
|
nick167
中階會員 發表:86 回覆:133 積分:53 註冊:2003-02-12 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
我所說的 Query 是泛指任何 Query 組件,不是單指 TQuery
TQuery 也好 TADOQuery 也好 dbExpress 的 TSQLQuery 也好,甚或 TClientDataSet 也好,總之你能使用之來執行 SQL 的就好了。 若你的數據庫是慣用 TADOQuery 的,那便放心用 ADOQuery 罷。 至於建議你用另一個 Query 來做 Update ,即是除了你原本的 PmADOQuery1 外,開多一個 PmADOQuery2,用相同的 ConnetionString 連上數據庫,專作 Update 之用。 另外別叫大師啦,在這裡只是大家分享,剛好這個題目我會一點才答,別的還可能要向你請教呢,別害我給真正的高手見笑喲。
|
nick167
中階會員 發表:86 回覆:133 積分:53 註冊:2003-02-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |