請問在感知元件中DBGrid和TDNavigator作配合時,新增如要做一些處理。 |
尚未結案
|
t0288542
中階會員 發表:216 回覆:254 積分:94 註冊:2004-10-06 發送簡訊給我 |
|
supman
尊榮會員 發表:29 回覆:770 積分:924 註冊:2002-04-22 發送簡訊給我 |
|
t0288542
中階會員 發表:216 回覆:254 積分:94 註冊:2004-10-06 發送簡訊給我 |
Hi supman: 不好意思,如果當使用者只是先新增按鈕,
連編號都還沒有輸入時,是無法去判斷是否有無存在此筆資料。
所以我是在post中去判斷。
以下是我的程式的處理,麻煩您幫我看如何去不作處理。
謝謝您。 procedure TForm1.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
var
dbnav:TDBNavigator;
NavBtn:TNavButton;
begin
if Sender is TDBNavigator then
begin
dbnav := Sender as TDBNavigator; {狀態為儲存}
if Button=nbPost then
begin
ADOQuery4.Close;
ADOQuery4.SQL.Clear;
ADOQuery4.SQL.Add('SELECT MB001 FROM INVMB ');
ADOQuery4.SQL.Add('WHERE (MB005='01' OR MB005='06') AND ');
ADOQuery4.SQL.Add('MB001=''' TRIM(DBEdit1.Text) ''' ');
ADOQuery4.Open;
if ADOQuery4.RecordCount > 1
begin
// 改變按鈕狀況
EditModeSpeedBtn(true);
EditModeDBEdit(true);
EditModeNavigBtn(dbnav,true);
end
else
//如何不作儲存的動作 end; {狀態為取消}
if Button=nbCancel then
begin
EditModeSpeedBtn(true);
EditModeDBEdit(true);
EditModeNavigBtn(dbnav,true);
end; end;
end;
|
supman
尊榮會員 發表:29 回覆:770 積分:924 註冊:2002-04-22 發送簡訊給我 |
您好:
剛剛去幫您測試了一下
else
//如何不作儲存的動作
AdoQuery.Cancel();//照理說這裡放Cancel就可以了
end;
但我測試發現不行,所以就在AdoQuery的BeforePost,AfterPost及Navigator的Click上個秀了一個訊息,發現他的訊息順序是BeforePost,AfterPost,最後才是
Navigator的Click,所以當User按下了Post,Navigator早已對資料庫下了儲存的指令,因此您要取消他可能沒辦法再Navigator的Click上做,要將程式移到BeforePost,或者自己做一組像Navigator按鈕的功能.
http://delphi.ktop.com.tw/topic.php?topic_id=31400
以上提供您參考. 發表人 - supman 於 2005/04/28 16:12:37
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
插个花:
t0288542您好
判断所新增的MB001字段值是否与DBEdit1.Text 相同,相同则执行post, 不同则中断,再一次进行输入。 procedure TForm1.Query1BeforePost(DataSet: TDataSet); begin if DataSet.FieldByName('MB001').AsString<>DBEdit1.Text then begin showmessage('数据不符!请重新输入'); abort; end; end;不知是不是您所要的,试试看 <> ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================ > |
t0288542
中階會員 發表:216 回覆:254 積分:94 註冊:2004-10-06 發送簡訊給我 |
謝謝大家,
後來我的方式是利用點選新增按鈕,
DBEdit來作控制是否另一表格是否有存在這筆記錄,
但是我想在一個動作是當無對此筆資料時,
將post按鈕給[Enable],不知如何去指定呢.
謝謝。
procedure TForm1.DBEdit1Exit(Sender: TObject);
begin
ADOQuery4.Close;
ADOQuery4.SQL.Clear;
ADOQuery4.SQL.Add('SELECT MB001 FROM INVMB ');
ADOQuery4.SQL.Add('WHERE (MB005=''01'' OR MB005=''06'') AND ');
ADOQuery4.SQL.Add('MB001=''' TRIM(DBEdit1.Text) ''' ');
ADOQuery4.Open;
if ADOQuery4.RecordCount = 0 then
begin
MessageDlg('注意,查無此筆品名: ' TRIM(DBEdit1.Text) ' ,資料不作儲存動作,請按[取消]按鈕!!' , mtWarning, [mbOk], 0);
end;
end;
|
t0288542
中階會員 發表:216 回覆:254 積分:94 註冊:2004-10-06 發送簡訊給我 |
謝謝大家,
後來我的方式是利用點選新增按鈕,
DBEdit來作控制是否另一表格是否有存在這筆記錄,
但是我想在一個動作是當無對此筆資料時,
將post按鈕給[Enable],不知如何去指定呢.
謝謝。
procedure TForm1.DBEdit1Exit(Sender: TObject);
begin
ADOQuery4.Close;
ADOQuery4.SQL.Clear;
ADOQuery4.SQL.Add('SELECT MB001 FROM INVMB ');
ADOQuery4.SQL.Add('WHERE (MB005=''01'' OR MB005=''06'') AND ');
ADOQuery4.SQL.Add('MB001=''' TRIM(DBEdit1.Text) ''' ');
ADOQuery4.Open;
if ADOQuery4.RecordCount = 0 then
begin
MessageDlg('注意,查無此筆品名: ' TRIM(DBEdit1.Text) ' ,資料不作儲存動作,請按[取消]按鈕!!' , mtWarning, [mbOk], 0);
end;
end;
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
引言: 謝謝大家, 後來我的方式是利用點選新增按鈕, DBEdit來作控制是否另一表格是否有存在這筆記錄, 但是我想在一個動作是當無對此筆資料時, 將post按鈕給[Enable],不知如何去指定呢. 謝謝。============================ 为什么经过多年以后,得失的过程如此冷漠 ============================type //继承一下 TMyDBNavigator=class(TDBNavigator) end; procedure TForm1.DBEdit1Exit(Sender: TObject); begin ADOQuery4.Close; ADOQuery4.SQL.Clear; ADOQuery4.SQL.Add('SELECT MB001 FROM INVMB '); ADOQuery4.SQL.Add('WHERE (MB005=''01'' OR MB005=''06'') AND '); ADOQuery4.SQL.Add('MB001=''' TRIM(DBEdit1.Text) ''' '); ADOQuery4.Open; if ADOQuery4.RecordCount = 0 then begin MessageDlg('注意,查無此筆品名: ' TRIM(DBEdit1.Text) ' ,資料不作儲存動作,請按[取消]按鈕!!' , mtWarning, [mbOk], 0); TMyDBNavigator(DBNavigator1).Buttons[nbPost].Enabled:=false; end; end;您好,查看DBCtrls.pas type TDBNavigator = class (TCustomPanel) ... protected Buttons: array[TNavigateBtn] of TNavButton; …… end; 通过Buttons即可访问所有按纽,但因为Buttons定义在protected部分, 因此无法直接访问,所以应自己继承个来使用,如上 |
t0288542
中階會員 發表:216 回覆:254 積分:94 註冊:2004-10-06 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |