Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access开发平台

快速开发平台(企业版)--获取SQL SERVER服务器时间

时 间:2013-11-29 14:20:37
作 者:smileyoufu   ID:1784  城市:成都
摘 要:在在快速平台中企业版,使“ACCESS前台+SQL SERVR后台”(也就是C/S模式)的多用户模式时,有时候需要使用系统的当前时间,比如记录订单关闭

时间、记录生成时间、记录修改时间,通常情况下,是直接使用NOW()函数直接取得客户端本机的时间赋给程序,然后写入到后台数据库。
正 文:

背景:

     在在快速平台中企业版,使“ACCESS前台+SQL SERVR后台”(也就是C/S模式)的多用户模式时,有时候需要使用系统的当前时间,比如记录订单关闭

时间、记录生成时间、记录修改时间,通常情况下,是直接使用NOW()函数直接取得客户端本机的时间赋给程序,然后写入到后台数据库。

课题:
     在上述背景下,直接使用NOW()函数带来的课题:可能各个客户端电脑时间不一致,或者有的客户端电脑的时间甚至是错误的。客户端时间不统一带来

的风险:操作的订单的记录时间不是当前的时间、记录生成不是当前时间、资金结算时间不是当前时间、甚至通过直接修改客户端电脑的时间来伪造相应时期的记录……,诸多问题看似小问题,但在实际工作活动中,很容易带来“蝴蝶效应”般的破坏。

对策:
    使客户端遵守同一时间标准。比如我们在中国,不管是在哪个省份,都使用北京时间作为标准一样。那么我们在具有前后台(C/S)中时,都以后台数据库的时间为基准,此时不论客户端时间如何修改,都不会影响服务器上的时间。在SQL SERVRE内部,我们可以直接使用GETDATE()函数取得服务器当前时间,但是在客户端却没有直接的方法可以取得,由此我们可以编写一个如下的自定义函数,即可取得SQL SERVER服务器的时间。利用快速平台强大的功能,我们仅需使用一句有效代码即可取得服务器的时间。具体如下:


'函 数 名:GetServerTime()
'作    者:smileyoufu
'用    途:在快速平台中企业版,获取SQL SERVER服务器时间
'调用方法:在原使用  NOW() 函数的地方,写为 GetServerTime() 即可
'       如  debug.?GetServerTime()   '即可得到SQL SERVER服务器时间
'创建日期:2013-11-28
'注意事项:'注意:该函数基于快速平台开发,不能直接移植到非快速开发平台的环境下使用。


Function GetServerTime() As Date  '获得SQL SERVER服务器时间
    Dim rst As Object
    Set rst = OpenADORecordset("Select GETDATE() AS sys_Sqlser_time") '主要为这句代码取得了SQL SERVER服务器时间
    GetServerTime = rst(0)
    rst.Close
    Set rst = Nothing
End Function




Access快速开发平台QQ群 (群号:321554481)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助