全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1480
推到 Plurk!
推到 Facebook!

要如何避免,新增時不發生資料重覆的情形

答題得分者是:P.D.
CoolJeff
一般會員


發表:12
回覆:5
積分:3
註冊:2002-11-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-11-04 23:23:16 IP:61.59.xxx.xxx 未訂閱
新增的程式碼如下: 請各位大大幫個忙吧,謝謝 procedure TfrmBaseTicket.btnSaveClick(Sender: TObject); begin tblTicket.Post; ChangeButtonMode; DBEdit1.Enabled:=true; Panel1.SetFocus; end;
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-11-05 00:24:53 IP:61.66.xxx.xxx 未訂閱
引言: 新增的程式碼如下: 請各位大大幫個忙吧,謝謝 procedure TfrmBaseTicket.btnSaveClick(Sender: TObject); begin tblTicket.Post; ChangeButtonMode; DBEdit1.Enabled:=true; Panel1.SetFocus; end; 這一段應該不是新增吧? 而是存入, 可否post實際新增段!
CoolJeff
一般會員


發表:12
回覆:5
積分:3
註冊:2002-11-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-11-05 00:47:45 IP:61.59.xxx.xxx 未訂閱
對不起 我應該說是在存入資料之前 要先做要新增的資料是不是 在資料庫內己有, 若是己經有相同的資料 我們就要告訴USER不能存入 他打的資料,是不是?
Jasonwong
版主


發表:49
回覆:931
積分:581
註冊:2006-10-27

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-11-05 01:00:58 IP:61.70.xxx.xxx 未訂閱
要存入之前你就先去下SQL尋找就可以了 可以在BeforePost事件下SQL -- 聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心 傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
------
聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心
傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
T.J.B
版主


發表:29
回覆:532
積分:497
註冊:2002-08-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-11-05 09:27:44 IP:61.220.xxx.xxx 未訂閱
基本上 你的table 如果有設key 值 不管是新增或存檔 只要有兩筆key值相同資料的話 資料庫就會當作同一筆資料把你檔掉 如果key值不一樣但其它欄位 都一樣的話 仍視為不同筆資料(如果你也是這樣定義的) 所以你的做法可以在存檔Button裡去檢查key值是否有重複即可 用Query2.locate跑迴圈去搜尋query1的key值 相同擋掉 不同存檔 ps:Query1,Query2的table都是一樣的 天行健 君子當自強不息~~@.@
------
天行健
君子當自強不息~~@.@
CoolJeff
一般會員


發表:12
回覆:5
積分:3
註冊:2002-11-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-11-06 22:32:54 IP:61.59.xxx.xxx 未訂閱
引言: 要存入之前你就先去下SQL尋找就可以了 可以在BeforePost事件下SQL
不太能了解你要表達的做法 可以說詳細些嗎?
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-11-06 22:47:02 IP:61.66.xxx.xxx 未訂閱
引言: 對不起 我應該說是在存入資料之前 要先做要新增的資料是不是 在資料庫內己有, 若是己經有相同的資料 我們就要告訴USER不能存入 他打的資料,是不是?
不知道你用的資料庫是何種, 假設你使用db或dbf, 我的做法是 你一定有一個以上key值做判斷, 假設你的key值欄位與 dbedit1 連結, 我在 dbedit1.onexit上這樣寫(keyfieldname 為你的欄位名稱)
if table1.states <> dsinsert then exit;
if table1.locate('keyfieldname',dbedit1.text)=true then begin       
   showmessage('key值有重覆');
   dbedit1.setfocus;
end;
當然你如果用sql 則參照sql語法來取代 locate 這段
系統時間:2024-05-19 1:32:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!