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

vfp to mysql
前往頁面 1, 2, 3, 4  下一頁
 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
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 中,那些原本的指令就還可以運用,只是資料量大時,你這
樣做就很花時間,總算是走出第一步~加油
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
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
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
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也可如法泡製
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
前往頁面 1, 2, 3, 4  下一頁
1頁(共4頁)

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


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