//====================================================================
// 函数: of_ReConnectDB()
//--------------------------------------------------------------------
// 描述: 重新连接数据库
//--------------------------------------------------------------------
// 参数:
//--------------------------------------------------------------------
// 返回: integer
//--------------------------------------------------------------------
// 作者: 威迅科技 日期: 2015-09-29 14:49
//--------------------------------------------------------------------
// Copyright 2000-2020, All rights reserved.
//--------------------------------------------------------------------
// 修改历史:
//
//====================================================================
n_ws_dbservice lnv_dbsrv
Integer li_RtValue,li_Value
Integer li_i,li_Count
window lw_sheet[]
n_ws_attrib_class lnv_attrib
SELECT Col INTO :li_Value FROM ( SELECT 1 AS Col ) t1; /*判断是否能连接数据库*/
IF IsNull(li_Value) THEN li_Value = 0
IF li_Value = 1 THEN RETURN NO_ACTION
lnv_attrib.sTitle = "连接数据库"
lnv_attrib.sTips = "正在重新连接数据库,请稍候..."
lnv_attrib.sPicture = "Images\ConnectDB.gif"
of_PromptTips(TRUE,lnv_attrib)
IF SQLCA.of_IsConnected() THEN SQLCA.of_DisConnect() /*断开原来的连接*/
lnv_dbsrv = CREATE n_ws_dbservice
li_RtValue = lnv_dbsrv.of_InitConnect(is_AppIniFile) /*初始化数据库连接参数*/
IF li_RtValue = SUCCESS THEN
li_RtValue = lnv_dbsrv.of_ConnectDB() /*连接数据库*/
IF li_RtValue = SUCCESS THEN
IF IsValid(iw_frame) THEN
IF IsValid(iw_frame.inv_sheetManager) THEN
li_Count = iw_frame.inv_sheetManager.of_GetSheets(lw_sheet[]) /*取得sheet窗口*/
FOR li_i = 1 TO li_Count
of_ReConnectDB_Object(lw_sheet[li_i]) /*循环sheet窗口*/
NEXT
END IF
END IF
END IF
END IF
IF IsValid(lnv_dbsrv) THEN DESTROY lnv_dbsrv
of_PromptTips(FALSE)
RETURN li_RtValue
//====================================================================
// 函数: of_ReConnectDB_Object()
//--------------------------------------------------------------------
// 描述: 重新连接数据库
//--------------------------------------------------------------------
// 参数:
// value PowerObject apo_Object
//--------------------------------------------------------------------
// 返回: integer
//--------------------------------------------------------------------
// 作者: 威迅科技 日期: 2015-09-29 23:41
//--------------------------------------------------------------------
// Copyright 2000-2020, All rights reserved.
//--------------------------------------------------------------------
// 修改历史:
//
//====================================================================
Window lw_sheet
Tab ltb_Tab
UserObject luo_Object
u_dw ldw_dw
Integer li_i,li_Count
CHOOSE CASE apo_Object.TypeOf()
CASE Window!
lw_sheet = apo_Object
li_Count = UpperBound(lw_sheet.Control[])
FOR li_i = 1 TO li_Count
of_ReConnectDB_Object(lw_sheet.Control[li_i])
NEXT
CASE Tab!
ltb_Tab = apo_Object
li_Count = UpperBound(ltb_Tab.Control[])
FOR li_i = 1 TO li_Count
of_ReConnectDB_Object(ltb_Tab.Control[li_i])
NEXT
CASE UserObject!
luo_Object = apo_Object
li_Count = UpperBound(luo_Object.Control[])
FOR li_i = 1 TO li_Count
of_ReConnectDB_Object(luo_Object.Control[li_i])
NEXT
CASE DataWindow!
ldw_dw = apo_Object
IF IsValid(ldw_dw.inv_linkage) THEN
ldw_dw.inv_linkage.of_SetTransObject(SQLCA)
ELSE
IF ldw_dw.Visible THEN
ldw_dw.of_SetTransObject(SQLCA)
END IF
END IF
END CHOOSE
RETURN SUCCESS