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

sql在update時出現的錯誤

答題得分者是:李國維
FCI
一般會員


發表:5
回覆:11
積分:3
註冊:2005-10-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-13 11:41:24 IP:211.75.xxx.xxx 未訂閱
void __fastcall TForm1::Button43Click(TObject *Sender) {         TColor d= PaintBox->Canvas->Brush->Color;         long int i=d;         AnsiString p= ComboBox->Text;         Query3->SQL->Clear();         Query3->SQL->Add("update S1");         Query3->SQL->Add("set SColor ='"+i+"'"); //錯在這一行                                //  invalid poinyer addition         Query3->SQL->Add("WHERE S1.SID='"+ p +"'");         Query3->Prepare();         Query3->ExecSQL(); }    後來我看了某些大大的文章,改為    void __fastcall TForm1::Button43Click(TObject *Sender) {         TColor d= PaintBox->Canvas->Brush->Color;         long int i=d;                 AnsiString p= ComboBox->Text;         AnsiString sql;         sql="Update S1 set SColor ='" + i ;         sql += "' WHERE S1.SID='"+ p +"'";                  Query3->Close();         Query3->SQL->Clear();         Query3->SQL->Add(sql);         Query3->Prepare();         Query3->ExecSQL();    在compile ok, 但在執行時出現 access violation at....in module VCL50.bpl... 請問是那裡出錯 新手上路,請個位前輩幫忙.^^ (麻煩兩個多解釋一下. 謝謝) 發表人 - FCI 於 2005/10/13 11:49:04
李國維
高階會員


發表:42
回覆:287
積分:235
註冊:2003-02-07

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-13 15:28:03 IP:219.84.xxx.xxx 未訂閱
FCI: sql="Update S1 set SColor ='" +IntToStr(i) ; i為整數要跟字串做連結時要轉換成字串
FCI
一般會員


發表:5
回覆:11
積分:3
註冊:2005-10-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-10-13 16:24:40 IP:211.75.xxx.xxx 未訂閱
o...謝謝大大的幫忙.. 在請問, 這個code是那出錯 void __fastcall TForm1::Button43Click(TObject *Sender) { TColor d= PaintBox->Canvas->Brush->Color; long int i=d; AnsiString p= ComboBox->Text; Query3->SQL->Clear(); Query3->SQL->Add("update S1"); Query3->SQL->Add("set SColor ='" i "'"); //錯在這一行 // invalid pointer addition Query3->SQL->Add("WHERE S1.SID='" p "'"); Query3->Prepare(); Query3->ExecSQL(); }
李國維
高階會員


發表:42
回覆:287
積分:235
註冊:2003-02-07

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-10-13 17:34:11 IP:219.84.xxx.xxx 未訂閱
FCI: 型態的錯誤.就如同我之前說的"整數要跟字串做連結時要轉換成字串" 不同的型態下要做運算最好是轉換成同型態. 舉例說
float fData;
int a=10,b=4;
fData = a/b;
fData會是2.5嗎?答案是不會。fData是2.這就是因為你在做除法的時候是兩各int整數.所以除完後還是整數. 正確的寫法為
float fData;
int a=10,b=4;
fData = (float)a/(float)b;
這樣一來fData才會是2.5 PS:因為C的語法比較嚴謹.如果是BASIC就可以了.有關轉型的部份可以在參閱坊間的書籍都有提到
FCI
一般會員


發表:5
回覆:11
積分:3
註冊:2005-10-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-10-14 09:05:37 IP:211.75.xxx.xxx 未訂閱
謝謝大大的幫忙,原來是型態轉換出錯,我了解了,謝謝 **新手上路,煩請多多幫忙**
FCI
一般會員


發表:5
回覆:11
積分:3
註冊:2005-10-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-10-17 15:37:07 IP:211.75.xxx.xxx 未訂閱
再請問各位前輩,我用mysql中的方法寫出下列二個sql,但是     1.==>  compile, run 皆ok,但是data 中無資料       AnsiString p = Label1->Caption;    AnsiString StrSQL = "update S2 set S2.NO = (select S1.NO from S1";    StrSQL += " where S1.Type='"+p+"')";    2.==>   AnsiString StrSQL ="update S1 , S2 set set S2.NO = S1.NO where S1.Type='" p "'"; , <--在這出現error, 是不是, 不支援兩個data 的同時update 3.==> 如果支援兩個data 的同時update, 請問式子要如何寫... 例如 s1,d1 中 sno=dno, 但皆要同時輸入值/..... 煩請大大,幫我解釋一下, 感謝 **新手上路,煩請多多幫忙** 風是移動的, 雲是改變的, 水是不定的, 人是成長的. 發表人 - FCI 於 2005/10/17 18:21:23
系統時間:2024-04-27 2:56:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!