在体系中设置工作站与服务器的时钟同步计划

仪器仪表2021年09月06日

摘要: 在实际应用中,经常要求客户机/服务器体系结构中各工作站的时钟与服务器的时钟保持同步;本文基于SYBASE数据库、Powerbuilder开发工具说明了一种解决方法。   一、前言

PowerBuilder通过数据窗口对象,可方便、直接地对数据库进行操作,故已成为当前开发Client/Server模式应用的首选开发工具。在开发医院信息管理系统时,我们采用了PowerBuilder 作为前台开发工具,Sybase作为后台数据库。

医院信息管理系统中,有很多模块都要求工作站的时间与服务器保持同步,如:门诊收费系统要求能均匀地向各司药窗口分派处方、住院药房摆药要根据病房发送医嘱的时间顺序进行等。为解决此问题,我们编写了相应的程序,主要思路是:采用动态游标获取服务器时间, WIN32的API函数设置本机时间,具体实现方法如下:

二、实现方法:

1、 连接数据库

PowerBuilder支持多种数据库管理系统(DBMS),如Sybase、Oracle、Informix、Microsoft SQL Server等;根据不同的数据库类型,采用专用接口或ODBC连接数据库,建立接口配置文件(DB Profile)。

2、 创建应用对象,在应用对象事件中编写脚本

1、应用对象open事件的脚本如下:

startupfile = \"i\"

MS= ProfileString (startupfile, \"database\", \"dbms\", \"\")

tabase=ProfileString(startupfile,\"database\",\"database\",\"\")

erid=ProfileString(startupfile,\"database\",\"userid\",\"\")

pass=ProfileString(startupfile,\"database\",\"dbpass\", \"\")

gid=ProfileString(startupfile, \"database\", \"logid\",\"\")

gpass=ProfileString (startupfile, \"database\",\"LogPassWord\", \"\")

rvername=ProfileString(startupfile,\"database\",ervername\",\"\")

parm= ProfileString (startupfile, \"database\", \"dbparm\", \"\")

connect;

f_setlocaltime() //调用自定义函数完成设置本地工作站时间

2、应用对象Close事件中的脚本如下:

DISCONNECT Using SQLCA;

3、 定义WIN32的API函数为外部函数

在Script画笔工作区中,选择Declare Global External Functions...,定义WIN32的API函数为外部函数,定义如下:

FUNCTION LONG SetLocalTime (ref systemtime systimeptr) LIBRARY \"l\"

4、 定义存取时间参数的结构

单击PainterBar或PowerPanel中的Structure Painter按钮,定义一个名为:systemtime的结构,组成结构的变量与对应的数据类型如下:

integer wyear

integer wmonth

integer wdayofweek

integer wday

integer whour

integer wminute

integer wsecond

integer wmillisecond

5、创建用户自定义函数来完成设置工作站时间

创建一个名为f_settime的自定义函数,脚本如下:

systemtime s_systime //声明前面已定义结构类型的变量

datetime nettime

declare cur_time dynamic cursor for sqlsa; //声明动态游标

prepare sqlsa from \"select getdate()\";

open dynamic cur_time ;

fetch cur_time into :nettime; //通过数据库获取服务器时间

close cur_time;

s_onth=month(date(nettime))

已然与真小龙女(灵巧1200 s_ay=day(date(nettime))

s_ear=year(date(nettime))

s_our=hour(time(nettime))

s_inute=minute(time(nettime))

s_econd=second(time(nettime))

s_illisecond=30

SetLocalTime(s_systime) //调用WIN32 API函数,设置工作站时间。

6、创建可执行应用程序

在PowerBar或PowerPanel中单击Project按钮打开Project Painter。Select Project对话框出现,单击New创建一个新的工程对象,输入可执行程序名(如:e),单击OK。然后单击build,即可创建可执行文件。

7、将可执行程序安装至各工作站

将生成的可执行程序(如:e)放入各工作站的Windows的启动菜单,即可在每次启动Windows时,工作站自动根据服务器时间校正本机时间。

三、结束语

上述方法是创建一个独立的可执行文件来实现工作站与服务器的时间同步;编程时,也可在应用程序的open事件或程序登录对应事件中调用上述f_settime函数,以实现工作站的时间与服务器同步。此方法已在开发医院信息管理系统中加以应用,取得了很好的效果。

查看本文来源

石家庄白癜风治疗
长沙治疗包皮包茎费用
全飞秒术后注意事项
相关阅读
江苏发布关键性提醒!

浙江热尔省成人教育监察院发布新闻了 浙江热尔省2022年普通高考考后警告 一...

2024-12-16
54岁郑钧好可怕,与小16岁娇妻在机场热吻,剪齐刘海刻意扮嫩

过去的服装辅以领域已经形成了用语的品味,相同的用语有相同的品味标准和...

2024-11-02
巴黎女装周——Walter Van Beirendonck品牌时装秀

大公报剧照,外代,2022年6年底23日 6年底22日,摄影师在德国科隆淑女周上展...

2024-10-12
【走近老区看新貌】养山护山闯新路 碳中和理念蔚然成风

央视网消息:2001年,全省第一本新版林权证在潮汕漳州永定县捷文村发端。...

2024-10-05
Mac磁盘如何同步进行分区和格式化!

很多女朋友都一切都是想到Mac怎么文档化存储仪器?Mac存储仪器如何同步进行...

2024-09-16
奥比中光通过注册:年销售额4.7亿拟募资19亿 蚂蚁集团是股东

坎递线下 坎建平 5年末20日报道 MLT-中瞳科技上市的公司股份公司实际的公司...

2024-07-23
友情链接