 |
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
snciset
註冊時間: 2007-12-06 文章: 66 來自: 台北
第 1 樓
|
發表於: 星期一 一月 14, 2008 8:50 pm 文章主題: 請問新增一把紀錄問題 |
|
|
我在資料庫中設ID為Primary,但新增紀錄時,當鍵入ID於相對應之text時,我用seek找資料庫中ID,沒重複才新增(我不想用系統中之trigger,而form中text之control source已設為ID之欄位)
但資料庫中雖有設CURSORSETPROP(”Buffering”,5),實體紀錄中ID雖沒重複,但seek總會找至buffer中新增的紀錄之ID後就發生found(),以致無法新增,如何排除呢? (因為新增時text,我用tracer找buffer中即最後一筆剛鍵入之ID欄位)
各位先進麻煩指教一下LKK的我
_________________ 一個LKK的勞工,只為了維護15年前寫的一些在dos下clipper的東東,96年11月決定學foxpro |
|
回頂端 |
|
 |
garfield Site Admin

註冊時間: 2003-01-30 文章: 2160
第 2 樓
|
發表於: 星期二 一月 15, 2008 12:19 am 文章主題: |
|
|
用
old_select = select()
select ID from yourtable where ID=this.value into cursor ztemp
if recc()>0
秀重複了.
endif
use
sele (old_select) _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
 |
snciset
註冊時間: 2007-12-06 文章: 66 來自: 台北
第 3 樓
|
發表於: 星期二 一月 15, 2008 8:56 am 文章主題: |
|
|
請教garfield大哥,可不可以用copy to ztemp for ID = this.value 之傳統指令呢?因我SQL之指令不大熟悉,但用copy 指令會不會很慢,如用SQL後產生之Ztemp,use後會自動刪除嗎?如ID欄位有作索引,copy指令會快一點嗎? _________________ 一個LKK的勞工,只為了維護15年前寫的一些在dos下clipper的東東,96年11月決定學foxpro |
|
回頂端 |
|
 |
garfield Site Admin

註冊時間: 2003-01-30 文章: 2160
第 4 樓
|
發表於: 星期二 一月 15, 2008 10:06 am 文章主題: |
|
|
只要有建立索引欄位, 不管是copy 或 locate 都很快,
COPY to 會影響目前的工作區的recno(),
且COPY完還須要USE檔案,
判斷完又須要刪除檔案,
SELECT SQL指令完全沒有這種困擾,
這是VFP必學指令, 請花些時間看一看HELP裡的範例. _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
 |
syntech
註冊時間: 2003-05-16 文章: 4249 來自: Taipei,Taiwan
第 5 樓
|
發表於: 星期二 一月 15, 2008 10:13 am 文章主題: |
|
|
old school 的方式是用 count for 搭配 recno() 在新記錄上會 <0 的方式,
不過我們目前的確是以 garfield 兄的方式為基礎之一. _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙
syntech 在 星期二 一月 15, 2008 12:31 pm 作了第 1 次修改 |
|
回頂端 |
|
 |
