工具
http://blog.csdn.net/bcbobo21cn/article/details/44200205
demo工程
http://pan.baidu.com/s/1slaISnr
1 開發個人事務管理信息系統;從網上下一個源碼來改;
來源
http://www.newxing.com/Code/VC/data/4004.html
該源碼運行如下,
2 運行,出現下圖錯誤;可知是ODBC訪問數據庫,非ADO;
3 查看 連接 菜單的代碼,
是db.Open一句報的錯;
4 建立ODBC數據源,
發現沒有access驅動;
原因參閱,
http://blog.csdn.net/wang379275614/article/details/7803576
5 進到如下目錄再配置ODBC,
選擇mdb數據庫;配置成功;
6 運行,登錄;
密碼不對;但是輸的是對的;看下代碼;
if(strPasswd == CCrypt::Encrypt(m_strPasswd, 123) &&
此句可能存在問題,因為由數據庫取到strPasswd,由更新數據變量得到界面輸入的內容到m_strPasswd,這兩個值實際是一個;加密後不會等於自身;
CCrypt::Encrypt()此函數的功能尚未搞清;下次再弄;
下斷點可看到字符串加密後的值;
先注釋掉加密代碼;
7 運行起來;
8 修改其菜單為個人事務管理信息系統的菜單;
9 在資源-字符串表中,修改主框標題
10 打開數據庫表;
工具:
http://blog.csdn.net/bcbobo21cn/article/details/51000041
修改其JOB表內容為設備類別表內容;設備類別即個人物品類別,服裝、電子設備等類;
11 插入DataGrid控件,
出錯,參閱,
http://blog.csdn.net/zhongjling/article/details/7787626
12 添加設備類別管理對話框,插入DataGrid控件,做一個界面如下;
13 新建對話框需要新加一個類
14 選擇DataGrid控件需要的類;
15 如下圖代碼,打開記錄集並綁定;
出錯;如圖;研究之後,原因在於,如上代碼實際是用於ADO方式訪問數據庫的DataGrid綁定的;ODBC方式,目前所有網上資料都是,一行行添加數據的;如
http://www.vckbase.com/index.php/wv/248
等;
更換DataGrid控件為ListCtrl
按網上相關資料添加如下代碼;
BOOL shblbDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_list3.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_list3.InsertColumn(0,_T("類別編號"),LVCFMT_IMAGE|LVCFMT_LEFT);
m_list3.InsertColumn(1,_T("類別名稱"));
int j;
for(j=0;j<2;j++)
{
m_list3.SetColumnWidth(j ,180);
}
CRecordset rs(&db); // 數據集
CString str1,str2;
rs.Open(CRecordset::forwardOnly, "select * from JOB");
int i=0;
//rs.MoveFirst();
do
{
//m_list3.InsertItem(i,rs.m_column1,0);
rs.GetFieldValue("CODE", str1);
rs.GetFieldValue("DESCRIPTION", str2);
m_list3.InsertItem(i, str1,0);// 插入行
m_list3.SetItemText(i, 1, str2);//設置其它列數據
i++;
rs.MoveNext();
} while(!rs.IsEOF());
//rs.MoveFirst();
//m_shblbdlg.SetRefDataSource((LPUNKNOWN)rs.GetRecordset());
//m_shblbdlg.SetRefDataSource((LPUNKNOWN)rs.Requery());
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
數據庫記錄已經取到;但是插入數據到ListCtrl存在一點問題;只顯示了一個字段;並且沒有顯示列頭;
需要在控件屬性中選中 列表 樣式,
記錄才會按行排列;