 |
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 文章: 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. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
 |
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. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
 |
saint
註冊時間: 2003-07-14 文章: 211
第 9 樓
|
發表於: 星期二 二月 03, 2009 3:30 pm 文章主題: |
|
|
支持有意義的變數名。 |
|
回頂端 |
|
 |
goto-dream
註冊時間: 2004-05-11 文章: 909
第 10 樓
|
|
回頂端 |
|
 |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|