我正在尝试验证用户输入,以确保用户以DD/MM/YYYY
格式输入日期,然后再将其发布(BeforePost
事件)到数据库中的表,然后在它不是。
这是给Delphi-7的
这是我一直在使用的代码
var
dateAudition : TDateTime;
begin
try
DateAudition := tblAudition.Field[4];
except
Abort;
end;
end;
我遇到错误TDateTime and Tfield are incompatible
答案 0 :(得分:1)
如果您的数据库字段(列)是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;