$PBExportHeader$of_reconnect.srf global type of_reconnect from function_object end type forward prototypes global function integer of_reconnect (ref string arg_msg) end prototypes global function integer of_reconnect (ref string arg_msg);Int rslt = 1 Disconnect Using sqlca; sqlca.DBMS = "SNC SQL Native Client(OLE DB)" sqlca.Database = sys_Database sqlca.UserID = sys_userid sqlca.DBPass = f_psw_bczh(sys_dbpass,1,sys_power_key) sqlca.LogID = sys_LoginID sqlca.LogPass = f_psw_bczh(sys_LoginPwd,1,sys_power_key) sqlca.ServerName = sys_ServerName sqlca.Lock = "RU" sqlca.AutoCommit = False //sqlca.dbparm = f_psw_bczh(sys_dbparm,1,sys_power_key) sqlca.DBParm = "Database= '" + sys_Database + "',PBTrimCharColumns='YES',pooling=false,CommitOnDisconnect='No'" Connect Using sqlca; If sqlca.SQLCode < 0 Then rslt = 0 arg_msg = "重连数据库(主连接)失败!"+sqlca.SQLErrText Goto ext End If Disconnect Using id_sqlca; id_sqlca.DBMS = "SNC SQL Native Client(OLE DB)" id_sqlca.Database = sqlca.Database id_sqlca.UserID = sqlca.UserID id_sqlca.DBPass = sqlca.DBPass id_sqlca.LogID = sqlca.LogID id_sqlca.LogPass = sqlca.LogPass id_sqlca.ServerName = sqlca.ServerName id_sqlca.Lock = "RC" id_sqlca.AutoCommit = False id_sqlca.DBParm = "Database= '" + sqlca.Database + "',PBTrimCharColumns='YES',pooling=false,CommitOnDisconnect='No'" Connect Using id_sqlca; If id_sqlca.SQLCode < 0 Then rslt = 0 arg_msg = "重连数据库(ID连接)失败!"+id_sqlca.SQLErrText Goto ext End If //Disconnect Using mainw_sqlca; // //mainw_sqlca.DBMS = "SNC SQL Native Client(OLE DB)" //mainw_sqlca.Database = sqlca.Database //mainw_sqlca.UserID = sqlca.UserID //mainw_sqlca.DBPass = sqlca.DBPass //mainw_sqlca.LogID = sqlca.LogID //mainw_sqlca.LogPass = sqlca.LogPass //mainw_sqlca.ServerName = sqlca.ServerName //mainw_sqlca.Lock = "RC" //mainw_sqlca.AutoCommit = False // //mainw_sqlca.DBParm = "Database= '" + sqlca.Database + "',PBTrimCharColumns='YES',pooling=false,CommitOnDisconnect='No'" // //Connect Using mainw_sqlca; // // //If mainw_sqlca.SQLCode < 0 Then // rslt = 0 // arg_msg = "重连数据库(主界面连接)失败!"+mainw_sqlca.SQLErrText // Goto ext //End If If sys_DataBaseMsg <> '' Then Disconnect Using sys_email_sqlca; If f_connect_db_new(sys_ServerNameMsg,sys_DataBaseMsg,sys_LoginIDMsg,sys_LoginPwdMsg,sys_email_sqlca,arg_msg) = 0 Then rslt = 0 arg_msg = "重连邮件数据库失败!"+sys_email_sqlca.SQLErrText Goto ext End If End If //重新设置已打开窗口dw的settransobject Long ll_i,ll_k,ll_l,ll_j,li_count DataWindow ldw_temp tab ltb_tmp For ll_j = 1 To ins_win_itmx If Not IsValid(ins_open_win[ll_j]) Then Continue li_count = UpperBound(ins_open_win[ll_j].Control[]) For ll_i = 1 To li_count Choose Case ins_open_win[ll_j].Control[ll_i].TypeOf() Case DataWindow! arg_msg += ins_open_win[ll_j].ClassName() + ':'+ins_open_win[ll_j].Control[ll_i].ClassName()+'~r~n' ldw_temp = ins_open_win[ll_j].Control[ll_i] ldw_temp.SetTransObject(sqlca) Case tab! // arg_msg += ins_open_win[ll_j].ClassName() + ':'+ins_open_win[ll_j].Control[ll_i].ClassName()+'~r~n' ltb_tmp = ins_open_win[ll_j].Control[ll_i] For ll_k = 1 To UpperBound(ltb_tmp.Control[]) // arg_msg += ins_open_win[ll_j].ClassName() + ':'+ltb_tmp.Control[ll_k].ClassName()+'~r~n' For ll_l = 1 To UpperBound(ltb_tmp.Control[ll_k].Control[]) Choose Case ltb_tmp.Control[ll_k].Control[ll_l].TypeOf() Case DataWindow! // arg_msg += ins_open_win[ll_j].ClassName() + ':'+ltb_tmp.Control[ll_k].Control[ll_l].ClassName()+'~r~n' ldw_temp = ltb_tmp.Control[ll_k].Control[ll_l] ldw_temp.SetTransObject(sqlca) End Choose Next Next End Choose Next Next //重新设置主界面dw的settransobject If Not IsValid(w_main_scware) Then li_count = UpperBound(w_main_scware.Control[]) For ll_i = 1 To li_count Choose Case w_main_scware.Control[ll_i].TypeOf() Case DataWindow! arg_msg += w_main_scware.ClassName() + ':'+w_main_scware.Control[ll_i].ClassName()+'~r~n' ldw_temp = w_main_scware.Control[ll_i] Choose Case ltb_tmp.Control[ll_k].Control[ll_l].ClassName() Case 'dw_sale_rece' ldw_temp.SetTransObject(sys_email_sqlca) Case 'dw_sale_send' ldw_temp.SetTransObject(sys_email_sqlca) Case 'dw_buy_send' ldw_temp.SetTransObject(sys_email_sqlca) Case 'dw_buy_feedback' ldw_temp.SetTransObject(sys_email_sqlca) Case 'dw_sale_msg' ldw_temp.SetTransObject(sys_email_sqlca) Case 'dw_buy_msg' ldw_temp.SetTransObject(sys_email_sqlca) Case Else ldw_temp.SetTransObject(sqlca) End Choose Case tab! ltb_tmp = w_main_scware.Control[ll_i] For ll_k = 1 To UpperBound(ltb_tmp.Control[]) For ll_l = 1 To UpperBound(ltb_tmp.Control[ll_k].Control[]) Choose Case ltb_tmp.Control[ll_k].Control[ll_l].TypeOf() Case DataWindow! arg_msg += w_main_scware.ClassName() + ':'+ltb_tmp.Control[ll_k].Control[ll_l].ClassName()+'~r~n' ldw_temp = ltb_tmp.Control[ll_k].Control[ll_l] Choose Case ltb_tmp.Control[ll_k].Control[ll_l].ClassName() Case 'dw_sale_rece' ldw_temp.SetTransObject(sys_email_sqlca) Case 'dw_sale_send' ldw_temp.SetTransObject(sys_email_sqlca) Case 'dw_buy_send' ldw_temp.SetTransObject(sys_email_sqlca) Case 'dw_buy_feedback' ldw_temp.SetTransObject(sys_email_sqlca) Case 'dw_sale_msg' ldw_temp.SetTransObject(sys_email_sqlca) Case 'dw_buy_msg' ldw_temp.SetTransObject(sys_email_sqlca) Case Else ldw_temp.SetTransObject(sqlca) End Choose End Choose Next Next End Choose Next End If ext: Return rslt end function