VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

vfp9遠端視圖view 無法更新後端mssql table

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
jakan9



註冊時間: 2003-10-22
文章: 130


第 1 樓

發表發表於: 星期五 三月 13, 2009 12:17 pm    文章主題: vfp9遠端視圖view 無法更新後端mssql table 引言回覆

原本是用vfp6 ,用view可更新後端mssql2000 資料庫,下tableupdate(),
要改成用VFP9用SET STEP ON ,tableupdate(),沒有error,也用強迫更新,在vfp9中就是無法將資料寫回資料庫,可是在vfp6 中就可,沒有問題
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 2 樓

發表發表於: 星期五 三月 13, 2009 3:18 pm    文章主題: 引言回覆

你可能要檢查 VFP9 與 VFP6 的設定哪裡不同吧
_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
Terry1211



註冊時間: 2008-03-13
文章: 63


第 3 樓

發表發表於: 星期五 三月 13, 2009 4:10 pm    文章主題: 引言回覆

Help裡有介紹 TableUpdate的Error要用aerror()去抓 ~~
回頂端
檢視會員個人資料 發送私人訊息
jakan9



註冊時間: 2003-10-22
文章: 130


第 4 樓

發表發表於: 星期六 三月 14, 2009 11:37 am    文章主題: 引言回覆

tableupdate傳回值是.t. 沒有error,本地的local 有更新,但tableupdate ,mssql就是沒有動作,
我的程式在vfp6,執行新增,修改.刪除 ok,但用vfp 9 只可brow,不可新增,修改.刪除,我的view 的作法是

CREATE SQL VIEW "user_VIEW" ;
REMOTE CONNECT "conn_sql" ;
AS SELECT * FROM dbo.user WHERE user.userid = ?pID ORDER BY user.userid, user.compid

DBSetProp('user_VIEW', 'View', 'UpdateType', 1)
DBSetProp('user_VIEW', 'View', 'WhereType', 4)
DBSetProp('user_VIEW', 'View', 'FetchMemo', .T.)
DBSetProp('user_VIEW', 'View', 'SendUpdates', .T.)
DBSetProp('user_VIEW', 'View', 'UseMemoSize', 255)
DBSetProp('user_VIEW', 'View', 'FetchSize', 1000)
DBSetProp('user_VIEW', 'View', 'MaxRecords', -1)
DBSetProp('user_VIEW', 'View', 'Tables', 'dbo.user')
DBSetProp('user_VIEW', 'View', 'Prepared', .F.)
DBSetProp('user_VIEW', 'View', 'CompareMemo', .T.)
DBSetProp('user_VIEW', 'View', 'FetchAsNeeded', .F.)
DBSetProp('user_VIEW', 'View', 'FetchSize', 1000)
DBSetProp('user_VIEW', 'View', 'Comment', "")
DBSetProp('user_VIEW', 'View', 'BatchUpdateCount', 1)
DBSetProp('user_VIEW', 'View', 'ShareConnection', .T.)

DBSetProp('user_VIEW.userid', 'Field', 'KeyField', .T.)
DBSetProp('user_VIEW.userid', 'Field', 'Updatable', .T.)
DBSetProp('user_VIEW.userid', 'Field', 'UpdateName', 'dbo.user.userid')
DBSetProp('user_VIEW.userid', 'Field', 'DataType', "C(10)")

DBSetProp('user_VIEW.compid', 'Field', 'KeyField', .T.)
DBSetProp('user_VIEW.compid', 'Field', 'Updatable', .T.)
DBSetProp('user_VIEW.compid', 'Field', 'UpdateName', 'dbo.user.compid')
DBSetProp('user_VIEW.compid', 'Field', 'DataType', "C(1)")

在程式button click 下如下指令可是就是在tableudpate,無法更新後端

SELE user_view
REQUERY()
DELE ALL
TABLEUPDATE(1, .T.)
查vfp6與vfp9 dbsetprop用法 是一樣的
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 5 樓

發表發表於: 星期一 三月 16, 2009 10:58 am    文章主題: 引言回覆

你可以使用 SQL Server Profiler 監視,
在 TABLEUPDATE(1, .T.) 時,是否產生正確的sql command

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
jakan9



註冊時間: 2003-10-22
文章: 130


第 6 樓

發表發表於: 星期一 三月 16, 2009 5:10 pm    文章主題: 引言回覆

[quote="syntech"]你可以使用 SQL Server Profiler 監視,
在 TABLEUPDATE(1, .T.) 時,是否產生正確的sql command[/quote]

我用這個方法監視做insert 的動作
在vfp9 出現
exec sp_executesql N'SELECT * FROM dbo.user WHERE user.userid = @P1 ORDER BY user.userid, user.compid', N'@P1 varchar(10)', '000000 '

exec sp_executesql N'INSERT INTO dbo.user (userid,compid) VALUES (@P1,@P2)', N'@P1 char(10),@P2 char(1)', '000000 ', 'A'

IF @@TRANCOUNT > 0 ROLLBACK TRAN


在vfp6 出現

exec sp_executesql N'SELECT * FROM dbo.user WHERE user.userid = @P1 ORDER BY user.userid, user.compid', N'@P1 varchar(10)', '000000 '

exec sp_executesql N'INSERT INTO dbo.user (userid,compid) VALUES (@P1,@P2)', N'@P1 char(10),@P2 char(1)', '000000 ', 'A'

IF @@TRANCOUNT > 0 COMMIT TRAN

終於找出不一樣的地方在最後一行,在vfp 6 出現commit 在vfp 9 出現 ROLLBACK 所以vfp 9 無法insert,可是都是一樣的指令,TABLEUPDATE(1, .T.),不知該如何
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 7 樓

發表發表於: 星期一 三月 16, 2009 5:18 pm    文章主題: 引言回覆

最後當然是因為 rollback 才會變成資料回復原狀.
問題應該是 insert 發生什麼事情,
才導致需要作 rollback

可能你需要想辦法攔截sql server 發生的錯誤

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
jakan9



註冊時間: 2003-10-22
文章: 130


第 8 樓

發表發表於: 星期五 三月 27, 2009 2:00 pm    文章主題: 引言回覆

實在找不出原因,改用ado 或 spt 方式來做,
因為tableupdate 不知道做了什麼,傳回.t. 值,又不能更新
回頂端
檢視會員個人資料 發送私人訊息
jakan9



註冊時間: 2003-10-22
文章: 130


第 9 樓

發表發表於: 星期四 四月 02, 2009 5:11 pm    文章主題: 引言回覆

終於找到原因,真的很簡單,在vfp6 下tableudpate 即可,在vfp9 要在tableupdate
後,再下sqlcommit.
回頂端
檢視會員個人資料 發送私人訊息
goodnight



註冊時間: 2008-10-13
文章: 473
來自: 台南市

第 10 樓

發表發表於: 星期五 五月 15, 2009 8:55 am    文章主題: 引言回覆

jakan9 寫到:
終於找到原因,真的很簡單,在vfp6 下tableudpate 即可,在vfp9 要在tableupdate
後,再下sqlcommit.


我個人對這還不熟, 但不是只要下 TABLEUPDATE() 就可以了嗎??
HELP 也沒提到要再下 SQLCOMMIT 真是奇怪, 有沒有人可以指導一下呢
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 雅虎訊息通 MSN Messenger
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作