of_reconnect.srf 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. $PBExportHeader$of_reconnect.srf
  2. global type of_reconnect from function_object
  3. end type
  4. forward prototypes
  5. global function integer of_reconnect (ref string arg_msg)
  6. end prototypes
  7. global function integer of_reconnect (ref string arg_msg);Int rslt = 1
  8. Disconnect Using sqlca;
  9. sqlca.DBMS = "SNC SQL Native Client(OLE DB)"
  10. sqlca.Database = sys_Database
  11. sqlca.UserID = sys_userid
  12. sqlca.DBPass = f_psw_bczh(sys_dbpass,1,sys_power_key)
  13. sqlca.LogID = sys_LoginID
  14. sqlca.LogPass = f_psw_bczh(sys_LoginPwd,1,sys_power_key)
  15. sqlca.ServerName = sys_ServerName
  16. sqlca.Lock = "RU"
  17. sqlca.AutoCommit = False
  18. //sqlca.dbparm = f_psw_bczh(sys_dbparm,1,sys_power_key)
  19. sqlca.DBParm = "Database= '" + sys_Database + "',PBTrimCharColumns='YES',pooling=false,CommitOnDisconnect='No'"
  20. Connect Using sqlca;
  21. If sqlca.SQLCode < 0 Then
  22. rslt = 0
  23. arg_msg = "重连数据库(主连接)失败!"+sqlca.SQLErrText
  24. Goto ext
  25. End If
  26. Disconnect Using id_sqlca;
  27. id_sqlca.DBMS = "SNC SQL Native Client(OLE DB)"
  28. id_sqlca.Database = sqlca.Database
  29. id_sqlca.UserID = sqlca.UserID
  30. id_sqlca.DBPass = sqlca.DBPass
  31. id_sqlca.LogID = sqlca.LogID
  32. id_sqlca.LogPass = sqlca.LogPass
  33. id_sqlca.ServerName = sqlca.ServerName
  34. id_sqlca.Lock = "RC"
  35. id_sqlca.AutoCommit = False
  36. id_sqlca.DBParm = "Database= '" + sqlca.Database + "',PBTrimCharColumns='YES',pooling=false,CommitOnDisconnect='No'"
  37. Connect Using id_sqlca;
  38. If id_sqlca.SQLCode < 0 Then
  39. rslt = 0
  40. arg_msg = "重连数据库(ID连接)失败!"+id_sqlca.SQLErrText
  41. Goto ext
  42. End If
  43. //Disconnect Using mainw_sqlca;
  44. //
  45. //mainw_sqlca.DBMS = "SNC SQL Native Client(OLE DB)"
  46. //mainw_sqlca.Database = sqlca.Database
  47. //mainw_sqlca.UserID = sqlca.UserID
  48. //mainw_sqlca.DBPass = sqlca.DBPass
  49. //mainw_sqlca.LogID = sqlca.LogID
  50. //mainw_sqlca.LogPass = sqlca.LogPass
  51. //mainw_sqlca.ServerName = sqlca.ServerName
  52. //mainw_sqlca.Lock = "RC"
  53. //mainw_sqlca.AutoCommit = False
  54. //
  55. //mainw_sqlca.DBParm = "Database= '" + sqlca.Database + "',PBTrimCharColumns='YES',pooling=false,CommitOnDisconnect='No'"
  56. //
  57. //Connect Using mainw_sqlca;
  58. //
  59. //
  60. //If mainw_sqlca.SQLCode < 0 Then
  61. // rslt = 0
  62. // arg_msg = "重连数据库(主界面连接)失败!"+mainw_sqlca.SQLErrText
  63. // Goto ext
  64. //End If
  65. If sys_DataBaseMsg <> '' Then
  66. Disconnect Using sys_email_sqlca;
  67. If f_connect_db_new(sys_ServerNameMsg,sys_DataBaseMsg,sys_LoginIDMsg,sys_LoginPwdMsg,sys_email_sqlca,arg_msg) = 0 Then
  68. rslt = 0
  69. arg_msg = "重连邮件数据库失败!"+sys_email_sqlca.SQLErrText
  70. Goto ext
  71. End If
  72. End If
  73. //重新设置已打开窗口dw的settransobject
  74. Long ll_i,ll_k,ll_l,ll_j,li_count
  75. DataWindow ldw_temp
  76. tab ltb_tmp
  77. For ll_j = 1 To ins_win_itmx
  78. If Not IsValid(ins_open_win[ll_j]) Then Continue
  79. li_count = UpperBound(ins_open_win[ll_j].Control[])
  80. For ll_i = 1 To li_count
  81. Choose Case ins_open_win[ll_j].Control[ll_i].TypeOf()
  82. Case DataWindow!
  83. arg_msg += ins_open_win[ll_j].ClassName() + ':'+ins_open_win[ll_j].Control[ll_i].ClassName()+'~r~n'
  84. ldw_temp = ins_open_win[ll_j].Control[ll_i]
  85. ldw_temp.SetTransObject(sqlca)
  86. Case tab!
  87. // arg_msg += ins_open_win[ll_j].ClassName() + ':'+ins_open_win[ll_j].Control[ll_i].ClassName()+'~r~n'
  88. ltb_tmp = ins_open_win[ll_j].Control[ll_i]
  89. For ll_k = 1 To UpperBound(ltb_tmp.Control[])
  90. // arg_msg += ins_open_win[ll_j].ClassName() + ':'+ltb_tmp.Control[ll_k].ClassName()+'~r~n'
  91. For ll_l = 1 To UpperBound(ltb_tmp.Control[ll_k].Control[])
  92. Choose Case ltb_tmp.Control[ll_k].Control[ll_l].TypeOf()
  93. Case DataWindow!
  94. // arg_msg += ins_open_win[ll_j].ClassName() + ':'+ltb_tmp.Control[ll_k].Control[ll_l].ClassName()+'~r~n'
  95. ldw_temp = ltb_tmp.Control[ll_k].Control[ll_l]
  96. ldw_temp.SetTransObject(sqlca)
  97. End Choose
  98. Next
  99. Next
  100. End Choose
  101. Next
  102. Next
  103. //重新设置主界面dw的settransobject
  104. If Not IsValid(w_main_scware) Then
  105. li_count = UpperBound(w_main_scware.Control[])
  106. For ll_i = 1 To li_count
  107. Choose Case w_main_scware.Control[ll_i].TypeOf()
  108. Case DataWindow!
  109. arg_msg += w_main_scware.ClassName() + ':'+w_main_scware.Control[ll_i].ClassName()+'~r~n'
  110. ldw_temp = w_main_scware.Control[ll_i]
  111. Choose Case ltb_tmp.Control[ll_k].Control[ll_l].ClassName()
  112. Case 'dw_sale_rece'
  113. ldw_temp.SetTransObject(sys_email_sqlca)
  114. Case 'dw_sale_send'
  115. ldw_temp.SetTransObject(sys_email_sqlca)
  116. Case 'dw_buy_send'
  117. ldw_temp.SetTransObject(sys_email_sqlca)
  118. Case 'dw_buy_feedback'
  119. ldw_temp.SetTransObject(sys_email_sqlca)
  120. Case 'dw_sale_msg'
  121. ldw_temp.SetTransObject(sys_email_sqlca)
  122. Case 'dw_buy_msg'
  123. ldw_temp.SetTransObject(sys_email_sqlca)
  124. Case Else
  125. ldw_temp.SetTransObject(sqlca)
  126. End Choose
  127. Case tab!
  128. ltb_tmp = w_main_scware.Control[ll_i]
  129. For ll_k = 1 To UpperBound(ltb_tmp.Control[])
  130. For ll_l = 1 To UpperBound(ltb_tmp.Control[ll_k].Control[])
  131. Choose Case ltb_tmp.Control[ll_k].Control[ll_l].TypeOf()
  132. Case DataWindow!
  133. arg_msg += w_main_scware.ClassName() + ':'+ltb_tmp.Control[ll_k].Control[ll_l].ClassName()+'~r~n'
  134. ldw_temp = ltb_tmp.Control[ll_k].Control[ll_l]
  135. Choose Case ltb_tmp.Control[ll_k].Control[ll_l].ClassName()
  136. Case 'dw_sale_rece'
  137. ldw_temp.SetTransObject(sys_email_sqlca)
  138. Case 'dw_sale_send'
  139. ldw_temp.SetTransObject(sys_email_sqlca)
  140. Case 'dw_buy_send'
  141. ldw_temp.SetTransObject(sys_email_sqlca)
  142. Case 'dw_buy_feedback'
  143. ldw_temp.SetTransObject(sys_email_sqlca)
  144. Case 'dw_sale_msg'
  145. ldw_temp.SetTransObject(sys_email_sqlca)
  146. Case 'dw_buy_msg'
  147. ldw_temp.SetTransObject(sys_email_sqlca)
  148. Case Else
  149. ldw_temp.SetTransObject(sqlca)
  150. End Choose
  151. End Choose
  152. Next
  153. Next
  154. End Choose
  155. Next
  156. End If
  157. ext:
  158. Return rslt
  159. end function