有關Mysql中key的運用 |
尚未結案
|
miga
初階會員 發表:61 回覆:92 積分:30 註冊:2002-08-27 發送簡訊給我 |
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: 我程式裡面,有一個table,裡面只有四個欄位, 而這四個欄位是一個key 當我要進行修改時, 原是用locate,但locate好像只能用在一個欄位, 請告訴我是否還有其它的指令可用?locate可以比對多欄位,語法如下: Table1.Locate('FieldName1;FieldName2;FieldName3;FieldName4', VarArrayOf(['FieldValue1', 'FieldValue2', 'FieldValue3','FieldValue4']), [loPartialKey]); 引言: 另外,我想到的一點,就是當我比對到這筆資料時,就進行修改, 由於四個欄位是一個key, 當我修改完要存入table時,因為主key的值變了, 所以會存到別筆資料去, 請問我該如何克服?進行修改,若主key的值變了,若其主key存在時,應該無法存入,因為主Key會重複,所以應該不會存到別筆資料去吧! ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~ |
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
引言: 另外,我想到的一點,就是當我比對到這筆資料時,就進行修改, 由於四個欄位是一個key, 當我修改完要存入table時,因為主key的值變了, 所以會存到別筆資料去, 請問我該如何克服?locate 部分如 channel 兄的作法一般.. 另外存檔的部分, 要看你使用的方法了, 但應該都不會出錯才是. 可能是因為除了你選出來的四個欄位都是 PRIMARY KEY 以外, 尚有其 他的欄位也是 PRIMARY KEY 吧. 這樣的話, 建議你將所有的 PRIMARY KEY 都 SELECT 出來, 只是將其他不要顯示的欄位設定為不顯示在 DBGrid 上即可, 如此一來, 在異動資料時, 會依照你的原始主鍵值為 條件來進行異動, 就不會發生問題了! |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
只稍作補充 :
不用擔心 修改 update 的問題, Delphi 會用一個很安全的方法來為你update table 的。
比方說,你的 table test 有 A, B, C, D 欄,原本的資料是 1,2,3,4 現改為 5,6,7,8
Delphi 自建的 SQL 為
update test ('A','B','C','D') VALUES (5,6,7,8) where 'A' = 1 and 'B' = 2 and 'C' = 3 and 'D' = 4; 所以,不會寫到別筆資料啦放心。
|
miga
初階會員 發表:61 回覆:92 積分:30 註冊:2002-08-27 發送簡訊給我 |
引言: 只稍作補充 : 不用擔心 修改 update 的問題, Delphi 會用一個很安全的方法來為你update table 的。 比方說,你的 table test 有 A, B, C, D 欄,原本的資料是 1,2,3,4 現改為 5,6,7,8 Delphi 自建的 SQL 為 update test ('A','B','C','D') VALUES (5,6,7,8) where 'A' = 1 and 'B' = 2 and 'C' = 3 and 'D' = 4; 所以,不會寫到別筆資料啦放心。 嗯…那我想再請問一下, 因為我是用dbgrid,當dbgrid點到某筆資料, 就將資料show在另一個視窗進行修改 假設現在table1中crs_id和dep_id 那麼我該如何來寫呢… 我不曉得如何把dbgrid點到的那筆資料,運用在sql上… 謝啦…^_^< >< >< >< >< >< > |
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
showmessage(table1.FieldByName('crs_id').Value);
showmessage(table1.FieldByName(dep_id).Value);
//這樣你就可以取得crs_id和dep_id的值在下sql語法了
end;
TRY TRY SEE < >< >< >< >< >< >
引言: [嗯…那我想再請問一下, 因為我是用dbgrid,當dbgrid點到某筆資料, 就將資料show在另一個視窗進行修改 假設現在table1中crs_id和dep_id 那麼我該如何來寫呢… 我不曉得如何把dbgrid點到的那筆資料,運用在sql上… 謝啦…^_^ |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
引言: 因為我是用dbgrid,當dbgrid點到某筆資料, 就將資料show在另一個視窗進行修改 假設現在table1中crs_id和dep_id 那麼我該如何來寫呢… 我不曉得如何把dbgrid點到的那筆資料,運用在sql上… 謝啦…^_^不大明白耶,是同一個 Table 或是另一個 Table 啊? 若是同一個 Table 直接修改,方法如下 1. 加入兩個 TDBEdit 2. DataSources 選同 DBGrid 一樣的 DataSources 3. DataField 一個選 crs_id, 一個選 dep_id 若是同一個 Table 給另一個 Table 的對應值修改(如列出所有 dep_name 給使用者選,選好後自動將 dep_id 存入 Table1),可使用 DBLookUpComboBox, 可參看 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=27333 若是想要顯示另外的 Table 給 使用者修改那另外的 Table ,可參考 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=27172 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |