如何在cxGrid中檢查新輸入的值是否重覆? |
缺席
|
daniel710624
一般會員 發表:11 回覆:13 積分:4 註冊:2003-04-11 發送簡訊給我 |
|
riceball
一般會員 發表:0 回覆:2 積分:0 註冊:2002-10-28 發送簡訊給我 |
|
daniel710624
一般會員 發表:11 回覆:13 積分:4 註冊:2003-04-11 發送簡訊給我 |
您好!
感謝您的解答! 我已將更詳細的內容發表在以下網址: http://delphi.ktop.com.tw/board.php?cid=31&fid=130&tid=85383 如果在cxGrid字段的 OnValidate 實作, 該如何將輸入的資料與每一筆比對? 謝教cxGrid有類似TQuery.Lookup的Method嗎? 再次感謝您的協助! |
riceball
一般會員 發表:0 回覆:2 積分:0 註冊:2002-10-28 發送簡訊給我 |
巨汗!這個實現的方法太多了,比如用一個臨時query進行判斷:
procedure tvTrademarkEditValidate(Sender: TObject; var DisplayValue: TcxEditValue; var ErrorText: TCaption; var Error: Boolean); var vIsDuplicated: Boolean; begin qryTemp.SQL.Text := 'select id from Cars where Trademark=' DisplayValue; qryTemp.Open; vIsDuplicated := not qryTemp.EoF; qryTemp.Close; if vIsDuplicated then begin Error := True; end; end; |
daniel710624
一般會員 發表:11 回覆:13 積分:4 註冊:2003-04-11 發送簡訊給我 |
|
daniel710624
一般會員 發表:11 回覆:13 積分:4 註冊:2003-04-11 發送簡訊給我 |
我研究出一個方法, 可在cxDBGrid中判斷輸入的資料是否重覆. 雖然這個方法很土,但至少目前解決了我的問題.
不知是否有更好的方法?請各位前輩賜教! [code delphi] //檢查Key值欄位在新增資料時,是否重覆 //參數: // iKeyCol: word -> Key值欄位在Grid中的Index // aMyField: TField -> 要進行檢查的欄位 procedure TFormBxGridEntry1.CheckKeyDup(iKeyCol: word; aMyField: TField); var i, x: Integer; begin x := cxGridMasterView1.DataController.FocusedRowIndex; //記錄目前正在新增的資料是Grid中的第幾筆 for i := 0 to cxGridMasterView1.ViewData.RowCount - 1 do //利用迴圈處理Grid中每一筆資料 begin if cxGridMasterView1.ViewData.Rows[i].Index = x then Continue; //迴避正在新增的資料,不作比對 //將aMyField與Key值欄位比對 if Trim(cxGridMasterView1.ViewData.Rows[i].Values[iKeyCol]) = Trim(aMyField.AsString) then begin RepeatWarning(aMyField.DisplayLabel); //資料重覆的警告 cxGridMasterView1.Controller.FocusedItemIndex := iKeyCol; //將Grid Cursor指回正在新增的那一筆資料 Abort; end; end; end; [/code] |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |