搞定了。。。
可是我写在信息的BeforePost事件 每做一次修改 编号就会自动加一 是不是哪边写错了
===
//参数说明:AString要翻译的字符串
//返回值中如果有非汉字存在原样取出
function TZDHSBS.StringtoPY(AString: string): string;
var
lStringList: TStringList;
I, lIndex: Integer;
lStr: string;
begin
lStringList := TStringList.Create;
try
lStringList.LoadFromFile(Business.System.JSCommon.ModulePath + 'PYCODE.DAT');
for I := 0 to lStringList.Count - 1 do
begin
lStr := lStringList.Strings[I];
lStringList.Strings[I] := lStr.Replace(StringUtils.Copy(lStr, 2, 5), '=');
end;
lStr := '';
for I := 1 to AString.Length do
begin
lIndex := lStringList.IndexOfName(StringUtils.Copy(AString, I, 1));
if lIndex <> -1 then
lStr := lStr + lStringList.Values[StringUtils.Copy(AString, I, 1)]
else
lStr := lStr + StringUtils.Copy(AString, I, 1);
end;
result := lStr;
finally
lStringList.Free;
end;
end;
// 根据条件 自动编号
function TZDHSBS.GetIncNUm(lString : String): string;
const
cZeroLeng = '00';
var
lDateStr, lTmpStr: string;
begin
lTmpStr := TCommonUtils.GetAutoIncreaseID(Self.Context,lString,'');
lTmpStr := StringUtils.Copy(cZeroLeng, 1, Length(cZeroLeng) - Length(lTmpStr)) + lTmpStr;
lDateStr := lString;
Result := lDateStr + lTmpStr;
end;
procedure TZDHSBS.DataSetZDH_ZDHSBXXBBeforePost(DataSet: TDataSet);
var
xtlxStr,azddStr,lxStr,sbbhStr,bhStr: string;
begin
azddStr := StringtoPY(DataSetZDH_ZDHSBXXB.FieldByName('azdd').AsString); //安装地点汉字全拼
Business.Model.ExtUtils.StringToPYCapitals(DataSetZDH_ZDHSBXXB.FieldByName('sblx').AsString, lxStr); //设备类型首字母
DataSetZDH_ZDHXTXXB.Open;
DataSetZDH_ZDHXTXXB.Locate('Inst_id',DataSetZDH_ZDHSBXXB.FieldByName('lsbh').AsString,[]);
Business.Model.ExtUtils.StringToPYCapitals(DataSetZDH_ZDHXTXXB.FieldByName('GCMC').AsString, xtlxStr); //系统类型首字母
sbbhStr := xtlxStr + '_' + azddStr + '_' + lxStr + '_' ;
bhStr := GetIncNUm(sbbhStr);
DataSetZDH_ZDHSBXXB.FieldByName('SBBH').AsString:= bhStr;
end; |