2

我有以下 ms 访问 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 结束:

无法修改“发票日期”字段。

请问有什么问题

4

1 回答 1

3

你这样做是错的。:)

您应该改用该AfterEdit事件。从帮助文件中TDataSet.AfterEdit

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

像这样使用它:

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;
于 2012-04-03T20:38:54.660 回答