您现在的位置是:首页 >

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

火烧 2022-05-18 13:53:23 1057
在C/S体系中设置工作站与服务器的时钟同步   摘要  在实际应用中 经常要求客户机/服务器体系结构中各工作站的时钟与服务器的时钟保持同步 本文基于SYBASE数据库 Power uilder开发工具

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

  摘要

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

  一 前言

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

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

  二 实现方法

   连接数据库

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

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

   > 应用对象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() //调用自定义函数完成设置本地工作站时间     > 应用对象Close事件中的脚本如下

  DISCONNECT Using SQLCA;

   定义WIN 的API函数为外部函数

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

  FUNCTION LONG SetLocalTime (ref systemtime systimeptr) LIBRARY Kernel dll

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

   定义存取时间参数的结构

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

  integer wyear  integer wmonth  integer wdayofweek  integer wday  integer whour  integer wminute  integer wsecond  integer wmillisecond     创建用户自定义函数来完成设置工作站时间

  创建一个名为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=   SetLocalTime(s_systime) //调用WIN API函数 设置工作站时间      创建可执行应用程序

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

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

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

  三 结束语

lishixinzhi/Article/program/SQL/201311/16287  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码