如何用四位长度表示1000以内的数

yuekai2008 2009-04-26 12:52:16
我实现的一个自增的单号,我的代码是:

#region 生成单号
SqlCommand cmd = new SqlCommand("", conn);
cmd.CommandText = "select top 1 帐单号 from 开单表 order by id desc";
string danhao = Convert.ToString(cmd.ExecuteScalar());
string time = DateTime.Today.ToString("yyyyMMdd");
if (danhao.IndexOf(time) != -1)
{
int i = Convert.ToInt32(danhao.Substring(8)) + 1;
tbdan.Text = danhao.Substring(0, 8) + i.ToString();
}
else
{
tbdan.Text = time + 1;
}
#endregion
这个虽然是可以实现自增,但发现这个不太好,因为它的格式为200904241,200904242 ....200904249,但2009042410--2009042419这10张帐就会排在200904241的后面了。现我想格式为200905240001(帐单号数据类型为nvarchar),前8位表示年月日,后四位表示该天的流水号。因为我是用编程的方式实现的(所以与网上查到在数据库里写存储过程实现单号方法不同,我不太会用存储过程)。怎么去设置后面的四位的格式哦?
...全文
62 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
我姓区不姓区 2009-04-26
  • 打赏
  • 举报
回复

if (danhao.IndexOf(time) != -1)
{
int i = Convert.ToInt32(danhao.Substring(8)) + 1;
tbdan.Text = danhao.Substring(0, 8) + i.ToString().PadLeft(4,'0');
}
else
{
tbdan.Text = time + "0001";
}

Sysping1 2009-04-26
  • 打赏
  • 举报
回复
int seq = 12;//seq你从数据库查出来的0012转换成整形12
seq++;
string p2 = Data.Now.ToString("yyyyyMMdd");//日期
string p3 = seq.ToString("0000");//序列号
string result = p2 + p3;
Sysping1 2009-04-26
  • 打赏
  • 举报
回复
1: 随便贴段代码,因为是ORM的
/// <summary>
/// 默认单后边序列号
/// </summary>
public static string StartSeqNo = "0000";
#endregion
#region 方法.单号生成
/// <summary>
/// 自动生成单号
/// </summary>
/// <param name="bussinessObj">The bussiness obj.</param>
/// <param name="dealType">Type of the deal.</param>
/// <returns></returns>
public static string CreateMasterNo(HelpManagement bussinessObj, AssetDealType dealType)
{
//处置类别信息
string p1 = "DT";
PickSeed pickSeed = PickHelper.SnatchPickSeed(dealType);
p1 = p1 + pickSeed.Code;

//日期
string p2 = HelpManagement.ServerDateTime.ToString("yyMMdd");

//序列号
string p3 = BDealHelper.StartSeqNo;
string p12 = p1 + p2;
string hql =
" select max(thisTable." + BDealHelper.MasterNoPropertyName + ") from " + typeof(MgtDeal).Name + " thisTable" +
" where thisTable." + BDealHelper.MasterNoPropertyName + " like '" + p12 + "%'";
object value = bussinessObj.SessionUniqueResult(hql) ?? string.Empty;
string p = value.ToString();
if (p.Length > p12.Length)
{
p3 = p.Substring(p12.Length);
if (p3.Length != BDealHelper.StartSeqNo.Length) p3 = BDealHelper.StartSeqNo;
}
int seq = TypeHelper.ForceParse<int>(p3) + 1;
p3 = seq.ToString(BDealHelper.StartSeqNo);

//组成并返回
return p1 + p2 + p3;
}
2:最主要的是
HelpManagement.ServerDateTime.ToString("yyyyyMMdd");//日期
p3 = seq.ToString("0000");//序列号

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