看板 C_and_CPP 關於我們 聯絡資訊
最近碰到一個問題, "如何自動化的將 Access 2000 格式的資料庫轉成 Access 97" as2000.mdb --------------------> as97.mdb (程式 or batch file) 用人工轉很簡單,就把 as2000.mdb 打開,然後再選單選擇轉換成 97 格式 balabala... 但這情境就是要用自動化的方式~ 一開始遇到這個問題,我想說很簡單,寫個 VB 的 Script 之類的 batch file 應該很輕鬆。 於是.... (以下為浪費一天的時間再做 survey 的碎碎念文) 平常我用的語言都是 C++ 、 Java 。之前有跟學弟一起寫過 VB 不過那時候我是用嘴巴寫 (XD) ( ′-`)y-~ 也就是說 VB 是處於完全不會寫的狀態 = =" 軟體工程的觀念之一就是越慢寫程式越好,也就是要分析這個題目 適合哪種語言、哪種工具 ... 於是很自然的想到 VB、VBA 這些應該很容易跟 Access 作整合 工具決定之後,開始安裝 VB6 ... (2 hr) 接下來很自然的就 google 關鍵字 "VB Access2000 Access97 轉換" googling....................... (6 hr) 我迷失在萬維網內了............. (我要看世界盃不想加班阿~~~~~~ 吶喊) 於是我很徨恐的在 DataBase 板求救 3769 篇 waiting ....................... (nobody nobody ... QQ) 內心想到這樣下去不行,馬上衝去圖書館借 Access 的書來看 每次走到圖書館看到一堆書都很興奮 "Access 2000 程式設計開發指南" "Access 2000 徹底剖析" "Access 2000 實戰問答集" 還順手借了一本 "Inside COM" (爽) 現在看的書多了,比較能夠分辨出哪些書有沒有用 (以前大概要從頭看到一百多頁以後..) 我很快的寫了簡單的巨集指令用 TransferDatabase 去轉換成 Access 97 (2 hr) 看到 VBA 很多很實用的功能也很想學習 不過還是被我用意志力克制了 (世界盃等我阿) 突然想到... 我又算寫巨集也沒用、預設的問題根本不讓你在 as2000.mdb 嵌入巨集 所以還是要用 VB6 跟資料庫作連結,然後作轉換 Jet、DAO、ADO、ODBC 這些概念我也很模糊 馬上 VB6 程式打開.......... 發呆..... (不熟的工具根本不知道如何下手 = =) 才發現我去圖書館也藉錯書了,三本都是講 VBA 的,我應該要借 VB6 如何使用 資料的書阿~~~~~~~~~~~ 我又自暴自棄的用 VB 亂拉了一些介面 (1hr) 後來真的暴怒了 吼~~~~ (管你什麼 VB 不 VB 的,老子要用 VC++ 硬幹了) 接下來、利用打開 VS 2008 的時間,泡了杯咖啡 想法: 作一個 97 格式的 mdb (as_97.mdb) as_2000.mdb (2000 格式的) as_97.mdb (97 格式的) 演算法: 1. 利用 MFC 的 DB Wizard 產生出資料表相對應的 Class : CLog 2. CLog as_2000Log = bindDB("as_2000.mdb") CLog as_97Log = bindDB("as_97.mdb"); 3. 清空 as_97.mdb ie. as_97Log.clear() 4. 將 as_2000.mdb 的欄位一一複製到 as_97.mdb 5. DONE 有了這隻程式,再來就寫簡單的 dos batch file 作一些 copy , rename 的處理就OK了 (1 hr) (including Debug + 寫錯誤處理) 這時候寫好了、咖啡還剩下三分之一 ..... 我再度給了 C++ 一個讚!! ps. 日本 PK 超可惜的 QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 115.80.143.26
softwind:??? access 沒有command line tool嗎? 06/30 23:59
spider391:有 msaccess 但他的參數無法達到我的需求 /convert 07/01 00:06
charleshu:Why not use COM to control Access to SaveAs? 07/01 00:19
spider391:我沒想過這個方向、最近才在研究 COM 謝謝^^ 07/01 02:20
spider391:請問要用什麼 COM 元件呢? 07/01 02:21
MOONRAKER:後面空那麼多幹嘛… 07/01 09:25
belion:vs 6.0 也做的到嗎?o.o 07/01 17:21
spider391:樓上說的是 VC6 嗎 VC6 可以 07/01 18:00
charleshu:Create the "Access.Application" object to control it 07/01 20:49