  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		foxabc
 
 
  註冊時間: 2012-04-21 文章: 61
 
  第 1 樓
  | 
		
			
				 發表於: 星期五 十一月 14, 2014 1:12 pm    文章主題: ca事務下出錯... | 
				     | 
			 
			
				
  | 
			 
			
				作業環境 vfp9-ca  WhereType=4
 
 
新增一筆資料後,測試下列程序
 
SQLSetProp(ConnectHandle,"Transactions",2)  
 
result = TableUpdate(.F.)  
 
if result   
 
    SQLRollback(ConnectHandle) 
 
      SQLSetProp(ConnectHandle,"Transactions",1)
 
endif
 
 
 
若在執行
 
SQLSetProp(ConnectHandle,"Transactions",2)  
 
result = TableUpdate(.F.)  
 
if result   
 
   SQLCommit(ConnectHandle)   
 
   SQLSetProp(onnectHandle,"Transactions",1)  
 
endif
 
結果是儲存成功 但是後端沒此筆資料
 
 
 
那放棄此筆資料
 
aaa= tablerevert() 
 
結果 aaa= 0
 
 
 
想問一下,為何這一筆資料變成孤兒
 
若是修改資料時,執行上述程式則沒問題
 
 
剛學c/s +ca 我功力平平,參考資料又少,搞得我頭暈><...
 
. | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		Batman
 
 
  註冊時間: 2003-11-15 文章: 348
 
  第 2 樓
  | 
		
			
				 發表於: 星期日 十一月 16, 2014 4:56 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				| 好像要將更新的條件寫出來才可回答, 因不知你是更新本地已設定buffer表, 或是直接更新後台資料表, 另SQLSetProp(onnectHandle,"Transactions",1) 應寫在最後的endif之後 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		syntech
 
 
  註冊時間: 2003-05-16 文章: 4252 來自: Taipei,Taiwan
  第 3 樓
  | 
		
			
				 發表於: 星期二 十一月 18, 2014 9:28 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				用ADO 連接 SQL SERVER,
 
HELP 是說要設定 ConflictCheckType 屬性,
 
預設是不檢查.
 
可能因此造成你更新錯誤而沒有錯誤訊息.
 
 
看看你後端資料庫有沒有監視程式,
 
查一下是否真的發生錯誤.
 
 
CursorAdapter 的作業方式與spt或是remote view 不一樣,
 
用傳統的想法可能會出問題. _________________ 如果公司有下列困擾:
 
1. 找不到便宜,快速,簡易的 生產排程軟體
 
2. 不知道如何快速排定 採購計劃
 
3. 成本抓不準,自己算比軟體算有用
 
4. 想學習系統規劃,想找系統架構的顧問
 
 
請聯絡我們,也許我們幫得上忙 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		foxabc
 
 
  註冊時間: 2012-04-21 文章: 61
 
  第 4 樓
  | 
		
			
				 發表於: 星期二 十一月 18, 2014 10:50 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				感謝回復
 
 
BufferModeOverride=5
 
ConflictCheckType=3
 
 
我的疑問是若同時新增2筆資料,啟動事務,儲存檔案
 
SQLSetProp(ConnectHandle,"Transactions",2) 
 
result = TableUpdate(.T.) 
 
結果 result =.F.
 
 
這時若第一筆成功,第二筆失敗則回滾
 
SQLRollback(ConnectHandle) 
 
SQLSetProp(ConnectHandle,"Transactions",1) 
 
 
 
那我更改第二筆資料後,再次儲存
 
SQLSetProp(ConnectHandle,"Transactions",2) 
 
result = TableUpdate(.T.) 
 
結果 result =.T.
 
SQLCommit(ConnectHandle) 
 
SQLSetProp(onnectHandle,"Transactions",1) 
 
 
 
我看sqlserver profiler 只發送第二筆新增命令,第一筆沒動作
 
且第一筆資料在第一次雖儲存成功,但回滾,並未真正寫入後端
 
 
 
在下
 
ca.cursorrefresh()
 
thisform.refresh
 
第一筆資料消失
 
 
移至其他資料時報錯 别名“名”的表缓冲区含有未实现的修改 (错误 1545) | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |