如何用SQL語法將欄位a的資料轉入欄位b |
答題得分者是:st33chen
|
LPH
一般會員 ![]() ![]() 發表:53 回覆:43 積分:19 註冊:2003-04-02 發送簡訊給我 |
|
GrandRURU
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
做完Update之後請重新select將資料載進來
再做讀取即可 ===================引 用 LPH 文 章=================== 資料庫有 Field1,Field2 將Field1的資料轉入Field2 With Qly1 Do Begin close; SQL.Clear; SQL.Add('update Regi'); SQL.Add('Set Regi_firld1=:ORegipay'); ParamByName('ORegipay').AsString := FieldByName('field2').AsString; ExecSql; End; 會出現Field2 not Found |
P.D.
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
update Regi Set Regi_firld1=:ORegipay
這是你的原文 有幾點以下的問題 1.Qly1 的 sql 語法為此段, 是 update 旳語法 FieldByName('field2').AsString, 這段你未指名出處(前面用with Qly1), 所以系統自然視為來源於 Qly1.FieldByName('field2').AsString, 看出問題了嗎? Qly1 何處有 field2 的宣告 2.update的語法也有瑕疵, 你未加 where 來篩選記錄, 這樣一執行下去, 所有Qly1中 field1 欄位全部被更新為指定的內容, 我想這應該不是你所樂意見到的吧! 3.你的語法並不是很複雜, 很長, 何必使用多次 add 加入, 這是會引影響效能的, 每加入一次, sql 就要重新解譯一次, 把上面的語法一次add進來就好了 ===================引 用 LPH 文 章=================== 資料庫有 Field1,Field2 將Field1的資料轉入Field2 With Qly1 Do Begin close; SQL.Clear; SQL.Add('update Regi'); SQL.Add('Set Regi_firld1=:ORegipay'); ParamByName('ORegipay').AsString := FieldByName('field2').AsString; ExecSql; End; 會出現Field2 not Found
編輯記錄
P.D. 重新編輯於 2009-04-20 15:23:19, 註解 無‧
|
LPH
一般會員 ![]() ![]() 發表:53 回覆:43 積分:19 註冊:2003-04-02 發送簡訊給我 |
===================引 用 P.D. 文 章=================== update Regi Set Regi_firld1=:ORegipay 這是你的原文 有幾點以下的問題 1.Qly1 的 sql 語法為此段, 是 update 旳語法 FieldByName('field2').AsString, 這段你未指名出處(前面用with Qly1), 所以系統自然視為來源於 Qly1.FieldByName('field2').AsString, 看出問題了嗎? Qly1 何處有 field2 的宣告 2.update的語法也有瑕疵, 你未加 where 來篩選記錄, 這樣一執行下去, 所有Qly1中 field1 欄位全部被更新為指定的內容, 我想這應該不是你所樂意見到的吧! 3.你的語法並不是很複雜, 很長, 何必使用多次 add 加入, 這是會引影響效能的, 每加入一次, sql 就要重新解譯一次, 把上面的語法一次add進來就好了 ===================引 用 LPH 文 章=================== 資料庫有 Field1,Field2 將Field1的資料轉入Field2 With Qly1 Do Begin close; SQL.Clear; SQL.Add('update Regi'); SQL.Add('Set Regi_firld1=:ORegipay'); ParamByName('ORegipay').AsString := FieldByName('field2').AsString; ExecSql; End; 會出現Field2 not Found 不加 Where 是因為更改整個資料表. FieldByName('field2').AsString; 不是會去自動引用 Qly1 嗎.... |
st33chen
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
您好,
出現 field2 not found 應該是 qly1 已經 close 掉了, 試一下 astr : string; ... With Qly1 Do Begin astr := FieldByName('field2').AsString; close; SQL.Clear; SQL.Add('update Regi'); SQL.Add('Set Regi_firld1=:ORegipay'); ParamByName('ORegipay').AsString := astr; ExecSql; End; 參考一下 -------------------------------------- 但是, 如果是 資料庫有 Field1,Field2 將Field1的資料轉入Field2 同 table 的話 為何要用參數呢? 直接 SQL.text := 'update Regi set Regi_firld1=ORegipay' 不就好了? 不同 table 的話, 改 ParamByName('ORegipay').AsString := FieldByName('field2').AsString; 成 ParamByName('ORegipay').AsString := 叫用 field2 的 query 名.FieldByName('field2').AsString;
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
LPH
一般會員 ![]() ![]() 發表:53 回覆:43 積分:19 註冊:2003-04-02 發送簡訊給我 |
===================引 用 st33chen 文 章=================== 您好, 出現 field2 not found 應該是 qly1 已經 close 掉了, 試一下 astr : string; ... With Qly1 Do Begin astr := FieldByName('field2').AsString; close; SQL.Clear; SQL.Add('update Regi'); SQL.Add('Set Regi_firld1=:ORegipay'); ParamByName('ORegipay').AsString := astr; ExecSql; End; 參考一下 -------------------------------------- 但是, 如果是 資料庫有 Field1,Field2 將Field1的資料轉入Field2 同 table 的話 為何要用參數呢? 直接 SQL.text := 'update Regi set Regi_firld1=ORegipay' 不就好了? 不同 table 的話, 改 ParamByName('ORegipay').AsString := FieldByName('field2').AsString; 成 ParamByName('ORegipay').AsString := 叫用 field2 的 query 名.FieldByName('field2').AsString; 原來 可以不用參數....感謝 !! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |