  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		aforangel
 
 
  註冊時間: 2010-05-24 文章: 117
 
  第 1 樓
  | 
		
			
				 發表於: 星期四 八月 01, 2013 12:34 pm    文章主題: vfp to mysql | 
				     | 
			 
			
				
  | 
			 
			
				本人一直沿用VFP6.0寫database程式, 程式主要針對小型公司, 如果想把現有程式, 日後改用MYSQL存放database, 增加運作速度, 請問要怎樣做, 有什麼書或網頁有教嗎?
 
 
另外...本人在初學SQL SERVER, 選擇可免費下載的MYSQL, MYSQL能安裝在WINDOWS 7當中作SERVER用嗎?  還是一定要WINDOWS NT或WINDOWS SERVER 200X..等等 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		ckp6250
 
 
  註冊時間: 2004-07-30 文章: 1645
 
  第 2 樓
  | 
		
			
				 發表於: 星期四 八月 01, 2013 6:12 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				Mysql 是好東西,歡迎加入!
 
若是初次使用,那不妨直接跳過Mysql,改用 Mariadb , 反正兩者相容,
 
至於為何建議用 Mariadb , 網路上文章很多,請自行搜尋。
 
 
純 Mysql 的專書(整本講Mysql的,不是那種跟php寫在一塊的),市面約有六七本,應該先看看。
 
 
vfp 的部份,就要仔細看看有關 spt 部份的 help
 
 
MYSQL安裝在WINDOWS 7當中作SERVER用是沒問題,不過,若該台 Server 沒有其它特定用途,倒是建議安裝在 Linux 上,效能較佳。
 
 
如果一定要裝在 Win7上時,建議注意所有的檔名欄名變數名及有的沒的名,一律使用小寫.不要大小寫混用,否則若改天要移植到 linux 上時,會吃苦頭。
   ckp6250 在 星期五 八月 02, 2013 9:13 am 作了第 1 次修改 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		aforangel
 
 
  註冊時間: 2010-05-24 文章: 117
 
  第 3 樓
  | 
		
			
				 發表於: 星期五 八月 02, 2013 12:03 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				| 非常感激ckp大大的提供, 你的意見我會認真考慮, 努力上網爬文一下關於Mariadb... | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		jerryclt
 
 
  註冊時間: 2009-03-10 文章: 334 來自: 佛心來的
  第 4 樓
  | 
		
			
				 發表於: 星期五 八月 02, 2013 7:57 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				小弟也剛安裝完 MySQL,
 
然後就不知其所以然來@@ | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		ckp6250
 
 
  註冊時間: 2004-07-30 文章: 1645
 
  第 5 樓
  | 
		
			
				 發表於: 星期五 八月 02, 2013 8:55 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | jerryclt 寫到: | 	 		  小弟也剛安裝完 MySQL,
 
 | 	  
 
 
安裝完就表示有開頭了
 
萬事起頭難,
 
踏出了第一步,後頭就好辦了
 
加油! | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		aforangel
 
 
  註冊時間: 2010-05-24 文章: 117
 
  第 6 樓
  | 
		
			
				 發表於: 星期六 八月 03, 2013 11:20 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				| ckp大大, 我已經依你的意見, 安裝好Mariadb, 並正常運作, 我亦已用vfp簡單地嘗試過connect到這個server, 新增檔案, select等等這類簡單動作亦OK了.....現在, 我想開始嘗試把我之前用vfp寫的一個簡單程式轉用sql作後台資料, 郤遇到第一個問題, 就是, 怎樣能把vfp local database 完全上移到sql server上, 我有嘗試用過vfp內置的 SQL Server Upsizing Wizard, 但不知是我不懂用, 還是這個本來就是不能用, 最後也失敗了, 請問, 還有什麼方法可用?  感激!! | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		ckp6250
 
 
  註冊時間: 2004-07-30 文章: 1645
 
  第 7 樓
  | 
		
			
				 發表於: 星期六 八月 03, 2013 4:00 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				1.『vfp內置的 SQL Server Upsizing Wizard』不適用於 Mysql ,僅適用於 MsSql 。
 
