上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
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 |
|
回頂端 |
|
|
|