WEB开发网
开发学院数据库Sybase C/S体系中设置工作站与服务器时钟同步 阅读

C/S体系中设置工作站与服务器时钟同步

 2008-05-16 15:10:49 来源:WEB开发网   
核心提示:摘要: 在实际应用中,经常要求客户机/服务器体系结构中各工作站的时钟与服务器的时钟保持同步;本文基于SYBASE数据库、Powerbuilder开发工具说明了一种解决方法,C/S体系中设置工作站与服务器时钟同步,一、前言PowerBuilder通过数据窗口对象,可方便、直接地对数据库进行操作,在应用对象事件中编写脚本1

摘要: 在实际应用中,经常要求客户机/服务器体系结构中各工作站的时钟与服务器的时钟保持同步;本文基于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 = "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

1 2  下一页

Tags:体系 设置 工作站

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接