首先定义了借款币种的查找属性 数据源来自配置表 0 人民币 1 美元
//主数据字段修改 出差类别修改 默认币种等信息
procedure TMainForm.dsbEvecMainDataChange(Sender: TObject; Field: TDataField);
var
CurrentLoanNo:string;
begin
if Field<>nil then
begin
dsbEvecMain.DataSet.Open;
CurrentLoanNo:=dsbEvecMain.DataSet.FieldByName('CurrentLoanNo').AsString;
if Field.FieldName='EvecType' then //出差类别修改
begin
if Field.AsString='0' then //国内出差
begin
//币种默认为人民币
dsbEvecSub.DataSet.Open;
dsbEvecSub.DataSet.Edit;
dsbEvecSub.DataSet.FieldByName('LoanUnit').AsString:='0';
TBizDataSet(dsbEvecSub.DataSet).BizFieldByName('LoanTotal').Attributes.ReadOnly.Text:='false';
end
else if Field.AsString='1' then //国外出差 币种默认为美元
begin
dsbEvecSub.DataSet.Open;
dsbEvecSub.DataSet.Locate('CurrentLoanNo',CurrentLoanNo,[]);
dsbEvecSub.DataSet.Edit;
dsbEvecSub.DataSet.FieldByName('LoanUnit').AsString:='1';
//借款金额不允许填写 系统计算
TBizDataSet(dsbEvecSub.DataSet).BizFieldByName('LoanTotal').Attributes.ReadOnly.Text:='true';
end;
end
else if Field.FieldName='EcevStartDate' then
begin
dsbEvecMain.DataSet.Open;
if dsbEvecMain.DataSet.FieldByName('EvecEndDate').AsString<>'' then
begin
//计算借款金额
CaculateLoanTotal();
end;
end
else if Field.FieldName='EvecEndDate' then
begin
dsbEvecMain.DataSet.Open;
if dsbEvecMain.DataSet.FieldByName('EcevStartDate').AsString<>'' then
begin
//计算借款金额
CaculateLoanTotal();
end;
end;
end;
end;