2. vfp local database 上移至 Mysql 有二個方案
 
 1.自己寫工具,這個對於熟悉 Mysql 有很大的幫助,只是比較累。
 
  (有一些 vfp 的範例可參考,搜尋一下 stru2mysql)
 
 2.用現成的工具軟體,免費的也很多,可以搜尋一下諸如dbf2mysql,在我的經驗上,要把 dbf 轉成 mysql 的 table , 以 Navicat 最保險。 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		saint
 
 
  註冊時間: 2003-07-14 文章: 211
 
  第 8 樓
  | 
		
			
				 發表於: 星期一 八月 05, 2013 9:00 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				放棄用DBF,那你的程式思維要跟著做調整,fox很多關於資料操作的方式在其它DB的世界中算是特異功能
 
當然如果你把資料全select 到你的loval view 中,那些原本的指令就還可以運用,只是資料量大時,你這
 
樣做就很花時間,總算是走出第一步~加油 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		ckp6250
 
 
  註冊時間: 2004-07-30 文章: 1645
 
  第 9 樓
  | 
		
			
				 發表於: 星期一 八月 05, 2013 6:56 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				尺有所短,寸有所長,
 
如同 saint 大大所語,vfp的dbf擁有許多的『特異功能』,放棄不用,很是可惜,
 
我的看法是,最重要的資料,當然是放在後端的資料庫主機,
 
至於一些比較沒那麼要緊的,放到 dbf 也無妨,
 
反正各取所取嘛!
 
 
至於演算的部份,當然要放在後端,前端只傳參數過去,後端算好結果再傳回前端,這樣就能避免大量資料的傳輸。 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		jerryclt
 
 
  註冊時間: 2009-03-10 文章: 334 來自: 佛心來的
  第 10 樓
  | 
		
			
				 發表於: 星期二 八月 06, 2013 6:37 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				請教ckp6250兄,
 
演算法放到後端的實際效用為何?
 
小弟愚魯,
 
一直以為無論是在後端或前端演算,
 
在演算的過程中,
 
使用者應該還是會乖乖地等待結果出爐不是嗎?
 
還是說在後端演算時,
 
前端會作其它作業,
 
然後等後端將結果送到前端再用一個機制打斷目前作業,
 
來顯示演算結果?
 
 
請不吝指教, 謝謝 ^^ | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		saint
 
 
  註冊時間: 2003-07-14 文章: 211
 
  第 11 樓
  | 
		
			
				 發表於: 星期二 八月 06, 2013 9:31 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				我猜ckp6250指的有部份可能是把某些部份利用DB來處理(如果說錯再請不吝指教)
 
很多DB都有特異功能,而且給DB來做,速度上也會快很多
 
不妨參考
 
 
我就用到了mssql 上的「UNPIVOT」、「PIVOT」 這指令很好用,可以把你的
 
資料用類似樞杻的方式來展現,所以這不用寫VFP的程式就可以
 
完成,你說會不會很方便呢?
 
 	  | 代碼: | 	 		  
 
SELECT    '新興金融' RM ,p.*
 
FROM(
 
   SELECT    YYYYMM   ,TYP    ,TWD
 
   FROM
 
   (
 
   SELECT
 
      A.YYYYMM
 
      ,SUM(A.avg_bal * A.FTP_RATE)/ SUM(A.avg_bal)  AVG_FTP_RATE
 
      ,SUM(A.avg_bal * A.rate1)/ SUM(A.avg_bal)  AVG_rate1
 
      ,SUM(A.avg_bal * A.rate2 )/ SUM(A.avg_bal)   AVG_rate2
 
      ,SUM(A.avg_bal * A.rate1)/ SUM(A.avg_bal) - SUM(A.avg_bal * A.FTP_RATE)/ SUM(A.avg_bal) AS 利差
 
      ,SUM(A.avg_bal)/100000000 "部位(億元)"
 
   FROM (
 
         SELECT
 
            A.avg_bal,A.FTP_RATE,A.rate1
 
            ,A.rate2 ,A.acc_no,A.CUR
 
            ,A.account,A.YYYYMM 
 
            ,ISNULL(C.RM_GROUP,'NOT FOUND') RM_GROUP
 
         FROM dbo.企金 AS A  LEFT OUTER JOIN RM C ON A.LNAC_ID = C.LNAC_ID
 
   )A
 
   WHERE 1=1  
 
      AND  YYYYMM IN ('201305','201306')
 
      AND RM_GROUP ='新興金融'
 
      AND NOT account LIKE '411%' 
 
      AND A.avg_bal > 1
 
   GROUP BY A.YYYYMM   
 
   )A UNPIVOT(
 
      TWD FOR TYP IN("AVG_FTP_RATE","AVG_rate1"
 
      ,"AVG_rate2","利差","部位(億元)"))P   
 
)A PIVOT(SUM(TWD) FOR YYYYMM IN ("201305","201306"))P
 
 | 	 
  | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		aforangel
 
 
  註冊時間: 2010-05-24 文章: 117
 
  第 12 樓
  | 
		
			
				 發表於: 星期二 八月 06, 2013 11:00 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				嗯, 聽過ckp & saint 兩位高手意見, 真的獲益不少, 今後將會努力學習SQL..
 
