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

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

时间: 2024-10-28 09:41:05

C/S体系中设置工作站与服务器时钟同步的相关文章

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

摘要 在实际应用中,经常要求客户机/服务器体系结构中各工作站的时钟与服务器的时钟保持同步:本文基于SYBASE数据库.Powerbuilder开发工具说明了一种解决方法. 一.前言 PowerBuilder通过数据窗口对象,可方便.直接地对数据库进行操作,故已成为当前开发Client/Server模式应用的首选开发工具.在开发医院信息管理系统时,我们采用了PowerBuilder 作为前台开发工具,Sybase作为后台数据库. 医院信息管理系统中,有很多模块都要求工作站的时间与服务器保持同步,如

云服务器 ECS 配置:ECS之Windows服务器时钟同步设置

ECS之Windows服务器时钟同步设置 简介 NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议,对于一些对时间极度敏感的应用(例如,通信行业), 如果不同机器时间不一致,就有可能导致读取到值不同. 操作步骤 修改默认NTP服务器地址 Windows Server操作系统默认都配置了微软默认的NTP服务器(time.windows.com),但可能会因为网络的原因经常出现同步出错.这时我们可以将默认的NTP服务器更换成阿里的NTP服务器

在Win 2003环境中设置一个Web服务器

本文介绍了如何在 Windows Server 2003 环境中设置一个用于匿名访问的WWW服务器. 安装 Internet 信息服务 Microsoft Internet 信息服务 (IIS) 是与Windows Server 2003 集成的 Web 服务. 要安装IIS.添加可选组件或删除可选组件,请按以下步骤xx作: 单击开始,指向控制面板,然后单击"添加或删除程序". "添加或删除程序"工具就会启动. 单击添加/删除 Windows 组件. 显示"

Win 2003环境中设置一个Web服务器

  概要 本文介绍了如何在 Windows Server 2003 环境中设置一个用于匿名访问的WWW服务器. 安装 Internet 信息服务 Microsoft Internet 信息服务 (IIS) 是与Windows Server 2003 集成的 Web 服务. 要安装IIS.添加可选组件或删除可选组件,请按以下步骤xx作: 单击开始,指向控制面板,然后单击"添加或删除程序". "添加或删除程序"工具就会启动. 单击添加/删除 Windows 组件. 显示

PHP中设置时区方法小结_php技巧

找到原因后,在网上搜索到了一些关于PHP的时区设置方法: 1.修改php.ini,在php.ini中找到data.timezone =去掉它前面的;号,然后设置data.timezone = "Asia/Shanghai";即可. 2.在程序PHP 5以上版本的程序代码中使用函数ini_set('date.timezone','Asia/Shanghai');或者date_default_timezone_set('Asia/Shanghai'); 一些常用的时区标识符说明: Asia

如何在Linux中设置透明代理_unix linux

1.什么是透明代理? 如果你问:我如何才能使得用户的浏览器不需要任何代理设置就能使用我的Squid cache代理服务器上网?此时你就需要使用透明代理.透明代理让你的客户端不需设置任何代理,当包经过透时代理服务器时实际上被重定向到squid代理服务器的代理端口(如8080),即由本地代理服务器向外请求所需数据然后拷贝给客户端. 2.我需要什么样的环境才能实现透明代理? a.客户端的windows PC的网关必须设成Squid代理服务器,因为既然你的browser中没有任何代理设置,你要访问某个站

win2008之IIS7中FTP设置技巧_win服务器

    在Windows Server 2008 服务器上,开启IIS部分功能后,就可以开设网站了,但是光靠手工开设站点,以及站点恢复,这是一件相当麻烦的事情,不仅涉及各账户权限,而且可能造成功能故障,稍有疏忽还会造成漏洞导致入侵的危险!     因此,强烈建议部署护卫神主机管理系统,达到安全.省心.快捷的站点管理效果,同时还可以开设或管理FTP.SQLServer和MySQL等.     接下来护卫神将为您讲述,如何在一个干净的Windows Server 2008 操作系统下,开启IIS,开

RHCE 系列(十):在 RHEL/CentOS 7 中设置 NTP(网络时间协议)服务器

RHCE 系列(十):在 RHEL/CentOS 7 中设置 NTP(网络时间协议)服务器 网络时间协议 - NTP - 是运行在传输层 123 号端口的 UDP 协议,它允许计算机通过网络同步准确时间.随着时间的流逝,计算机内部时间会出现漂移,这会导致时间不一致问题,尤其是对于服务器和客户端日志文件,或者你想要复制服务器的资源或数据库. 在 CentOS 和 RHEL 7 上安装 NTP 服务器 前置要求: CentOS 7 安装过程 RHEL 安装过程 额外要求: 注册并启用 RHEL 7

在Ubuntu中设置NFS服务器

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   在Ubuntu中设置NFS服务器,操作如下:我试着设置一个NFS服务器.我认为我的所有设置都没有问题,但是它没有能够正常的工作.返回了这样一条错误信息: "mount: RPC: Remote system error - Connection refused". 我什么地方没有考虑到么? 默认情况下,portmap进程只监听传入(loopb