0

MS Access または SQL Server で TField の DefaultExpression プロパティを使用するにはどうすればよいですか。BDE でのみ機能するようです。

4

2 に答える 2

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

于 2009-11-11T16:04:43.643 に答える
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 を受け入れるようにすることもできます。これは、そのフィールドをループし、すべてのフィールドに対して同じことを行います。

于 2009-11-02T10:51:42.307 に答える