sql在update時出現的錯誤 |
答題得分者是:李國維
|
FCI
一般會員 發表:5 回覆:11 積分:3 註冊:2005-10-13 發送簡訊給我 |
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 發送簡訊給我 |
|
FCI
一般會員 發表:5 回覆:11 積分:3 註冊:2005-10-13 發送簡訊給我 |
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 發送簡訊給我 |
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 發送簡訊給我 |
|
FCI
一般會員 發表:5 回覆:11 積分:3 註冊:2005-10-13 發送簡訊給我 |
再請問各位前輩,我用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
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |