在做机房收费系统的时候,没有想到多用户操作的问题。在调试的时候,贾琳提出了此问题。由于此系统是在上下机的时候读取时间,然后做差。那么在多用户操作时,如果这些用户的时间不一致,那么就会发生错误。所以,在使用此系统时,全部都调用服务器时间,这样就可以避免此问题了。下面是调用服务器日期和时间的函数。
Public Function getDate() As String
Dim strCn As String, strRs As String
Dim objRs As Recordset, objCn As Connection
strCn = "Provider=SQLOLEDB;Data Source=192.168.24.61;Initial CataLog=charge_my;UID=sa;PWD=123456"
Set objCn = New Connection
objCn.Open strCn
strRs = "select replace(convert(varchar(10),getdate(),120),N'-0','-')"
Set objRs = New Recordset
objRs.Open Trim$(strRs), objCn, adOpenKeyset, adLockOptimistic
getDate = objRs.Fields(0)
End Function
Public Function getTime() As String
Dim strCn As String, strRs As String
Dim objCn As Connection, objRs As Recordset
strCn = "Provider=SQLOLEDB;Data Source=192.168.24.61;Initial CataLog=charge_my;UID=sa;PWD=123456"
Set objCn = New Connection
objCn.Open strCn
strRs = "select CONVERT(varchar, getdate(), 108)"
Set objRs = New Recordset
objRs.Open Trim$(strRs), objCn, adOpenKeyset, adLockOptimistic
getTime = objRs.Fields(0)
End Function
主要是用了convert这个函数来获取想要的时间格式。由于我日期和时间都设置的是字符型,所以如果格式不一样的话,比较会出错。而convert这个函数帮我解决了时间格式问题。