如图:
在逻辑层进行调用
/// <summary> /// 根据当天的序号,且是同一个前缀类型的单据进行编码,iFlag小于0时无Flag逻辑分隔 /// </summary> public string Get_Ex_Mark(string sFront, string sTableName, string sFiledName, string sQiyeGuid, int iFlag) { string sDate1 = DateTime.Now.ToString("yyyy-MM-dd 00:00:00"); string sDate2 = DateTime.Now.ToString("yyyy-MM-dd 23:59:59"); int ilen = sFront.Length; string strsql = "select max(cast(right(" + sFiledName + ",4) as int)) as iNumber from " + sTableName + " where PATINDEX('%[^0-9]%', right(" + sFiledName + ",4))=0 and QiyeGuid='" + sQiyeGuid + "' and CreateTime between '" + sDate1 + "' and '" + sDate2 + "' and left(" + sFiledName + "," + ilen + ")='" + sFront + "'"; if (iFlag >= 0) strsql += " and Flag=" + iFlag; object obj = GetScalarByTx(strsql); if (obj == DBNull.Value) { return sFront + DateTime.Now.ToString("yyyyMMdd") + "0001"; } else { int k = Convert.ToInt32(obj); k++; return sFront + DateTime.Now.ToString("yyyyMMdd") + k.ToString("0000"); } }