上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
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 |
|
回頂端 |
|
|
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 文章: 1645
第 8 樓
|
發表於: 星期三 九月 05, 2012 8:03 am 文章主題: |
|
|
7樓 + 1 |
|
回頂端 |
|
|
mp484
註冊時間: 2006-08-08 文章: 84
第 9 樓
|
發表於: 星期五 九月 07, 2012 4:46 pm 文章主題: |
|
|
問題解決了!感謝! |
|
回頂端 |
|
|
syntech
註冊時間: 2003-05-16 文章: 4227 來自: Taipei,Taiwan
第 10 樓
|
發表於: 星期五 九月 07, 2012 5:12 pm 文章主題: |
|
|
不是每個版本的vfp 都有 try .... catch _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
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 _________________ 我的理想是能成为古代的一位富家公子,
日常生活就是喝茶去怡香院,没事带着一班小打手在街上调戏良家妇女。 |
|
回頂端 |
|
|
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 文章: 97
第 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 |
|
回頂端 |
|
|
|