snciset
註冊時間: 2007-12-06 文章: 66 來自: 台北
第 6 樓
|
發表於: 星期二 一月 15, 2008 10:56 am 文章主題: |
|
|
IF ID_OK &&ID簡檢查正確
OLD_SELECT = SELECT()
SELECT MEM_ID FROM MEMBER WHERE MEM_ID=THIS.VALUE INTO CURSOR ZTEMP
IF RECC()>0
SELE (OLD_SELECT)
SET ORDER TO TAG MEM_IDX
SEEK THIS.VALUE
TABLEREVERT(.T.)
=MESSAGEBOX("這個人已經入過會了,先問問吧!",4
THISFORM.REFRESH
ENDIF
可是我到trace 中看執行到 IF RECC()>0 時,我看tracer 中 之reccount() 仍為2000多筆(即為
member的紀錄數),照理不是應該為1 或 0嗎?這樣看起來好像沒在ztemp裡耶~~
snciset 在 星期二 一月 15, 2008 9:45 pm 作了第 1 次修改 |
|
回頂端 |
|
 |
snciset
註冊時間: 2007-12-06 文章: 66 來自: 台北
第 7 樓
|
發表於: 星期二 一月 15, 2008 4:27 pm 文章主題: |
|
|
我剛剛在form上多增加了一個temp_id.text ,位置蓋在原id上,故輸入就不會連動control source了,故seek資料就不會有找到buffer中之剛輸入的ID的問題,如確定就紀錄沒有已經有的ID,再把temp_id.value寫在id.text,再把temp_id.text隱藏,問題就解決了,方法我知道很笨,但總算解決了,只是我因是初學者,請問各為高手有何比較好的方法呢? _________________ 一個LKK的勞工,只為了維護15年前寫的一些在dos下clipper的東東,96年11月決定學foxpro |
|
回頂端 |
|
 |
syntech
註冊時間: 2003-05-16 文章: 4249 來自: Taipei,Taiwan
第 8 樓
|
發表於: 星期二 一月 15, 2008 4:30 pm 文章主題: |
|
|
差不多.
KEY 的部份不加 CONTROLSOURCE.
改用人為填值及取值 _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
 |
snciset
註冊時間: 2007-12-06 文章: 66 來自: 台北
第 9 樓
|
發表於: 星期二 一月 15, 2008 4:35 pm 文章主題: |
|
|
對呀,我在新增的temp_id.text沒加control source才解決的,但我不知各為經驗豐富的foxpro高手認為這樣的方法笨嗎,這是我第一次寫foxpro的東東,應該說第一次在windows寫東西,不知道耶,好像有點土法煉鋼的感覺,因為差不多快10年沒coding過了,真的是有點累~~ _________________ 一個LKK的勞工,只為了維護15年前寫的一些在dos下clipper的東東,96年11月決定學foxpro |
|
回頂端 |
|
 |
nelsonchuang
註冊時間: 2003-09-04 文章: 563 來自: 臺灣
第 10 樓
|
發表於: 星期二 一月 15, 2008 4:48 pm 文章主題: |
|
|
你用暫存檔不會好一點嗎@@?一個暫存檔萬歲的人... _________________ 大家好,請多指教 |
|
回頂端 |
|
 |
snciset
註冊時間: 2007-12-06 文章: 66 來自: 台北
第 11 樓
|
發表於: 星期二 一月 15, 2008 9:31 pm 文章主題: |
|
|
回覆nelsonchuang:
garfield大哥有教我SELECT MEM_ID FROM MEMBER WHERE MEM_ID=THIS.VALUE INTO CURSOR ZTEMP
可是不知是否因id.text 之control source指定的關係,可是我不知該怎麼下recc()的指令,結果用暫存檔之ztemp還是不行耶,我的coding已經PO在上面了 _________________ 一個LKK的勞工,只為了維護15年前寫的一些在dos下clipper的東東,96年11月決定學foxpro |
|
回頂端 |
|
 |
syntech
註冊時間: 2003-05-16 文章: 4249 來自: Taipei,Taiwan
第 12 樓
|
發表於: 星期三 一月 16, 2008 4:03 pm 文章主題: |
|
|
回 9 樓:
實際上,老方法不見得不好.
暫存檔的方式實際上也有人用了十幾,二十年了.
能抓老鼠就是好貓
回 11 樓
可以先用一個變數去接,
例如
代碼: |
IF ID_OK &&ID簡檢查正確
OLD_SELECT = SELECT()
STORE ALLTRIM(THIS.VALUE) TO sKEYFD
SELECT MEM_ID FROM MEMBER WHERE MEM_ID==sKEYFD INTO CURSOR ZTEMP
IF SELECT("ZTEMP") >0
SELECT ZTEMP
IF RECCOUNT()>0
SELECT &OLD_SELECT
SET ORDER TO TAG MEM_IDX
SEEK THIS.VALUE && 很怪
TABLEREVERT(.T.) && 很怪
=MESSAGEBOX("這個人已經入過會了,先問問吧!",48 )
THISFORM.REFRESH
ENDIF
ENDIF
ENDIF
|
_________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
 |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|