早期學習資料庫開發時撰寫的單字查詢小工具,採用 DAO (Data Access Objects) 存取 Access (.mdb) 資料庫,實作基本的增刪改查、書籤導航、模糊搜尋與介面美化。介面包含工具列圖示按鈕、資料瀏覽區與狀態列。
利用免費類別庫 CButtonStyle 實現圖示按鈕。為縮減程式碼,採用迴圈批次關聯控制項 ID 與圖示資源 ID(需手動調整 Resource.h 使 ID 連續):
// IDC_JUMP ~ IDC_LISTITEM 為連續按鈕控制項 ID
// IDI_JUMP ~ ... 為對應圖示資源 ID
for (int nIco = IDI_JUMP, nBtn = IDC_JUMP; nBtn >= IDC_LISTITEM; nIco--, nBtn--)
{
CButtonStyle* pBtn = ButtonList.RemoveTail();
pBtn->SubclassDlgItem(nBtn, this);
pBtn->SetIcon(nIco);
pBtn->SetInactiveBgColor();
pBtn->SetInactiveFgColor();
pBtn->SetActiveBgColor();
}
捕捉 CDaoException 後,為避免記錄集指標停留在錯誤記錄導致後續操作失敗,採用「向後再向前」移動指標歸位:
try
{
// DAO 操作...
}
catch (CDaoException* e)
{
// 修正記錄集指標位置
m_pSet->MoveNext();
m_pSet->MovePrev();
e->Delete();
return;
}
| 按鈕 | 功能說明 |
|---|---|
| POS1 | 跳轉至上次退出時瀏覽的單字(書籤機制) |
| POS2 | 動態跳轉至指定單字(需存在,否則提示) |
| 首筆 | 移至資料庫第一筆記錄 |
| 上一筆 | 顯示上一筆單字資訊 |
| 下一筆 | 顯示下一筆單字資訊 |
| 末筆 | 移至資料庫最後一筆記錄 |
支援依前綴/後綴/片段搜尋單字。輸入單一字母時不區分大小寫,顯示所有該字母開頭的單字;輸入完整詞綴則精確比對。核心邏輯為 SQL LIKE 'prefix%' 或 LIKE '%suffix' 搭配 DAO Recordset::FindFirst 實現。


完整專案原始碼已打包,包含 DAO 連線封裝、按鈕樣式類別與資料庫範例檔。適合初學者參考 DAO 基礎操作與 MFC 介面美化技巧。