选择显示字体大小

在c/s体系中设置工作站与服务器的时钟同步

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

  一、前言

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

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

  二、实现方法:

  1、 连接数据库

  powerbuilder支持多种数据库管理系统(dbms),如sybaseoracle、informix、microsoft sql server等;根据不同的数据库类型,采用专用接口或odbc连接数据库,建立接口配置文件(db profile)。

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

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

startupfile = "settime.ini"

sqlca.dbms= profilestring (startupfile, "database", "dbms", "")

sqlca.database=profilestring(startupfile,"database","database","")

sqlca.userid=profilestring(startupfile,"database","userid","")

sqlca.dbpass=profilestring(startupfile,"database","dbpass", "")

sqlca.logid=profilestring(startupfile, "database", "logid","")

sqlca.logpass=profilestring (startupfile, "database","logpassword", "")

sqlca.servername=profilestring(startupfile,"database",ervername","")

sqlca.dbparm= 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 "kernel32.dll"

  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_systime.wmonth=month(date.nettime))

s_systime.wday=day(date.nettime))

s_systime.wyear=year(date.nettime))

s_systime.whour=hour(time.nettime))

s_systime.wminute=minute(time.nettime))

s_systime.wsecond=second(time.nettime))

s_systime.wmillisecond=30

 

setlocaltime(s_systime) //调用win32 api函数,设置工作站时间。

  6、创建可执行应用程序

  在powerbar或powerpanel中单击project按钮打开project painter。select project对话框出现,单击new创建一个新的工程对象,输入可执行程序名(如:settime.exe),单击ok。然后单击build,即可创建可执行文件。

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

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

  三、结束语

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


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons