我在dbgrid直接修改數据,如果沒有手動提交,就提示是否保存剛剛修過的記錄。(100分)

  • 主题发起人 主题发起人 漂流的雲
  • 开始时间 开始时间

漂流的雲

Unregistered / Unconfirmed
GUEST, unregistred user!
我在dbgrid直接修改數据,如果沒有手動提交,就提示是否保存剛剛修過的記錄。如果點否就還原,這個要怎麼寫
1:我在OnBeforeScroll中编程对输入的数据进行相关处理,但如果用户对当前行和列某字段修改后不按回车改焦点,直接按“保存”按钮,就會出錯,這個要怎么办--难道对保存按钮事件中动态改焦点吗?
2:還有一問。如果我修改後,焦點移動到同行中別的欄位,就提交,這個能否實現
 
1:我在OnBeforeScroll中编程对输入的数据进行相关处理,但如果用户对当前行和列某字段修改后不按回车改焦点,直接按“保存”按钮,就會出錯,這個要怎么办--难道对保存按钮事件中动态改焦点吗?--保存(Post)之前,先判断数据集的状态(State),只有是dsInsert或者dsEdit。
2:還有一問。如果我修改後,焦點移動到同行中別的欄位,就提交,這個能否實現--在OnColEnter 事件中实现!不过没有编辑完就保存,不太好吧?
 
做好了
我把我寫的代碼發布一下
procedure TForm1.cxGridDBBandedTableView1InitEdit(
Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem;
AEdit: TcxCustomEdit);
begin
if dm.FindADOQ4.State in [dsEdit,dsInsert] then
begin
addbit.Enabled:=true;//一個是保存按鈕,一個是取消按鈕
clabit.Enabled:=true;
end;
if dm.FindADOQ4.State in [dsbrowse,dsinactive] then
begin
addbit.Enabled:=false;
clabit.Enabled:=false;
end;
end;

procedure TForm1.addBitClick(Sender: TObject);
begin
dm.FindADOQ4.Post;
clabit.Enabled:=false;
addbit.Enabled:=false;
end;

procedure TForm1.claBitClick(Sender: TObject);
begin
dm.FindADOQ4.CancelUpdates;
clabit.Enabled:=false;
addbit.Enabled:=false;
end;
還有一個有關觸發器的問題,也請大家幫忙看看
我表裡有一列的值是等於另外二例之和
比如:A例的值=A例原來的值+B例的值 6=4+2 7(A最新值)=6(A例原來的值)+1(B例的值)
生產總工時=標准工時*生產量,生產工時=(標准工時*生產量)/3600
條件就是B例的值不等於空
CREATE TRIGGER upmeg ON dbo.bomtime
FOR UPDATE
AS
update bomtime
set 累計產量=累計產量+生產量,生產總工時=標准工時*生產量,生產工時=(標准工時*生產量)/3600
where 生產量 is not null
 
后退
顶部