各位高手你们好问题如下:有一个流水单表.
我需要那个流水单号.
比如
2004年5月15日
第一条记录编号为:200405151
第二条记录编号为:200405152
第三条记录编号为:200405153
以此类推...
到了2004年5月16日
第一条记录编号为:200405161
第二条记录编号为:200405162
第三条记录编号为:200405163
也类推...反正过一天,后面的那个编号就自动从1开始了需要用VB得出此编号...
谢谢各位了....
我需要那个流水单号.
比如
2004年5月15日
第一条记录编号为:200405151
第二条记录编号为:200405152
第三条记录编号为:200405153
以此类推...
到了2004年5月16日
第一条记录编号为:200405161
第二条记录编号为:200405162
第三条记录编号为:200405163
也类推...反正过一天,后面的那个编号就自动从1开始了需要用VB得出此编号...
谢谢各位了....
@bill_sign_AB char(1)
as
/*Bill_sign:A:获取入库单号
B:获取出库单号
*/ declare @recCount int
declare @sTmp varchar(20)
declare @bill_sign char(1)
set nocount on
set @bill_sign=@bill_sign_AB
set @bill_sign=upper(@bill_sign)
if @bill_sign<>'A' and @bill_sign<>'B'
begin
RAISERROR ('输入了非A,B之间的字符', 16, 1)
return 1
end
--先删除非今在的单号
delete from t_BillCode_dta where bill_sign=@bill_sign and
substring(code,1,8)<>REPLACE(convert(varchar(10),getdate(),120),'-','')
select @recCount=count(*) from t_BillCode_dta where bill_sign=@bill_sign
if @reccount=0
begin
set @sTmp=replace(convert(varchar(10),getdate(),120),'-','')
set @sTmp=@sTmp+@bill_sign+'0001'
insert into t_billcode_dta values(@sTmp,@bill_sign)
if @@rowcount>0
begin
select @sTmp as BillCode
set nocount off
return 0
end
else
begin
RAISERROR ('生成单号错误!', 16, 1)
return 1
end
end
else
begin
declare @nTmp int
select @sTmp=code from t_billcode_dta where bill_sign=@bill_sign
set @sTmp=substring(@sTmp,10,4)
set @nTmp=cast(@sTmp as int)
set @nTmp=@nTmp+1
set @stmp=REPLICATE('0',4-len(cast(@nTmp as varchar(4))))+cast(@nTmp as varchar(4))
update t_billcode_dta set code=replace(convert(varchar(10),getdate(),120),'-','')+@bill_sign+@sTmp
if @@rowcount>0
begin
select code as BillCode from t_billcode_dta where bill_sign=@bill_sign
set nocount off
return 0
end
else
begin
RAISERROR ('生成单号错误!', 16, 1)
return 1
end
return 0
set nocount off
end
GO给你一个我写的存储过程.你参考一下.
Dim NewBH As StringSet rs = db.Execute("Select Count(bh)+1 As xxh From table1 Where Left(bh, 8)='" & Format(Date, "YYYYmmdd") & "'")
NewBH = Format(Date, "YYYYmmdd") & rs!xxh
再用Left(rs!NewCol,8)取得该记录的日期再用DATE判断是否与今日相同,同则继续将流水单号加1,不同就在后面以1记
Public Function GetID(ls_Table) As String
On Error GoTo Errhandle
Dim ls_ID As String, rs As New ADODB.Recordset
ls_ID = Format$(ls_CurDate, "YYYYMMDD")
If rs.State = adStateOpen Then rs.Close
rs.Open "select max(ID) from " & ls_Table & " where ID like '" & ls_ID & "%'", cn, adOpenForwardOnly, adLockReadOnly If IsNull(rs.Fields(0).Value) Then
ls_ID = ls_ID & "0001"
Else
ls_ID = rs.Fields(0).Value + 1
End If GetID = ls_ID
rs.Close
Set rs = Nothing
Exit Function
Errhandle:
If rs.State = adStateOpen Then rs.Close
Set rs = Nothing
ErrView Err.Description
End Function
数据库中dateID为该流水号dim useID as stringrs.open "select * form <数据库> where ... order by dateID"
if rs.recordset>0 then
rs.movelast
useiID=trim(rs!dateID)
if val(mid(useID,7,2))=val(day(date)) then
useID=mid(useID,1,8) &str(val(mid(useID,9))+1)
else
useID=year(date)& format(day(date),"0#")&format(day(date),"0#")&"1"
end if
else
useID=year(date)& format(day(date),"0#")&format(day(date),"0#")&"1"
end if
rs.close
ls_ID = Format$(ls_CurDate, "YYYYMMDD")
这里面的ls_CurDate 是干嘛的?
运行提示变量未定义
Public Function GetCurDate() As String
On Error Resume Next
Dim rs As New ADODB.Recordset
rs.Open "select GetDate() from USERPASSWORD", cn, adOpenKeyset, adLockReadOnly
If IsNull(rs.Fields(0).Value) Then
GetCurDate = Format$(Date, "yyyy/mm/dd hh:mm")
Else
GetCurDate = Format$(rs.Fields(0).Value, "yyyy/mm/dd hh:mm")
End If rs.Close
Set rs = Nothing
End Function
你可以把整个文件和数据库传给我吗?
我邮箱是[email protected]
麻烦你了哦。。谢谢