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

判斷一個字串變數裡所指定的名稱是欄位名稱或是變數名稱

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
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 欄位
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
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
文章: 4249
來自: 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. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
tigerlee39y



註冊時間: 2007-11-26
文章: 132
來自: taipei

第 7 樓

發表發表於: 星期四 一月 22, 2009 6:27 pm    文章主題: 引言回覆

檔案名稱用有意義的名稱自然是好的,mst比t001要容易記得,欄位名稱亦然,這箇原則我也知道
但是欄位數目多到某個程度,譬如說一百五六十個,一方面不容易取名,一方面取了也很難記得
做系統doc是一定要有的,手邊有文件,也不是很難處裡,每個人經驗經歷不同,見仁見智亦是両說

_________________
各取所需 各盡所能
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4249
來自: Taipei,Taiwan

第 8 樓

發表發表於: 星期五 一月 23, 2009 10:22 am    文章主題: 引言回覆

如果很難記住,
換成FD001,FD002,VAR001,VAR002 就比較容易記住.
這點小弟資質愚鈍,無法理解.

取名本來就難,有限制字數更難,
設短了,跟沒設一樣,
設長了,易懂但是程式撰寫辛苦.
但是不管設長設短,本來就該有文件不是嗎?

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
saint



註冊時間: 2003-07-14
文章: 211


第 9 樓

發表發表於: 星期二 二月 03, 2009 3:30 pm    文章主題: 引言回覆

支持有意義的變數名。
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
goto-dream



註冊時間: 2004-05-11
文章: 909


第 10 樓

發表發表於: 星期三 二月 04, 2009 11:13 pm    文章主題: 引言回覆

+1.有意義的變數

臨時的我會隨便取

譬如 i,j,a01,ab01
隨便拉

_________________
福隆昌淨水有限公司--淨水器的專家,淨水器,飲水機,濾心!!

想了解更多,您可上幸福雞湯組.找尋!!丁澐瑄.老師.

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

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


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