代码之家  ›  专栏  ›  技术社区  ›  Kachwahed

为什么DefaultExpression属性仅适用于BDE?

  •  0
  • Kachwahed  · 技术社区  · 16 年前

    如何在MS Access或SQL Server中使用TField的DefaultExpression属性,它似乎仅适用于BDE。

    2 回复  |  直到 16 年前
        1
  •  0
  •   MvdH    16 年前

    这不是一个确切的答案,但它是一个解决办法。我只是从数据集的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,它循环它的字段并对所有字段执行相同的操作。

        2
  •  0
  •   Kachwahed    16 年前

    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

    推荐文章