程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase綜合文章 >> C/S體系中設置工作站與服務器時鐘同步

C/S體系中設置工作站與服務器時鐘同步

編輯:SyBase綜合文章

摘要: 在實際應用中,經常要求客戶機/服務器體系結構中各工作站的時鐘與服務器的時鐘保持同步;本文基於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. 下一頁:
Copyright © 程式師世界 All Rights Reserved