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

cursor 能join嗎?
前往頁面 1, 2  下一頁
 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
jackqek



註冊時間: 2006-03-24
文章: 15


第 1 樓

發表發表於: 星期二 四月 25, 2006 12:50 pm    文章主題: cursor 能join嗎? 引言回覆

我想請問大家,如下:我先select 出來得到 一筆資料

SELECT * FROM lv_p4pa3 INTO CURSOR lv_p4pa4

再來我要使用這個cursor lv_p4pa4 join 實體的table

SELECT a.p4brch,a.p4ptno
FROM (lv_p4pa4) a LEFT JOIN paflib.papapf b ON a.p4brch+a.p4ptno=b.pabrch+b.paptno INTO CURSOR lv_p4pa5;

結果出現的訊息是找不到 lv_p4pa4,但是我下browse可以跑出資料,
出現的訊息就是找不到,請問是不是我的寫法錯誤,還是cursor不能join
麻煩回答謝謝。
回頂端
檢視會員個人資料 發送私人訊息
小賴



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


第 2 樓

發表發表於: 星期二 四月 25, 2006 1:48 pm    文章主題: 引言回覆

增加NOFILTER參數試試
SELECT * FROM lv_p4pa3 INTO CURSOR lv_p4pa4 NOFILTER
(我沒試)
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2157


第 3 樓

發表發表於: 星期二 四月 25, 2006 2:04 pm    文章主題: 引言回覆

這樣就可以了
SELECT a.p4brch,a.p4ptno
FROM lv_p4pa4 a LEFT JOIN paflib.papapf b ON a.p4brch+a.p4ptno=b.pabrch+b.paptno INTO CURSOR lv_p4pa5

用(lv_p4pa4) 等同用 &lv_p4pa4
lv_p4pa4 是table 名, 不是變數名.

_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
jackqek



註冊時間: 2006-03-24
文章: 15


第 4 樓

發表發表於: 星期二 四月 25, 2006 4:16 pm    文章主題: 引言回覆

SELECT a.p4brch,a.p4ptno
FROM lv_p4pa4 a LEFT JOIN paflib.papapf b ON a.p4brch+a.p4ptno=b.pabrch+b.paptno INTO CURSOR lv_p4pa5

我把它改成上面的,卻出現這個訊息,如圖,
請問要怎麼解決
回頂端
檢視會員個人資料 發送私人訊息
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2157


第 5 樓

發表發表於: 星期二 四月 25, 2006 5:32 pm    文章主題: 引言回覆

將 LEFT JOIN paflib.papapf B
改成在 select 前先open database paflib
select .... LEFT JOIN papapf

_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
jackqek



註冊時間: 2006-03-24
文章: 15


第 6 樓

發表發表於: 星期五 四月 28, 2006 3:51 pm    文章主題: 引言回覆

原來是實體table不能join cursor,已換別種方式寫
回頂端
檢視會員個人資料 發送私人訊息
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2157


第 7 樓

發表發表於: 星期五 四月 28, 2006 5:09 pm    文章主題: 引言回覆

可是奇怪了, 我目己在測試的時候是用 DBF ,
是沒問題的...
只有 VIEW 的檔案才不行吧 !

_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
小賴



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


第 8 樓

發表發表於: 星期五 四月 28, 2006 6:24 pm    文章主題: 引言回覆

記憶中由 SELECT .... INTO Cursor CurTest 創建的 CurTest是不
能作為下一個SELECT ....的資料源(SELECT的資料源好像只能是實體表)
最後面的附註是Help8.0 Sql Command 備註說明的內容(英文版同), 請注意:

”可以使用 NOFILTER 來創建一個可用於後來的查詢的游標。”這句話

Help9.0也有提到NOFILTER參數但卻少了以上這句話


我自已在使用也同Help8.0說的一樣
"SELECT 建立的Cursor無法作為下一SELECT 的資料源"
例如
SELECT * FROM TableA INTO CursorB
SELECT * FROM CursorB .... 會有問題
但如果是
SELECT * FROM TableA INTO CursorB NOFILTER
SELECT * FROM CursorB ... 則無問題

個人還發現 不用NOFILTER改用ReadWrite也無問題
SELECT * FROM TableA INTO CursorB READWRITE
SELECT * FROM CursorB ... 也無問題
應該是因為ReadWrite, NoFilter都會先建立臨時表, 而這也須
拿速度作為補償

曾有人告訴我不用NOFILTER, READWRITE ; 但我測試都一定
要加NOFILTER才可, 利用這機會也請各位先進幫我指點迷津,
測試結果煩請告知, 先行感謝 !



Help8.0片斷內容

當在 Destination 參數中使用 CURSOR 子句時, 你現在可以使用 NOFILTER 來創建一個可用於後來的查詢的游標。在早期版本的 Visual FoxPro 中, 你需要包括一個額外的常數或表達式作為篩選。例如, 添加一個邏輯 true 作為篩選表達式來創建一個可用於後來的查詢的查詢:

