  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		shyhpyng
 
  
  註冊時間: 2006-10-11 文章: 60 來自: 台南市
  第 1 樓
  | 
		
			
				 發表於: 星期二 十月 17, 2006 10:17 am    文章主題: 關於Set filter to的語法 | 
				     | 
			 
			
				
  | 
			 
			
				我在公司看到一行程式不太懂,我只知道他用來當使用者要搜尋一個資料表裡頭某範圍的資料時用的,以下
 
 Set filter to left(Dk_code,len(allt(thisform.BegKey.value)))>=alltrim(thisform.BegKey.value) .and. left(Dk_code,len(allt(thisform.EndKey.value)))<=alltrim(thisform.EndKey.value)
 
 
資料表格是這樣    名稱:Dk_code     Dk_name
 
                                  01             A東西
 
                                              02            B東西                    
 
                                   .                 .
 
 
然後我可能要看第05到10筆,我函數的用法也查了可是不知為何他要這樣用,就拿left(Dk_code,len(allt(thisform.BegKey.value)))來說,我認知是他起始輸入05然後會先因為allt()去頭尾空白然後len傳長度是2然後變成left(Dk_code,2)到這邊我就覺得我應該是錯了....正確應該是如何呢??
 
 
感謝各位!! | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		syntech
 
 
  註冊時間: 2003-05-16 文章: 4252 來自: Taipei,Taiwan
  第 2 樓
  | 
		
			
				 發表於: 星期二 十月 17, 2006 1:25 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				還不簡單嗎?
 
 
就是"打多少字檢查多少字"嘛~~
 
LEFT() 是由左邊取字,
 
LEN()是傳回字串長度,
 
所以原意就是"從DK_CODE由左到右,取出與XXXXX相同長度的字串"
 
 
不過,
 
實際上,
 
"ABCD"  < "B"  (Sort by MACHINE),
 
不需要作 LEFT("ABCD",LEN("B"))取出"A",再判斷 "A" 是否大於 "B"
 
這樣做只是浪費時間而已.  ^_^ _________________ 如果公司有下列困擾:
 
1. 找不到便宜,快速,簡易的 生產排程軟體
 
2. 不知道如何快速排定 採購計劃
 
3. 成本抓不準,自己算比軟體算有用
 
4. 想學習系統規劃,想找系統架構的顧問
 
 
請聯絡我們,也許我們幫得上忙 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		shyhpyng
 
  
  註冊時間: 2006-10-11 文章: 60 來自: 台南市
  第 3 樓
  | 
		
			
				 發表於: 星期二 十月 17, 2006 3:29 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				謝謝解答....所以你的意思是他這行是不需要的嗎???  不然我把這一小段程式放上來好了,以下
 
 
OLDrecord=IIf(eof(),0,Recno())
 
Select Diekind
 
Do case
 
      Case Thisform.FindType.value=1
 
           Set Order to Dk_code
 
            Set filter to left(Dk_code,len(allt(thisform.BegKey.value)))>=alltrim(thisform.BegKey.value) .and. left(Dk_code,len(allt(thisform.EndKey.value)))<=alltrim(thisform.EndKey.value)
 
      Case Thisform.FindType.value=2
 
           Set Order to Dk_name
 
           Set filter to left(Dk_name,len(allt(thisform.BegKey.value)))>=alltrim(thisform.BegKey.value) .and. left(Dk_name,len(allt(thisform.EndKey.value)))<=alltrim(thisform.EndKey.value)
 
Endcase
 
Go top
 
If eof()
 
   =messagebox("此範圍類別資料不存在",16,"訊息視窗")
 
Else 
 
   Do case
 
         Case This.parent.OptionGroup2.value=1
 
              Report form crep_modl_a11 noconsole preview   &&螢幕顯示
 
         Case This.parent.OptionGroup2.value=2
 
              Report form crep_modl_a11 noconsole to print prompt   &&印表機
 
    Endcase     
 
Endif   
 
Set filter to
 
Thisform.hide
 
If OLDrecord<>0
 
    go OLDrecord
 
Endi
 
 
 
還有阿,我剛進公司沒多久,然後程式已經被寫好,公司希望我維護他寫好的某個部門的程式,他要繼續開發其他部門的,可是我看一個月了還是很難懂....程式的主人又很忙無法每天看到他...對於接手別人的系統而我卻又對系統流程不是很了解,也就是說我也不知為何他要這樣設計,有時他同一個資料表重複出現在資料環境(可能一個叫kind一個叫kind1)他指跟我說這樣比較好是經驗....,但是我還是不懂為何,感到很力不從心! | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		syntech
 
 
  註冊時間: 2003-05-16 文章: 4252 來自: Taipei,Taiwan
  第 4 樓
  | 
		
			
				 發表於: 星期二 十月 17, 2006 5:20 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				"不錯不改"
 
作維護系統的程式設計師請先牢記這點.
 
我看到很多人喜歡把舊程式改成自己喜歡的樣子或是寫法,
 
實際上,這應該要重作完整的Debug工作,
 
因為執行的是"新"的程式,不是"驗證過"的程式.
 
 
作維護系統的程式設計師是很難的,
 
不知道為什麼每家公司都讓新進程式師作維護工作.
 
 
看懂別人的程式不是一件容易的事.
 
我是教公司的新進程式師不是試圖看每一行程式,
 
而是去猜這一段是在作什麼工作.
 
 
程式怎麼寫會因很多情況不同而採用不同的寫法,
 
例如閃bug,心情好跟不好等等.
 
這點中國人/台灣人與印度人非常不一樣,
 
相對也比較難維護.
 
謠言指出,10個印度人寫的程式樣式不到3種,甚至只有一種,
 
但是一個中國人/台灣人可能每一天就幾十種作法. _________________ 如果公司有下列困擾:
 
1. 找不到便宜,快速,簡易的 生產排程軟體
 
2. 不知道如何快速排定 採購計劃
 
3. 成本抓不準,自己算比軟體算有用
 
4. 想學習系統規劃,想找系統架構的顧問
 
 
請聯絡我們,也許我們幫得上忙 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		yctsai
 
 
  註冊時間: 2003-04-11 文章: 180
 
  第 5 樓
  | 
		
			
				 發表於: 星期二 十月 17, 2006 7:48 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				| 的確有改進空間,一大堆thisform.BegKey.value,很難看又長,先利用變數取代thisform.BegKey.value,程式精簡,也完全不影響程式流程 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |