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

請問如何知道記錄編號是否存在?

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



註冊時間: 2006-08-08
文章: 84


第 1 樓

發表發表於: 星期二 九月 04, 2012 5:31 pm    文章主題: 請問如何知道記錄編號是否存在? 引言回覆

以recno()取得記錄編號後,如果因為set filter to 的篩選條件改變(例如動態的資料修改),可能造成goto 回原來的紀錄錯誤,如何在Goto之前先判斷現在的記錄是否存在?謝謝!
回頂端
檢視會員個人資料 發送私人訊息
nelsonchuang



註冊時間: 2003-09-04
文章: 563
來自: 臺灣

第 2 樓

發表發表於: 星期二 九月 04, 2012 5:54 pm    文章主題: Re: 請問如何知道記錄編號是否存在? 引言回覆

mp484 寫到:
以recno()取得記錄編號後,如果因為set filter to 的篩選條件改變(例如動態的資料修改),可能造成goto 回原來的紀錄錯誤,如何在Goto之前先判斷現在的記錄是否存在?謝謝!

以sql 作條件查詢即可~

_________________
大家好,請多指教
回頂端
檢視會員個人資料 發送私人訊息
mp484



註冊時間: 2006-08-08
文章: 84


第 3 樓

發表發表於: 星期二 九月 04, 2012 6:07 pm    文章主題: 引言回覆

是這樣嗎?

Select * form 表格 where recno()=123 into cursor 暫存檔
select 暫存檔
if eof()
=messagebox("沒有這個紀錄編號!")
else
=messagebox("紀錄編號找到了!")
endif
回頂端
檢視會員個人資料 發送私人訊息
mp484



註冊時間: 2006-08-08
文章: 84


第 4 樓

發表發表於: 星期二 九月 04, 2012 6:35 pm    文章主題: 引言回覆

解決了!我用事先紀錄資料表索引值及記錄編號的方法,在Goto回原記錄編號之前,先以Seek搜尋該筆資料在不在,如果不再就表示原本的紀錄值已經不存在了,不可以Goto回去!

不過這樣還是很麻煩,有沒有指令可以直接判斷記錄編號在不在呢?例如:

recno(123)=.T. ..........這個方法已經試過不行了!

請指教!
回頂端
檢視會員個人資料 發送私人訊息
nelsonchuang



註冊時間: 2003-09-04
文章: 563
來自: 臺灣

第 5 樓

發表發表於: 星期二 九月 04, 2012 6:46 pm    文章主題: 引言回覆

mp484 寫到:
是這樣嗎?

Select * form 表格 where recno()=123 into cursor 暫存檔
select 暫存檔
if eof()
=messagebox("沒有這個紀錄編號!")
else
=messagebox("紀錄編號找到了!")
endif

這個就不錯啦,可以自行再改善一下....

_________________
大家好,請多指教
回頂端
檢視會員個人資料 發送私人訊息
Patrick Wu



註冊時間: 2007-01-03
文章: 223
來自: 台北市

第 6 樓

發表發表於: 星期二 九月 04, 2012 7:18 pm    文章主題: 引言回覆

後學的作法 供 mp484 先進參考

STORE RECNO() TO M->OLD_REC

SET FILTER TO .....

IF M->OLD_REC != 0
LOCATE FOR RECNO() = M->OLD_REC
IF FOUND()
GOTO M->OLD_REC
ELSE
GOTO TOP
ENDIF
ELSE
GOTO TOP
ENDIF
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
sean27



註冊時間: 2008-08-17
文章: 49


第 7 樓

發表發表於: 星期二 九月 04, 2012 9:02 pm    文章主題: 引言回覆

判斷執行是否錯誤, 可以用 TRY 指令
例如:
RECNO_TMP = RECNO()
SET FILTER TO ....

TRY
GOTO RECNO_TMP
CATCH TO ERR_TMP
ENDTRY
IF TYPE("ERR_TMP")="O"
? "GOTO 找不到紀錄:"+STR(RECNO_TMP)
ENDIF

_________________
foxpro & php 初學者


sean27 在 星期三 九月 05, 2012 3:13 pm 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息
ckp6250



註冊時間: 2004-07-30
文章: 1644


第 8 樓

發表發表於: 星期三 九月 05, 2012 8:03 am    文章主題: 引言回覆

7樓 + 1
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
mp484



註冊時間: 2006-08-08
文章: 84


第 9 樓

發表發表於: 星期五 九月 07, 2012 4:46 pm    文章主題: 引言回覆

問題解決了!感謝!
回頂端
檢視會員個人資料 發送私人訊息
syntech



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

第 10 樓

發表發表於: 星期五 九月 07, 2012 5:12 pm    文章主題: 引言回覆

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

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



註冊時間: 2004-11-18
文章: 262
來自: 广东省深圳市

第 11 樓

發表發表於: 星期二 九月 18, 2012 4:35 pm    文章主題: 引言回覆

不建议使用SET FILTER TO 这种方式了。不知你的具体业务是如何,如果要循环处理一条符合条件的记录,可以用SCAN FOR ....ENDSCAN,如果要得出一批符合条件的记录,可以用SELECT * FROM xx INTO CURSOR xx READWRIT,SET FILTER TO 加 GOTO方式 ,容易跳错记录,造成RECORED OUT OF RANGE
_________________
我的理想是能成为古代的一位富家公子,
日常生活就是喝茶去怡香院,没事带着一班小打手在街上调戏良家妇女。
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
mp484



註冊時間: 2006-08-08
文章: 84


第 12 樓

發表發表於: 星期四 九月 20, 2012 6:44 pm    文章主題: 引言回覆

因為使用SELECT * FROM xx INTO CURSOR xx READWRIT的方法,Grid的資料會跑掉,無法正常顯示

採用Set Filter to 是因為Grid不用重新畫一次或變成空白
回頂端
檢視會員個人資料 發送私人訊息
CCB2000



註冊時間: 2009-03-25
文章: 95


第 13 樓

發表發表於: 星期五 九月 21, 2012 8:03 am    文章主題: 引言回覆

GO m.q_rec
IF (ALLTRIM(FILTER())=="".OR.EVAL(FILTER())).AND.;
((SET("DELETED")="ON".AND.!DELETED()).OR.(!SET("DELETED")="ON"))
ELSE
GO TOP
ENDI

_________________
VFP C++編譯軟件 (VFP C++ Compiler): http://www.baiyujia.com/vfpcompiler
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

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


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