您的位置:首页 > 编程语言 > C语言/C++

VC++开发个人事务管理信息系统

2016-04-01 17:57 344 查看
工具
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存在一点问题;只显示了一个字段;并且没有显示列头;



需要在控件属性中选中 列表 样式,



记录才会按行排列;

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  VC odbc ListCtrl CRecordset