  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		whh
 
 
  註冊時間: 2010-04-16 文章: 166
 
  第 1 樓
  | 
		
			
				 發表於: 星期二 二月 26, 2013 5:27 pm    文章主題: VFP SQL recno() 使用order by,順序跑掉問題 | 
				     | 
			 
			
				
  | 
			 
			
				SELECT recno(), 姓名, 電話 ;
 
   FROM MyData ;
 
 ORDER BY 生日 ;
 
   INTO CURSOR CUR_AAA
 
 
SELECT AAA
 
COPY TO C:\CUR_AAA SDF
 
 
問題來了如果加了  ORDER BY 生日
 
 
recno()的號碼會亂掉
 
******************************
 
如果是Oracle的話可以在包一層
 
 
SELECT recno(), 姓名, 電話
 
   FROM (
 
               SELECT 姓名, 電話
 
                  FROM MyData
 
                ORDER BY 生日)
 
 
1. 這樣順序就對了 請問vfp 6要如何做到(測試過在包一層,好像不支援) ?
 
2. 我如果轉出txt擋,要留欄位抬頭有辦法嗎? | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		bx1166
 
 
  註冊時間: 2011-12-06 文章: 273
 
  第 2 樓
  | 
		
			
				 發表於: 星期二 二月 26, 2013 7:35 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				可以加一個欄位紀錄原來的 recno() 
 
COPY TO TXT 要加入欄位抬頭
 
我想到的, 只能用 set printer to  txtfile 的方法
 
例如:
 
set printer to Your_txt.txt
 
set cons off
 
set print on
 
? "Add fiield list here:Name Birthday..."
 
sele 1
 
use xxx
 
go top
 
do while .not. eof()
 
? Field_Name+","+Fiel_Birthday+","+Other_Field 
 
sele 1
 
skip
 
enddo
 
?
 
set print off
 
set cons on
 
set print off
 
retu | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		h02022
 
 
  註冊時間: 2012-11-28 文章: 35
 
  第 3 樓
  | 
		
			
				 發表於: 星期三 二月 27, 2013 9:05 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				SELECT 姓名, 電話 ; 
 
FROM MyData ; 
 
ORDER BY 生日 ; 
 
INTO CURSOR CUR_AAA1
 
 
SELECT recno(), 姓名, 電話 ; 
 
FROM CUR_AAA1  ; 
 
INTO CURSOR CUR_AAA2 
 
 
********************簡化********************
 
SELECT recno(), BB.姓名, BB.電話 ; 
 
FROM ;
 
(SELECT 姓名, 電話 ;
 
FROM MyData ; 
 
ORDER BY 生日) BB ; 
 
INTO CURSOR CUR_AAA
 
********************簡化********************
 
先排序..後算數字...recno()是按照原本MyData資料表順序排的 
 
所以先ORDER BY在下recno() | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		whh
 
 
  註冊時間: 2010-04-16 文章: 166
 
  第 4 樓
  | 
		
			
				 發表於: 星期三 二月 27, 2013 6:38 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | h02022 寫到: | 	 		  SELECT 姓名, 電話 ; 
 
FROM MyData ; 
 
ORDER BY 生日 ; 
 
INTO CURSOR CUR_AAA1
 
 
SELECT recno(), 姓名, 電話 ; 
 
FROM CUR_AAA1  ; 
 
INTO CURSOR CUR_AAA2 
 
 
********************簡化********************
 
SELECT recno(), BB.姓名, BB.電話 ; 
 
FROM ;
 
(SELECT 姓名, 電話 ;
 
FROM MyData ; 
 
ORDER BY 生日) BB ; 
 
INTO CURSOR CUR_AAA
 
********************簡化********************
 
先排序..後算數字...recno()是按照原本MyData資料表順序排的 
 
所以先ORDER BY在下recno() | 	  
 
 
↑
 
這上面就是我說 Oracle的可以用的SQL語法, 
 
但是VFP好像不支援,如法在外面在包一層 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		ckp6250
 
 
  註冊時間: 2004-07-30 文章: 1645
 
  第 5 樓
  | 
		
			
				 發表於: 星期三 二月 27, 2013 9:20 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				h02022的方法在VFP9上是可行的
 
不過,樓主提的是VFP6,手上沒有VFP6可試,就不知行不行了 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		h02022
 
 
  註冊時間: 2012-11-28 文章: 35
 
  第 6 樓
  | 
		
			
				 發表於: 星期五 三月 01, 2013 8:59 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				哦...對耶
 
沒注意SORRY
 
vfp 6.0 剛測試 這個用↓
 
****************************
 
SELECT 姓名, 電話 ;
 
FROM MyData ;
 
ORDER BY 生日 ;
 
INTO CURSOR CUR_AAA1
 
 
SELECT recno(), 姓名, 電話 ;
 
FROM CUR_AAA1 ;
 
INTO CURSOR CUR_AAA2 
 
**************************** | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |