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

DBGRID如何有修改的功能而無法新增RECORD?

尚未結案
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-22 15:41:38 IP:202.145.xxx.xxx 未訂閱
因權限設定問題DBGRID如何設定只擁有修改的功能而無法新增; 主要問題是按上下鍵時就會新增; 小弟用的方法是在BEFORESCROLL中設ADOQUERY1.CANCEL; 不過總是覺得不完善,不知還有其他方法嗎? 堅持從洗馬桶做起 Eric
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-22 15:59:11 IP:61.70.xxx.xxx 未訂閱
您好: 提供我自己的方式,不過好像如出一輒@@, 小弟是直接在AdoQuery中的OnAfterInser中直接下Query.Canel(),這樣感覺起來就好像無法新增的感覺,參考看看.
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-22 16:11:10 IP:202.62.xxx.xxx 未訂閱
您好﹗    在DataSet的BeforeInsert事件中先做權限的判斷﹐如果無此權限的就Abort掉﹒    ========================= 我是您的朋友﹐有您真好﹗ =========================
------
忻晟
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-11-22 17:33:09 IP:61.222.xxx.xxx 未訂閱
若為ADOQuery 倒是可以...
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if (Key=40) and (ADOQuery1.RecNo>=ADOQuery1.RecordCount) then Key:=0;
end;
發表人 - wameng 於 2004/11/22 17:40:59
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-11-22 23:38:11 IP:218.172.xxx.xxx 未訂閱
引言: 若為ADOQuery 倒是可以...
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if (Key=40) and (ADOQuery1.RecNo>=ADOQuery1.RecordCount) then Key:=0;
end;
請教key=40這數字該如何查詢,也不是ascii碼 我只知道vk_insert,不清楚數字如何而來 key=40或key=vk_insert似乎是鍵盤上的insert而不是資料集中的adoquery1.insert 堅持從洗馬桶做起 Eric 發表人 - huangeider 於 2004/11/22 23:39:32 發表人 - huangeider 於 2004/11/22 23:54:43
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-11-22 23:49:16 IP:61.222.xxx.xxx 未訂閱
在 Windows 有定義      VK_LEFT = 37;   {$EXTERNALSYM VK_UP}   VK_UP = 38;   {$EXTERNALSYM VK_RIGHT}   VK_RIGHT = 39;   {$EXTERNALSYM VK_DOWN}  VK_DOWN = 40; {$EXTERNALSYM VK_SELECT} VK_SELECT = 41; {$EXTERNALSYM VK_PRINT} VK_PRINT = 42; {$EXTERNALSYM VK_EXECUTE} VK_EXECUTE = 43; 故也可以 if (Key=VK_DOWN) and (ADOQuery1.RecNo>=ADOQuery1
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-11-23 00:09:33 IP:218.172.xxx.xxx 未訂閱
引言: 在 Windows 有定義 VK_LEFT = 37; {$EXTERNALSYM VK_UP} VK_UP = 38; {$EXTERNALSYM VK_RIGHT} VK_RIGHT = 39; {$EXTERNALSYM VK_DOWN} VK_DOWN = 40; {$EXTERNALSYM VK_SELECT} VK_SELECT = 41; {$EXTERNALSYM VK_PRINT} VK_PRINT = 42; {$EXTERNALSYM VK_EXECUTE} VK_EXECUTE = 43; 故也可以 if (Key=VK_DOWN) and (ADOQuery1.RecNo>=ADOQuery1
非常感謝 不過
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if (Key=40) and (ADOQuery1.RecNo>=ADOQuery1.RecordCount) then Key:=0;
end;
這方法未見效,依然可以新增 堅持從洗馬桶做起 Eric
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-11-23 00:28:51 IP:61.222.xxx.xxx 未訂閱
Sorry !我試的是  可以的! 可能: 1. 非 TADOQuery 2. DGRID.Datasource.Dataset非ADOQuery1
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-11-23 08:53:14 IP:202.145.xxx.xxx 未訂閱
引言: Sorry !我試的是 可以的! 可能: 1. 非 TADOQuery 2. DGRID.Datasource.Dataset非ADOQuery1
果然是元件的關係,小弟用tadodataset試發現adodataset.recno都顯示-1值 感謝各位的幫忙 堅持從洗馬桶做起 Eric
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-11-23 08:57:29 IP:202.62.xxx.xxx 未訂閱
您好﹗    您可通過以下的方法在Form的OnKeyDown & OnKeyUp事件中ASCII鍵和非ASCII鍵 的10進位代號﹕
begin
  Label1.Caption := IntToStr(Key);
end;
========================= 我是您的朋友﹐有您真好﹗ ========================= 發表人 - cashxin2002 於 2004/11/23 09:07:37
------
忻晟
系統時間:2024-11-22 22:31:39
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!