如何将TField的DefaultExpression属性用于MS Access或SQL Server,它似乎只适用于BDE。
答案 0 :(得分:0)
不是一个确切的答案,但它是一种解决方法。我只是从数据集的AfterInsert事件处理程序中调用类似下一个例程的东西:
procedure Flds_SetToDefExpr(const AFlds: array of TField);
var
i : Integer;
begin
for i := Low(AFlds) to High(AFlds) do
with AFlds[i] do begin
DataSet.Edit;
if ( DefaultExpression='' ) then
Clear
else if HasOuterQuotes(DefaultExpression) then
Value := RemoveOuterQuotes( DefaultExpression,True,False )
else
Value := StrToInt(DefaultExpression); //raises if not an integer!
end;
end;
当然你可以改变这个例程来接受一个TDataSet,它循环它的字段并对所有字段做同样的事情。
答案 1 :(得分:0)
我认为DefaultExpression属性不适用于ADO,但是我们使用Vassil Nazarov使用TBetterADODataSet进行解决方法:
Procedure TBetterADODataSet.DoOnNewRecord;
Var i: Integer;
Begin
FModifiedFields.Clear;
For i:=0 To Pred(Fields.Count) Do With Fields[i] Do
If DefaultExpression<>'' Then Try
AsString:=DefaultExpression;
Except
On E: Exception Do
ShowMessage(E.Message);
End;
Inherited DoOnNewRecord;
End;
您可以在此免费获取:TBetterADODataSet