问题描述
我做了一个申请单,我想通过上面的GRID的选择框把选中的材料通过按钮添加到数据库,之后在相同页面读取数据库取得相应单号的申请单,编号是通过编程自动生成。现在遇到的问题是:点击完按钮会自动生成一个单号,之后通过单号进行读取.数据库没数据的时候我单击按钮,能自动生成单号,也能读取,但是数据增加以后,能往数据库添加数据,但是单号不自动增加在下面的GRID中显示不出来新添加的数据后几条,就不能正常存入了。可以存到数据库里数据,但是自动生成的单号不能自动增长,还是最后的单号,而且下面的GRID也不能显示正常数据
解决方案
解决方案二:
你自动生成单号有问题,你是怎样生成的
解决方案三:
#region自动生成申请单编号///<summary>///自动生成申请单编号///</summary>///<returns></returns>publicstringGetBianHao(){DataSetds=GetAllAdmin("tb_shenqingdan");stringstrAdminID="";if(ds.Tables[0].Rows.Count==0)strAdminID="GLD1001";elsestrAdminID="GLD"+(Convert.ToInt32(ds.Tables[0].Rows[ds.Tables[0].Rows.Count-1][0].ToString().Substring(3,4))+1);returnstrAdminID;}publicDataSetGetAllAdmin(stringtbName){return(data.RunProcReturn("select*fromtb_shenqingdanORDERBYid",tbName));}#endregion
解决方案四:
一开始设intnum=0001;这句strAdminID="GLD"+(Convert.ToInt32(ds.Tables[0].Rows[ds.Tables[0].Rows.Count-1][0].ToString().Substring(3,4))+1);换成strAdminID="GLD"+num++;
解决方案五:
错了想错了引用3楼tan598121925的回复:
一开始设intnum=0001;这句strAdminID="GLD"+(Convert.ToInt32(ds.Tables[0].Rows[ds.Tables[0].Rows.Count-1][0].ToString().Substring(3,4))+1);换成strAdminID="GLD"+num++;
解决方案六:
那要如何弄?
解决方案七:
为什么不用字符+当前时间生成申请单编号呢?
解决方案八:
触发器ALTERTRIGGER[dbo].[Trigger_Insert]ON[dbo].[TableA]AfterINSERTASBEGINdeclare@pkidint,@pidvarchar(14),@temppidvarchar(14)--从Inserted表中取得主键的自动编号select@pkid=pkidfromInserted--获取当前日期格式为"P20081010"select@pid='P'+Convert(varchar(8),GetDate(),112);--获取最后一个PIDselecttop1@temppid=pidfromTableAwherepidlike@pid+'%'orderbypkiddescif(@temppidisnull)begin--如果今天没有插入过数据,则初始值为'P200810100001'set@pid=@pid+'0001'endelsebegin--否则从最后一个日期取得编号,并末尾加上1,组成新编号set@pid=@pid+right(cast(power(10,4)asvarchar)+(convert(int,substring(@temppid,10,4))+1),4)end--更新编号updateTableAsetpid=@pidwherepkid=@pkidEND