  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		Taien
 
 
  註冊時間: 2005-01-11 文章: 1
 
  第 1 樓
  | 
		
			
				 發表於: 星期四 十二月 02, 2010 8:56 pm    文章主題: VFP连接SQL SERVER 断网后再恢复网络的程序处理问题 | 
				     | 
			 
			
				
  | 
			 
			
				VFP连接SQL SERVER后,遇到断网片刻后恢复网络,但继续执行程序会报错:
 
Connectivity error: [Microsoft][ODBC SQL Server Driver]通讯链接失败
 
 
请问这个问题如何处理?
 
 
链接语句如下:
 
(1) m_cndbsql=[provider=msdasql;driver=SQL Server;Server=]+'121.12.112.*'+[;UID=]+'sa'+[;PWD=]+'密码+[;DATABASE=]+'concord_data'
 
 
(2) m_CnDB=SQLSTRINGCONNECT(m_cndbsql)
 
 
(3) mSQLRes=SQLExec(m_CnDB,"select * from cus_mstr")
 
 
未断网前,链接成功且正常,m_CnDB=1, mSQLRes=1
 
 
断网片刻后恢复网络:
 
 
情况一:再执行一次语句(3),则无法成功返回数据,且m_CnDB=1, mSQLRes=-1。
 
情况二:再执行一次语句(2)和语句(3), 则正常获取数据,但m_CnDB=2, mSQLRes=1。
 
 
请教:
 
(一)是否在检测断网后重新处理时,可以按情况二的方式处理一次? 但m_CnDB=2 是否意味着链接1还存在被闲置了? 如果断网多次,m_CnDB值会继续增加,会不会有任何不妥?
 
(二)断网问题是否有更好的处理方法? 
 
 
谢谢了! | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		yoncen
 
  
  註冊時間: 2005-08-29 文章: 35
 
  第 2 樓
  | 
		
			
				 發表於: 星期一 六月 06, 2011 6:54 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				*!* 重新连接服务器
 
Local llNeedConnServer
 
llNeedConnServer = .T.
 
If chkConnHandle(gnHandle) = .T. Then
 
	Local lnHandle
 
	lnHandle = SQLExec(gnHandle, "")
 
	If lnHandle > 0 Then
 
		llNeedConnServer = .F.
 
	Endif
 
Endif
 
If llNeedConnServer = .T. Then
 
	Local loHandle
 
	loHandle = Newobject("ConnectServer")
 
	loHandle.chkConnecting(1, .F.)
 
	If gnHandle > 0 Then
 
		*-- 读取配置参数
 
		Local lcIniFile
 
		lcIniFile = Addbs(gcSystemPath) + "System.ini"
 
		If File(lcIniFile) Then
 
			Local lcMAIN
 
			lcMAIN = GetIni(lcIniFile, "APPLICATION", "MAIN")
 
			If Not Empty(lcMAIN) Then
 
				*-- 检查主程序是否为最新版本,否则不允许重新连接
 
				If Not chkMainFileNeedUpdate(lcMAIN, .F.) Then
 
					SQLExec(gnHandle, "USE " + gcAccId) && 重新连接当前帐套
 
				Else
 
					SQLDisconnect(0) && 关闭所有连接
 
				Endif
 
			Else
 
				lcErrMsg = "系统配置文件 SYSTEM.INI 参数错误!" + ;
 
					Chr(13) + Chr(10) + "安装程序损坏,请重新安装系统。"
 
				Messagebox(lcErrMsg, 0 + 16 + 0, "系统错误")
 
			Endif
 
		Else
 
			lcErrMsg = "系统配置文件 SYSTEM.INI 不存在!" + ;
 
				CHR(13) + Chr(10) + "安装程序损坏,请重新安装系统。"
 
			Messagebox(lcErrMsg, 0 + 16 + 0, "系统错误")
 
		Endif
 
	Endif
 
Endif
 
This.QueryUnload() _________________ 從事企業ERP開發,學會止境,精益求精。 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |