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

請教關於mysql中主key的修改問題

尚未結案
miga
初階會員


發表:61
回覆:92
積分:30
註冊:2002-08-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-08 00:24:02 IP:211.74.xxx.xxx 未訂閱
想請問一下,因為我的COURSE_TEA中有兩個欄位(CRS_ID,TEA_ID),而這兩個欄位是一個key. 因為我用locate來寫修改時,由於key變動了,造成存入時會存錯筆資料, 所以我想用sql來寫,似乎可以解決這個問題    我是使用dbgrid,當點選dbgrid該筆欲修改的資料時,按下修改, 則show出另一個form,並將該筆資料原有的值抓出來, 修改完後,存入資料庫。    我的寫法如下 query1.Close; query1.sql.Clear; query1.sql.add('update COURSE_TEA set CRS_ID='+#39+Query4.FieldByName('CRS_ID').Value+#39+', TEA_ID='+#39+Query4.FieldByName('TEA_ID').Value+#39); query1.SQL.Add('where "CRS_ID" = '+#39+edit_crsmodify_crsid.Text+#39+' and "TEA_ID" = '+#39+Edit_CRSmodify_teaid.Text+#39); query1.prepare; query1.open;    他會出現錯誤訊息"error creating cursor handle" 這是什麼問題呢??
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-08 07:46:30 IP:202.39.xxx.xxx 未訂閱
Query1.Open; 這行改成 Query1.ExecSQL; --- 每個人都是一本書
miga
初階會員


發表:61
回覆:92
積分:30
註冊:2002-08-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-08 22:19:57 IP:211.74.xxx.xxx 未訂閱
現在可以執行了… 不過…資料卻不會更改哎< > 語法應該也沒錯… 嗚…怎麼會這樣呢< >
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-08 23:17:36 IP:61.221.xxx.xxx 未訂閱
引言: 現在可以執行了… 不過…資料卻不會更改哎 語法應該也沒錯… < face="Verdana, Arial, Helvetica"> 請先確認該 sql command 是否正確. 可以利用 showmessage(query1.sql.text); 來顯示在螢幕上, 或是可以利用 query1.sql.savetofile('c:\sql.txt'); 來將該 command 存為檔案, 再來 開啟觀察. 相信很快可以找出原因的!
cmj
高階會員


發表:15
回覆:242
積分:226
註冊:2002-06-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-04-08 23:45:55 IP:211.76.xxx.xxx 未訂閱
引言: 想請問一下,因為我的COURSE_TEA中有兩個欄位(CRS_ID,TEA_ID),而這兩個欄位是一個key. 因為我用locate來寫修改時,由於key變動了,造成存入時會存錯筆資料, 所以我想用sql來寫,似乎可以解決這個問題 我是使用dbgrid,當點選dbgrid該筆欲修改的資料時,按下修改, 則show出另一個form,並將該筆資料原有的值抓出來, 修改完後,存入資料庫。 我的寫法如下 query1.Close; query1.sql.Clear; query1.sql.add('update COURSE_TEA set CRS_ID=' #39 Query4.FieldByName('CRS_ID').Value #39 ', TEA_ID=' #39 Query4.FieldByName('TEA_ID').Value #39); query1.SQL.Add('where "CRS_ID" = ' #39 edit_crsmodify_crsid.Text #39 ' and "TEA_ID" = ' #39 Edit_CRSmodify_teaid.Text #39); query1.prepare; query1.open; 他會出現錯誤訊息"error creating cursor handle" 這是什麼問題呢?? < face="Verdana, Arial, Helvetica"> 建議藍色部份改為下列程式,儘量利用參數傳遞 query1.sql.add('update COURSE_TEA set CRS_ID=:CRS_ID_NEW,TEA_ID=:TEA_ID_NEW'); query1.SQL.Add('where CRS_ID=:CRS_ID_OLD AND TEA_ID=:TEA_ID_OLD'); query1.ParamByName('CRS_ID_NEW').Value:=Query4.FieldByName('CRS_ID').Value; query1.ParamByName('TEA_ID_NEW').Value:=Query4.FieldByName('TEA_ID').Value; query1.ParamByName('CRS_ID_OLD').Value:=edit_crsmodify_crsid.Text; query1.ParamByName('TEA_ID_OLD').Value:=Edit_CRSmodify_teaid.Text;
miga
初階會員


發表:61
回覆:92
積分:30
註冊:2002-08-27

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