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

index 索引

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
richard_chen0122



註冊時間: 2009-10-04
文章: 11


第 1 樓

發表發表於: 星期五 七月 29, 2022 5:06 pm    文章主題: index 索引 引言回覆

SQL 的指令可以靈活運用 order by xxx ascending, yyy descending 依照不同的欄位組合成依照大到小,或是小到大。
至於VFP的CURSOR,我也想產生相同的暫存檔,達到相同的排序方式。
但是,使用上遇到組合鍵值的問題,只能用index on xxx+yyy tag key1 ascending or descending。無法將 xxx 與 yyy 拆開來用不同的方式排序,請問大家有何高明的方法可以達到這種需求?
回頂端
檢視會員個人資料 發送私人訊息
CPS0204



註冊時間: 2014-08-24
文章: 441


第 2 樓

發表發表於: 星期五 七月 29, 2022 7:41 pm    文章主題: 引言回覆

假如沒有需要再seek
以下是在vfox9中
那就用: select * from yourdbf order by f_date desc, f_no , cust_no desc into cursor new_cursor


f_date 降冪
f_no 升冪
cust_no 降冪
回頂端
檢視會員個人資料 發送私人訊息
richard_chen0122



註冊時間: 2009-10-04
文章: 11


第 3 樓

發表發表於: 星期一 八月 01, 2022 2:33 pm    文章主題: 引言回覆

SQL 語法是沒有問題的,只是許多的程式邏輯在演算過程中,必須先將報表所需的LAYOUT準備好,建立一個暫存的CURSOR(使用 CREATE CURSOR 指令),無法由SELECT 直接產生。再根據不同需求,建立不同的索引鍵,列印出不同的報表樣式,例如,銷貨報表中常見的日期別,產品別,客戶別,只要是鍵值組成以後,統一由大到小或是由小到大就不會有問題,碰到怪怪需求就很頭痛。
回頂端
檢視會員個人資料 發送私人訊息
ckp6250



註冊時間: 2004-07-30
文章: 1644


第 4 樓

發表發表於: 星期二 八月 02, 2022 8:45 pm    文章主題: 引言回覆

vfp 的 index 是可以使用函數的,例如 index on myfunc() tag key1

您在 myfunc 中動手腳,應該可以達成目的。
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
小賴



註冊時間: 2004-12-27
文章: 470


第 5 樓

發表發表於: 星期二 八月 02, 2022 11:08 pm    文章主題: 引言回覆

richard_chen0122 寫到:
SQL 語法是沒有問題的,只是許多的程式邏輯在演算過程中,必須先將報表所需的LAYOUT準備好,建立一個暫存的CURSOR(使用 CREATE CURSOR 指令),無法由SELECT 直接產生。再根據不同需求,建立不同的索引鍵,列印出不同的報表樣式。


感覺樓主好像還不知道:
vfp 可對任一cursor (本地端或從Sever端下sql指令取得的cursor)
再下sql指令;另存一個新的Cursor(select...) 或修改(update ...)
或新增(Insert into);即網友口中的後加工;基本上樓主從Sever端
下sql指令取得的cursor, 只需直接(不用連線字串)再對其下幾次sql指令
存成樓主希望的格式即可跟本用不上 index on ..或create cursor等指令
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
richard_chen0122



註冊時間: 2009-10-04
文章: 11


第 6 樓

發表發表於: 星期四 八月 04, 2022 4:16 pm    文章主題: 引言回覆

看來要輸出以前還必須下SELECT將資料重新排序一遍,才能達成需求。捨棄INDEX ON的用法。
回頂端
檢視會員個人資料 發送私人訊息
CPS0204



註冊時間: 2014-08-24
文章: 441


第 7 樓

發表發表於: 星期二 八月 09, 2022 9:36 am    文章主題: 引言回覆

如果你是要搭配 seek 指令的話:

其實 index on cust_no+f_date TAG OD1 DESC

與 INDEX ON CUST_NO+DESC(F_DATE) TAG OD1 <<如果此指令可以的話

上述兩行對於 SEEK 'A客戶代碼'
找到最近的銷貨日期(F_DATE)
效果是一樣的 ,不須一直堅持 要 CUST_NO+DESC(F_DATE) 這樣寫


CPS0204 在 星期二 八月 09, 2022 10:05 am 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息
CPS0204



註冊時間: 2014-08-24
文章: 441


第 8 樓

發表發表於: 星期二 八月 09, 2022 10:04 am    文章主題: 引言回覆

重複自刪
回頂端
檢視會員個人資料 發送私人訊息
richard_chen0122



註冊時間: 2009-10-04
文章: 11


第 9 樓

發表發表於: 星期三 八月 10, 2022 1:29 am    文章主題: 引言回覆

經測試 INDEX ON CUST_NO+DESC(F_DATE) TAG OD1 會發生錯誤。
錯誤內容:函數的參數值、型態或數目不正確。
回頂端
檢視會員個人資料 發送私人訊息
小賴



註冊時間: 2004-12-27
文章: 470


第 10 樓

發表發表於: 星期三 八月 10, 2022 9:11 am    文章主題: 引言回覆

INDEX ON CUST_NO + F_DATE DESC TAG OD1
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
CPS0204



註冊時間: 2014-08-24
文章: 441


第 11 樓

發表發表於: 星期三 八月 10, 2022 3:17 pm    文章主題: 引言回覆

richard_chen0122 寫到:
經測試 INDEX ON CUST_NO+DESC(F_DATE) TAG OD1 會發生錯誤。
錯誤內容:函數的參數值、型態或數目不正確。

此行本來就是錯的!請看上文
我的意思是說: 如果你要的是搭配seek 指令

index on cust_no+F_DATE TAG OD1 DESC

這樣也可抓到某客戶的最後一筆銷售日期! 不一定要堅持 INDEX ON CUST_NO+DESC(F_DATE) TAG OD1
回頂端
檢視會員個人資料 發送私人訊息
215001



註冊時間: 2003-06-11
文章: 389


第 12 樓

發表發表於: 星期四 八月 11, 2022 10:48 am    文章主題: 引言回覆

客戶代號 昇冪 + 銷售日期 降冪

index on 客戶代號+str(date(3000,1,1)-銷售日期,7) ...........
回頂端
檢視會員個人資料 發送私人訊息
CPS0204



註冊時間: 2014-08-24
文章: 441


第 13 樓

發表發表於: 星期四 八月 11, 2022 11:22 am    文章主題: 引言回覆

215001 寫到:
客戶代號 昇冪 + 銷售日期 降冪

index on 客戶代號+str(date(3000,1,1)-銷售日期,7) ...........



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

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


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