字段'Invoice_Date'无法修改

时间:2012-04-03 20:04:10

标签: delphi ms-access delphi-7

我有以下ms access 2003表:

Invoice_Master
(
   Invoice_Id  Autonumber,
   Customer_Id  integer,
   Invoice_Date  Date/Time not null,
.
.
.
);

和以下代码(Delphi 7)

procedure TfmInvoiceMaster.adoMasterEditNewRecord(DataSet: TDataSet);
begin
  inherited;
  adoMasterEditInvoice_Date.AsDateTime := Date;
end;

当我尝试添加新记录时,我以异常错误sys:

结束
  

字段'Invoice_Date'无法修改。

请问有什么不对

1 个答案:

答案 0 :(得分:3)

你做错了。 :)

您应该使用AfterEdit事件。来自TDataSet.AfterEdit上的帮助文件:

  

编写AfterEdit事件处理程序,以便在数据集进入编辑模式后立即执行特定操作。在编辑记录后,编辑后调用AfterEdit,重新计算计算字段,并调用数据事件处理程序来处理记录更改。

像这样使用:

procedure TfmInvoiceMaster.adoMasterAfterEdit(DataSet: TDataSet);
begin
  // No inherited call! This is an event handler, not an overridden method
  adoMasterEditInvoice_Date.AsDateTime := Date;
end;

但是,在您的文本中,您似乎想要在插入记录时执行此操作,而不是编辑(“当我尝试添加新记录时,我会以异常错误sys:”结束)。如果是这种情况,请以同样的方式使用AfterInsert

procedure TfmInvoiceMaster.adoMasterAfterInsert(DataSet: TDataSet);
begin
  // No inherited call! This is an event handler, not an overridden method
  adoMasterEditInvoice_Date.AsDateTime := Date;
end;