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

請問新增一把紀錄問題

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
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的我
Crying or Very sad

_________________
一個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 次修改
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
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("這個人已經入過會了,先問問吧!",4Cool
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. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
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. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

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


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