SELECT *, .T. FROM customers INTO CURSOR myquery
但是, 包括 NOFILTER 會降低查詢性能因為要在磁盤上創建一個臨時表。臨時表在游標關閉時從磁盤上刪除。
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
朱育興



註冊時間: 2003-08-25
文章: 661
來自: 台中市大里區

第 9 樓

發表發表於: 星期六 四月 29, 2006 8:20 pm    文章主題: 引言回覆

小賴 寫到:
SELECT * FROM TableA INTO CursorB
SELECT * FROM CursorB .... 會有問題

這個
SELECT * FROM TableA INTO CursorB
我都是用
SELECT * FROM TableA INTO CURSOR CursorB
然後
SELECT * FROM CursorB .... 都不會有問題

因為一直以來都是這樣用的

_________________
希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
小賴



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


第 10 樓

發表發表於: 星期一 五月 01, 2006 10:18 am    文章主題: 引言回覆

TO 朱兄:

對不起; 以上我是少打了 "Cursor"
應該是 SELECT * FROM TableA INTO CURSOR CursorB

剛剛在Command Window試了一下; 還是有問題

SELECT * FROM F:\JK\SAL\PLOY INTO CURSOR CURSORA (OK)
SELECT * FROM CURSORA INTO CURSOR CURSORB (出現以下錯誤訊息)

"CursorA" must be Created With "Select .....INTO Table"

改成
SELECT * FROM F:\JK\SAL\PLOY INTO CURSOR CURSORA NOFILTER
SELECT * FROM CURSORA INTO CURSOR CURSORB
就可以 ; 是不是我的VFP9設定有問題 ?
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
朱育興



註冊時間: 2003-08-25
文章: 661
來自: 台中市大里區

第 11 樓

發表發表於: 星期一 五月 01, 2006 5:06 pm    文章主題: 引言回覆

小賴 寫到:
TO 朱兄:

對不起; 以上我是少打了 "Cursor"
應該是 SELECT * FROM TableA INTO CURSOR CursorB

剛剛在Command Window試了一下; 還是有問題

SELECT * FROM F:\JK\SAL\PLOY INTO CURSOR CURSORA (OK)
SELECT * FROM CURSORA INTO CURSOR CURSORB (出現以下錯誤訊息)

"CursorA" must be Created With "Select .....INTO Table"

改成
SELECT * FROM F:\JK\SAL\PLOY INTO CURSOR CURSORA NOFILTER
SELECT * FROM CURSORA INTO CURSOR CURSORB
就可以 ; 是不是我的VFP9設定有問題 ?


您對我錯

不過我搜了我公司的程式碼,確實有找找到我那種寫法,所以我也很懷疑會何沒出錯,可能等有空再找它測試。

_________________
希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
syntech



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

第 12 樓

發表發表於: 星期一 五月 01, 2006 5:58 pm    文章主題: 引言回覆

可能關鍵在是否VFP會"真的"產生一個實體的臨時檔.

我猜.

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

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



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


第 13 樓

發表發表於: 星期一 五月 01, 2006 6:47 pm    文章主題: 引言回覆

第一次閱讀有關NOFILTER參數是在
章立民 中文程式設計---應用實務篇 6.X
PAGE 8-17 看到

Syntech兄你有這本書, 能不能談談測試結果 ?
只有朱兄和Syntech兄回應; 是大家都不會有這個問題 ?
還是我反應了一個笨問題 ?
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
DennisTsai



註冊時間: 2005-07-26
文章: 176


第 14 樓

發表發表於: 星期一 五月 01, 2006 9:41 pm    文章主題: 引言回覆

這樣可以吧
SELECT * FROM F:\JK\SAL\PLOY INTO CURSOR CURSORA
SELECT * FROM DBF() INTO CURSOR CURSORB
回頂端
檢視會員個人資料 發送私人訊息
小賴



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


第 15 樓

發表發表於: 星期一 五月 01, 2006 10:26 pm    文章主題: 引言回覆

DennisTsai 寫到:
這樣可以吧
SELECT * FROM F:\JK\SAL\PLOY INTO CURSOR CURSORA
SELECT * FROM DBF() INTO CURSOR CURSORB


不一樣哦 !
SELECT NO1, DepNo, DepName FROM F:\JK\ASL\PLOY ;
WHERE DepNo = "41 INTO CURSOR CursorA
? DBF() && F:\JK\SAL\PLOY

SELECT * FROM DBF()

第二個SELECT將取回F:\JK\SAL\PLOY所有欄位, 所有記錄;
內容與CursorA顯然不同
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
前往頁面 1, 2  下一頁
1頁(共2頁)

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


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