  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		garfield Site Admin
  
  註冊時間: 2003-01-30 文章: 2160
 
  第 1 樓
  | 
		
			
				 發表於: 星期四 一月 15, 2009 11:47 pm    文章主題: 判斷一個字串變數裡所指定的名稱是欄位名稱或是變數名稱 | 
				     | 
			 
			
				
  | 
			 
			
				mstr='my test string'
 
mfield='mstr'
 
mtestvar='m.'+strt(mfield,'.','')	 &&--如為變數名稱, 可特別指明方式.. 加上 m. , 為了免除本來就用 table.field 當字串的資料發生錯誤狀況, 直接將.去掉
 
? mfield , iif(vartype(&mfield)=vartype(&mtestvar),'是變數名稱','是欄位名稱')
 
 
mfield='mtable.fieldname'
 
mtestvar='m.'+strt(mfield,'.','')
 
? mfield , iif(vartype(&mfield)=vartype(&mtestvar),'是變數名稱','是欄位名稱')
 
 
請各位試看看, 會不會有誤判斷的情形嗎? _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		saint
 
 
  註冊時間: 2003-07-14 文章: 211
 
  第 2 樓
  | 
		
			
				 發表於: 星期三 一月 21, 2009 5:55 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				| 那應該要判斷為什麼..我是SHOW  欄位 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		garfield Site Admin
  
  註冊時間: 2003-01-30 文章: 2160
 
  第 3 樓
  | 
		
			
				 發表於: 星期三 一月 21, 2009 10:48 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				假設有一個table 裡有一個欄位cust_no
 
mvar='cust_no'
 
? mfield , iif(vartype(&mvar)=vartype(&mvar),'是變數名稱','是欄位名稱') 
 
應該是秀 是欄位名稱
 
mvar2 = 'mvar'
 
? mfield , iif(vartype(&mvar2)=vartype(&mvar2),'是變數名稱','是欄位名稱') 
 
應該是秀 是變數名稱
 
 
用這個技巧主要是為了 將值填入變數所指定的欄位名或變數名,
 
因為欄位要用 replace , 變數直接用 = 即可. _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		tigerlee39y
 
 
  註冊時間: 2007-11-26 文章: 132 來自: taipei
  第 4 樓
  | 
		
			
				 發表於: 星期四 一月 22, 2009 6:53 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				我想直接由名稱上來判斷是(欄位名稱)或是(變數名稱)是不可能的,因為命名原則及限制都一樣
 
要不用別的方法來輔助看看:
 
1.變數名稱用中文,欄位名稱用英文(或顛倒)
 
2.凡是變數名稱的第1或前幾位用特殊字如 VV_A001....來判斷(我比較偷懶,欄位名稱都是以a001,a002,a003...來命名,好在vfp檔案結構中可以設"標題",否則很容易弄不清楚)
 
3.如果變數名稱及欄位名稱無特殊命名,當用到欄位名稱時,該蘭位應處於正在開檔的狀態(即已經use的檔)
 
那麼在開檔後就把該檔的資料放到陣列中(例:AFIELD(FLD_NM))
 
然後要判斷是欄位名稱或是變數名稱時,到陣列中跑一次,有符合的就是欄位,否則就是一般變數
 
 
我目前都是用第2種,省得傷腦經 _________________ 各取所需 各盡所能 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		andywilliams
 
 
  註冊時間: 2004-10-23 文章: 111
 
  第 5 樓
  | 
		
			
				 發表於: 星期四 一月 22, 2009 12:03 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				養成良好的撰寫程式習慣是很重要的,好的程式碼,"可讀性"越高
 
我不會把程式碼弄成 REPLACE t001.A002 WITH THISFORM.TEXT1.VALUE
 
而是 REPLACE Custom.Name WITH THISFORM.txtName.VALUE
 
尤其當忘了t001.A002代表何意思時,再回頭維護這段程式時...深深體會到"可讀性"的重要
 
欄位命名,我也不會用M開頭,M開頭保留給變數用... | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		syntech
 
 
  註冊時間: 2003-05-16 文章: 4252 來自: Taipei,Taiwan
  第 6 樓
  | 
		
			
				 發表於: 星期四 一月 22, 2009 4:40 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				本人的習慣是 寫欄位時,寫清楚別名或table名,變數與欄位相關時,變數前面加上型態,若只有運算關係時,就寫長一點,
 
例如,訂單號 ORDER_NO,變數就是 cORDER_NO,若要保留單號作其他用途,就叫 
 
cOLD_ORDER_NO.
 
 
 
cOLD_ORDER_NO=TABLE1.ORDER_NO 
 
REPLACE TABLE1.ORDER_NO WITH cORDER_NO
 
 
 
 
VFP 不分大小寫,所以不能像C++一樣.
 
memo 也是用c,或是用mem識別
 
所以沒必要判斷
 
如果遇到了,
 
ascan(afields())擋一下
 
 
 
在大多數情況而言,
 
我討厭用
 
 
REPLACE &ALIAS.FIELD(FIELDINDEX ) WITH  &VAR1
 
 
寧可
 
 
REPLACE ORD.AMOUNT WITH ORD.PRICE * ORD.QTY _________________ 如果公司有下列困擾:
 
1. 找不到便宜,快速,簡易的 生產排程軟體
 
2. 不知道如何快速排定 採購計劃
 
3. 成本抓不準,自己算比軟體算有用
 
4. 想學習系統規劃,想找系統架構的顧問
 
 
請聯絡我們,也許我們幫得上忙 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		tigerlee39y
 
 
  註冊時間: 2007-11-26 文章: 132 來自: taipei
  第 7 樓
  | 
		
			
				 發表於: 星期四 一月 22, 2009 6:27 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				檔案名稱用有意義的名稱自然是好的,mst比t001要容易記得,欄位名稱亦然,這箇原則我也知道
 
但是欄位數目多到某個程度,譬如說一百五六十個,一方面不容易取名,一方面取了也很難記得
 
做系統doc是一定要有的,手邊有文件,也不是很難處裡,每個人經驗經歷不同,見仁見智亦是両說 _________________ 各取所需 各盡所能 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		syntech
 
 
  註冊時間: 2003-05-16 文章: 4252 來自: Taipei,Taiwan
  第 8 樓
  | 
		
			
				 發表於: 星期五 一月 23, 2009 10:22 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				如果很難記住,
 
換成FD001,FD002,VAR001,VAR002 就比較容易記住.
 
這點小弟資質愚鈍,無法理解.
 
 
取名本來就難,有限制字數更難,
 
設短了,跟沒設一樣,
 
設長了,易懂但是程式撰寫辛苦.
 
但是不管設長設短,本來就該有文件不是嗎? _________________ 如果公司有下列困擾:
 
1. 找不到便宜,快速,簡易的 生產排程軟體
 
2. 不知道如何快速排定 採購計劃
 
3. 成本抓不準,自己算比軟體算有用
 
4. 想學習系統規劃,想找系統架構的顧問
 
 
請聯絡我們,也許我們幫得上忙 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		saint
 
 
  註冊時間: 2003-07-14 文章: 211
 
  第 9 樓
  | 
		
			
				 發表於: 星期二 二月 03, 2009 3:30 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				| 支持有意義的變數名。 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		goto-dream
 
 
  註冊時間: 2004-05-11 文章: 909
 
  第 10 樓
  | 
		 | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |