我有以下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'无法修改。
请问有什么不对
答案 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;