[vc6+ODBC+access]请教怎么在第二个对话框绑定数据集成员
[vc6+ODBC+access]请问如何在第二个对话框绑定数据集成员
帮同学看的一个课程作业,不用深入的彻底理解到底怎么回事,所以我是现学现用的,估计术语都说的不准确的。
在工程创建过程中连接好了数据库,工程创建完成后,对话框对应的类是继承自CRecordView的CMyView,里面还有一个继承自CRecordset的数据成员m_pSet,所以我可以很方便的将m_pSet中的数据成员连接到这个对话框中的某个控件上。
现在,我新建了一个对话框,这个对应的类是基于CDialog的,就无法如上一样的将数据和某个空间控件绑定起来了,请问,应该用什么办法完成这个功能?谢谢。
换个说法,要用vc写一个数据库程序,只用和一个数据库连接,然后在多个界面中使用,应该怎么办比较好啊?谢谢。我看网上的教材都是只有一个界面的,而这个界面对应的类就是继承自CRecordView,很方便的实现对数据的操作。
------解决方案--------------------
照我这样改改就行了,我是在初始化界面时进行读取的
帮同学看的一个课程作业,不用深入的彻底理解到底怎么回事,所以我是现学现用的,估计术语都说的不准确的。
在工程创建过程中连接好了数据库,工程创建完成后,对话框对应的类是继承自CRecordView的CMyView,里面还有一个继承自CRecordset的数据成员m_pSet,所以我可以很方便的将m_pSet中的数据成员连接到这个对话框中的某个控件上。
现在,我新建了一个对话框,这个对应的类是基于CDialog的,就无法如上一样的将数据和某个空间控件绑定起来了,请问,应该用什么办法完成这个功能?谢谢。
换个说法,要用vc写一个数据库程序,只用和一个数据库连接,然后在多个界面中使用,应该怎么办比较好啊?谢谢。我看网上的教材都是只有一个界面的,而这个界面对应的类就是继承自CRecordView,很方便的实现对数据的操作。
------解决方案--------------------
照我这样改改就行了,我是在初始化界面时进行读取的
- C/C++ code
CXscjxtApp *app=(CXscjxtApp *)AfxGetApp(); DWORD dwExStyle = LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE; m_list.ModifyStyle(0,LVS_REPORT|LVS_SINGLESEL|LVS_SHOWSELALWAYS); m_list.SetExtendedStyle(dwExStyle); m_list.InsertColumn (0,_T("总分")); m_list.InsertColumn(0, _T("政治")); m_list.InsertColumn(0, _T("历史")); m_list.InsertColumn(0, _T("化学")); m_list.InsertColumn(0, _T("物理")); m_list.InsertColumn(0, _T("英语")); m_list.InsertColumn(0, _T("数学")); m_list.InsertColumn(0, _T("语文")); m_list.InsertColumn(0, _T("姓名")); m_list.InsertColumn(0, _T("学号")); //m_ListCtrl.InsertColumn(0, _T("内容")); for(int j=0;j<10;j++) { m_list.SetColumnWidth(j ,93); //改变每一列宽度 } CDatabase db; db.Open(NULL,FALSE,FALSE,"ODBC;DSN=chengji;UID=asus;PWD="); CRecordset rs( &db ); rs.Open( CRecordset::forwardOnly, _T("SELECT * FROM cheng_ji")); short nFields = rs.GetODBCFieldCount(); int z=0; //CString nFields1=rs.GetODBCFieldCount(); while(!rs.IsEOF()) { CString varID; rs.GetFieldValue("xuehao", varID); m_list.InsertItem(0,varID); app->xuehao [z]=varID; CString varName; rs.GetFieldValue("name", varName); m_list.SetItemText(0, 1, varName); app->name [z]=varName; CString varyuwen; rs.GetFieldValue("yuwen", varyuwen); m_list.SetItemText(0, 2, varyuwen); int a=atoi(varyuwen); CString varshuxue; rs.GetFieldValue("shuxue",varshuxue); m_list.SetItemText(0,3,varshuxue); int b=atoi(varshuxue); CString varyingyu; rs.GetFieldValue("yingyu",varyingyu); m_list.SetItemText (0,4,varyingyu); int c=atoi(varyingyu); CString varwuli; rs.GetFieldValue("wuli",varwuli); m_list.SetItemText (0,5,varwuli); int d=atoi(varwuli); CString varhuaxue; rs.GetFieldValue("huaxue",varhuaxue); m_list.SetItemText (0,6,varhuaxue); int e=atoi(varhuaxue); CString varlishi; rs.GetFieldValue("lishi",varlishi); m_list.SetItemText (0,7,varlishi); int f=atoi(varlishi); CString varzhengzhi; rs.GetFieldValue("zhengzhi",varzhengzhi); m_list.SetItemText (0,8,varzhengzhi); int g=atoi(varzhengzhi); int h; h=a+b+c+d+e+f+g; CString varzongfen; varzongfen.Format ("%d",h); m_list.SetItemText(0,9,varzongfen); app->zongfen [z]=varzongfen; rs.MoveNext(); z++; } int nItem = m_list.GetItemCount (); app->p =nItem; //GetDlgItem(IDC_EDIT4)->SetWindowText(nItem); SetDlgItemInt(IDC_EDIT4,nItem); rs.Close(); db.Close(); CString time; time=CTime::GetCurrentTime ().Format ("%Y-%m-%d"); SetDlgItemText(IDC_EDIT5,time); ::ShowWindow(::GetDlgItem(m_hWnd,IDC_EDIT1),SW_HIDE);
------解决方案--------------------
在stdafx.h 中加入 #include <afxdb.h>
在SDI或MDI中生成的记录集类在对话框中照样可以使用