環境準備
- Access 建立 `mydata.mdb`,資料表 `users(username, address, email)`。
- 控制台 → ODBC 系統 DSN 新增 `test` 指向 `mydata.mdb`。
專案建立
- MFC AppWizard (exe) → Dialog based → 專案名 `GridTest` → 勾選 **ActiveX Controls** 支援。
- 專案 → Add to Project → Components and Controls → Registered ActiveX Controls:
插入 **Microsoft RemoteData Control** (類別 `CMSRemoteDataControl`)
插入 **DBGrid Control** (類別 `CDBGrid`)。
對話框佈局
資源編輯器拖放兩個控制項:`IDC_REMOTEDATACTL1` (RemoteData)、`IDC_DBGRID1` (DBGrid)。
屬性設定 (設計模式右鍵 Properties)
RemoteData Control
- **Control** 分頁:Data Source → `test` (DSN 名稱)
- **SQL** 分頁:`SELECT * FROM users`
DBGrid Control
- **All** 分頁:DataSource → `IDC_REMOTEDATACTL1` (RemoteData 的 ID)
執行前注意
- 關閉 Access 佔用 `.mdb`,否則「無法鎖定檔案」錯誤。
- 編譯執行即見資料網格自動顯示,支援捲動、排序、編輯 (若 Recordset 允許)。
程式碼控制 (可選)
// 動態切換 SQL
m_remoteData.SetSQL(_T("SELECT * FROM users WHERE email LIKE '%@gmail.com'"));
m_remoteData.Refresh(); // DBGrid 自動更新
常見問題
| 現象 | 原因/解決 |
| 設計模式無法插入控制項 | 未勾選 AppWizard Step 2 的 ActiveX 支援 |
| 運行時空白 | DSN 名稱拼寫錯誤、SQL 語法錯誤、Access 檔案被獨佔 |
| 欄位順序錯亂 | DBGrid 欄位集合可在屬性頁手動排序或程式碼 `Columns` 集合調整 |