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

關於Set filter to的語法

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
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
文章: 4249
來自: 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. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
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
文章: 4249
來自: Taipei,Taiwan

第 4 樓

發表發表於: 星期二 十月 17, 2006 5:20 pm    文章主題: 引言回覆

"不錯不改"
作維護系統的程式設計師請先牢記這點.
我看到很多人喜歡把舊程式改成自己喜歡的樣子或是寫法,
實際上,這應該要重作完整的Debug工作,
因為執行的是"新"的程式,不是"驗證過"的程式.

作維護系統的程式設計師是很難的,
不知道為什麼每家公司都讓新進程式師作維護工作.

看懂別人的程式不是一件容易的事.
我是教公司的新進程式師不是試圖看每一行程式,
而是去猜這一段是在作什麼工作.

程式怎麼寫會因很多情況不同而採用不同的寫法,
例如閃bug,心情好跟不好等等.
這點中國人/台灣人與印度人非常不一樣,
相對也比較難維護.
謠言指出,10個印度人寫的程式樣式不到3種,甚至只有一種,
但是一個中國人/台灣人可能每一天就幾十種作法.

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

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



註冊時間: 2003-04-11
文章: 180


第 5 樓

發表發表於: 星期二 十月 17, 2006 7:48 pm    文章主題: 引言回覆

的確有改進空間,一大堆thisform.BegKey.value,很難看又長,先利用變數取代thisform.BegKey.value,程式精簡,也完全不影響程式流程
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

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


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