您可以设置
DefaultExpression
到所需字段的已用ID。例如,对于UniDAC存储过程对象,可以执行以下操作(
ParamCustID
是程序输入参数,
FieldCustID
是返回的数据集字段名):
var
CustID: Integer;
begin
CustID := 123;
UniStoredProc1.StoredProcName := 'MyProcedure';
UniStoredProc1.PrepareSQL;
UniStoredProc1.ParamByName('ParamCustID').AsInteger := CustID;
UniStoredProc1.Execute;
UniStoredProc1.FieldByName('FieldCustID').ReadOnly := True;
UniStoredProc1.FieldByName('FieldCustID').DefaultExpression := IntToStr(CustID);
end;
上面的代码将设置字段,以便为每个附加的元组分配相同的值,并使其为只读。出于好奇,FireDAC的相同任务将是这样的(为了应用更改,必须有一个显式的方法调用来更新字段属性):
var
CustID: Integer;
begin
CustID := 123;
FDStoredProc1.StoredProcName := 'MyProcedure';
FDStoredProc1.Prepare;
FDStoredProc1.ParamByName('@ParamCustID').AsInteger := CustID;
FDStoredProc1.Open;
FDStoredProc1.FieldByName('FieldCustID').ReadOnly := True;
FDStoredProc1.FieldByName('FieldCustID').DefaultExpression := IntToStr(CustID);
FDStoredProc1.UpdateAttributes;
end;