不過, 到今天, 我還卡在 vfp data 上移到 mysql 那個步驟, 在不停找尋方法中....
 
 
看到 saint 的4 select 試範, 簡宜呆了一下, 我一個select已頭痛, 兩個select已經感到呼吸困難..... | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		ckp6250
 
 
  註冊時間: 2004-07-30 文章: 1645
 
  第 13 樓
  | 
		
			
				 發表於: 星期二 八月 06, 2013 11:34 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				演算的部份,saint兄也做了很好的示範
 
我再舉一例,比如說,您要做一張『五月份進銷存明細表』
 
若放在前端來做,您就必需把存貨代碼檔及進出貨明細檔全部 selecl 到前端來,
 
假設存貨代碼有10000個,庫存明細有100000筆,那傳輸量會很可怕
 
若放在後端來做,
 
那我會傳一個指令過去,以 mysql 為例,會是
 
call 進銷存明細表('2013-05')
 
 
後端把結果都算好了,再傳來前端,有可能有實際內容的,也許只有幾百筆或幾千筆而己,
 
速度會快上數十倍或上百倍
 
 
使用 SQL 資料庫,不能只把它當倉庫而已,那是dbf的功能
 
用資料庫,比較有效率的方式
 
前端送參數,後端給答案 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		aforangel
 
 
  註冊時間: 2010-05-24 文章: 117
 
  第 14 樓
  | 
		
			
				 發表於: 星期二 八月 06, 2013 4:42 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				inv1.dbf (發票A)
 
inv_no       inv_date            amount
 
-----------------------------------------
 
inv0001     15/12/2012           500
 
inv0002     08/01/2013           200
 
inv0003     17/01/2013           150
 
inv0004     03/02/2013           400
 
 
inv2.dbf (發票B)
 
-----------------------------------------
 
inv0001     16/12/2012          2500
 
inv0002     06/01/2013          1200
 
inv0003     19/01/2013          1150
 
inv0004     23/01/2013          1400
 
 
請問, 如果我想抽出2個dbf 內 每個月份的總和, select語句要怎寫
 
顯示結果如下:
 
 
month       發票A       發票B       total
 
12/2012      500       2500      3000
 
01/2013      350       3750      4100
 
02/2013      400            0        400 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		ckp6250
 
 
  註冊時間: 2004-07-30 文章: 1645
 
  第 15 樓
  | 
		
			
				 發表於: 星期二 八月 06, 2013 10:55 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				若是 Mysql 的語法,類似如下
 
 
Select Month , sum(if(Type=1,amount,0)) AS 發票A,sum(if(Type=2,amount,0)) AS 發票B,sum(amount) AS  total 
 
from (
 
Select Month,Type,sum(amount) AS amount
 
from (
 
Select date_format(inv_date,'%M/%Y') As Month , 1 As Type , sum(amount) As amount
 
from inv1 group by Month
 
union all
 
Select date_format(inv_date,'%M/%Y') As Month , 2 As Type , sum(amount) As amount
 
From inv2 group by Month) a
 
group Month,Type) b
 
group by month
 
 
約略如上,一行搞定,
 
沒有資料可實測,但八九不離十,像不像,三分樣
 
 
vfp也可如法泡製 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |