我正在尝试验证用户输入,以确保用户在将日期发送(BeforePost事件)到数据库中的表之前,已经以DD/MM/YYYY格式输入了日期,如果没有,则中止。
这是针对Delphi-7的
这是我一直使用的代码
var
dateAudition : TDateTime;
begin
try
DateAudition := tblAudition.Field[4];
except
Abort;
end;
end;我收到一个错误的TDateTime and Tfield are incompatible
发布于 2019-07-18 00:56:12
如果您的数据库字段(列)是DATE或DATETIME,那么您不需要在OnBeforePost中执行任何操作-该字段不允许存储非日期值。
您得到的错误是因为TDataSet.Fields是一个TField数组,因此引用tblAudition.Fields[4]将产生一个TField,而您的代码试图将该TField赋给您已声明为TDateTime的变量。
如果您的列不是DATE或DATETIME,并且确实需要验证,则需要首先将字段值(而不是字段本身)转换为正确的类型。像这样的东西应该是有效的:
var
dateAudition: TDateTime;
begin
try
dateAudition := StrToDate(tblAudition.Fields[4].AsString);
except
Abort; // This is wrong, BTW. It cancels without telling the user why
end;
end;https://stackoverflow.com/questions/57080667
复制相似问题