  | 
				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 文章: 4252 來自: 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 文章: 4252 來自: 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 文章: 564 來自: 臺灣
  第 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 文章: 4252 來自: 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. 想學習系統規劃,想找系統架構的顧問
 
 
請聯絡我們,也許我們幫得上忙 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |