我现在碰到了这样一个问题,我在将数据登记入数据库时,要生成一个编码,他的格式为 年+月+日+000~999在只有一台机器工作时,生成唯一编码正确,可是在多台机器同时工作吧,就出错了,请问高手,这个唯一编码要如何实现啊,就是在有多台机器同时将数据存在数据时,要如何生成这个唯一编码啊
解决方案 »
- 求vb调用pb写的com组件源码
- 一个文字镜像的问题
- 我的文件传输(FTP)程序问题
- 问题很多.也很简单,,,懂一点的都可进来.....
- 关于vb与操作access数据库遇到的问题,请赐教!
- 大家精通SHELL原理吗,请高手帮助解决一个SHELL运行的疑难问题!!!
- 请问怎么样获得datagrid里某一行某一列的信息啊?谢谢
- 关于进销存软件编制时遇到的一些问题?
- Vb-> Word <-....-> Graph
- 前途迷茫,做ERP需要具备什么样的条件呀?
- 50分求助!TreeView中结点,点击右键弹出菜单,怎么实现?
- 一。多谢朋友们慷慨捐助可用分!二。另问如何既时获取Richtextbox中光标的位置!
先 begintrans
然后再获得编号
保存
if err.number=0 then
committrans
else
goto errhandle
end if
'**********************************************************************
' 获取编号的函数,colID为传递过来的编号字段,tablename为所要查询的表名
'**********************************************************************
Dim T1 As Integer, T2 As String, T3 As String
Dim rst As ADODB.Recordset
Dim Sqlstring As String
Set rst = New ADODB.Recordset
Sqlstring = "select top 1 " & colID & " from " & TableName & " order by " & colID & " desc "
On Error GoTo Errhandle
Set rst = ExecuteSQL(Sqlstring)
T1 = rst.Fields(0).DefinedSize
If rst.EOF = True Then
GetMaxID = String(T1 - 1, "0") & "1"
Else
T2 = CInt(rst.Fields(0).Value)
T2 = T2 + 1
T3 = String(T1 - Len(Trim(Str(T2))), "0") & CStr(T2)
GetMaxID = T3
End If
Set rst = Nothing
Exit Function
Errhandle:
MsgBox "获取编号出错,请与管理员联系", vbOKOnly + vbCritical, App.title
Set rst = Nothing
End Function
这个函数不和你的一样,但差不多.你只需要将服务器时间取出来,然后配合后边的就差不多了.
我的编号比较简单,只是10位数!你参考一下吧.
'***************************************
'取服务器时间
'***************************************
Dim Sqlstring As String
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
Sqlstring = "select substring(convert(varchar(20),getdate(),20),12,9)"
Set rst = ExecuteSQL(Sqlstring)
On Error GoTo Errhandle
GetServerTime = CDate(rst.Fields(0).Value)
rst.Close
Set rst = Nothing
Errhandle: '出错取本地时间
GetServerTime = Time
Set cnn = Nothing
End Function
'*****************************************
' '获取服务器时间的函数
'*****************************************
On Error GoTo Errhandle
Dim cnn As ADODB.Connection
Dim cmd As ADODB.Command
Dim para1 As ADODB.Parameter
Set cnn = New ADODB.Connection
Set para1 = New ADODB.Parameter
Set cmd = New ADODB.Command
cnn.ConnectionString = ConnectString
cnn.Open
cmd.CommandText = "my_get_severtime"
cmd.ActiveConnection = cnn
cmd.CommandType = adCmdStoredProc
Set para1 = cmd.CreateParameter("mydate", adDate, adParamOutput)
cmd.Parameters.Append para1
cmd.Execute
GetServerDate = cmd.Parameters("mydate")
Set cnn = Nothing
Set cmd = Nothing
Set para1 = Nothing
Exit Function
Errhandle: '如果获得服务器时间出错,则调用本地时间
GetServerDate = Date
Set cnn = Nothing
Set cmd = Nothing
Set para1 = Nothing
End Function
不过我想以后方便做成access平台的,所以就这样了.省得以后再改程序.