258上位机VC MFC使用ODBC进行条件排序
258上位机VC MFC使用ODBC进行条件排序
功能展示
排序是数据库常用的操作,我们当前例程实现对数据库记录集进行排序的功能,通过组合框设置排序条件,再执行排序可以使记录集以一定顺序显示,效果如图;
要点提示
例程的排序功能主要是通过Crecordset类的成员变量m_strSort来实现,此变量赋予不同的值,将以不同的方式排序; 另外一个要注意的函数是Crecordset类的Open()函数;函数原型为 virtual BOOL Open( UINT nOpenType = AFX_DB_USE_DEFAULT_TYPE, LPCTSTR lpszSQL = NULL, DWORD dwOptions = none ); nOpenType 为记录集的打开方式,默认为snapshot; lpszSQL默认为空字符串,还可以是一个SQL的SELECT语句, 可以带WHEERE或ORDER BY条件,或是一个CALL语句,通过 CALL语句可以调用SQL存储过程; dwOptions ,打开记录集参数,默认为NONE,该参数可以取如下 值,以及如下值的组合, CRecordset::none , CRecordset::appendOnly , CRecordset::readOnly , CRecordset: ptimizeBulkAdd , CRecordset::useMultiRowFetch , CRecordset::skipDeletedRecords , CRecordset::useBookmarks , CRecordset::noDirtyFieldCheck , CRecordset::executeDirect , CRecordset::useExtendedFetch , CRecordset::userAllocMultiRowBuffers ,这些值的具体介绍可以查询MSDN手册;
实现功能 1.按照前面例程或当前视频中的方法,用根目录的Student.mdb创建数据源; 2.新建一个应用前面数据源的基于单文档的应用程序,具体过程可参考视频学习; 3.按程序界面,添加三编辑框,ID分别为IDC_EDIT_ID, IDC_EDIT_NAME,IDC_EDIT_GRADYEAR,分别关联SET类中的三个变量 m_ID; m_Name;m_GradYear 添加按钮<执行 排序>,关联函数 - void CGkbc8View::OnButtonSort()
- {
- m_pSet->Close();//关闭记录集
- int nIndex=m_ComSort.GetCurSel();//得到下拉组合框所选项目序号
- m_ComSort.GetLBText(nIndex,m_Sort);//得到下拉组合框所选项目文本
- if(m_Sort=="学号")
- {
- m_pSet->Close();//关闭记录集
- m_pSet->m_strSort="ID";//按照序号排序
- //根据打开方式排序记录集
- m_pSet->Open(CRecordset::snapshot,NULL,CRecordset::readOnly);
- m_pSet->MoveFirst();//移动到第一条记录
- UpdateData(FALSE);//更新对话框
- }
- if(m_Sort=="姓名")
- {
- m_pSet->Close();
- m_pSet->m_strSort="Name";//按照姓名排序
- //根据打开方式排序记录集
- m_pSet->Open(CRecordset::snapshot,NULL,CRecordset::readOnly);
- m_pSet->MoveFirst();//移动到第一条记录
- UpdateData(FALSE);//更新对话框
复制代码- }
- if(m_Sort=="毕业时间")
- {
- m_pSet->Close();
- m_pSet->m_strSort="GradYear";//按照毕业时间进行排序
- //根据打开方式排序记录集
- m_pSet->Open(CRecordset::snapshot,NULL,CRecordset::readOnly);
- m_pSet->MoveFirst();//移动到第一条记录
- UpdateData(FALSE);//更新对话框
- }
- }
复制代码4.添加组合框IDC_COMBO1,关联两变量 CComboBox m_ComSort; CString m_Sort;,并初始化组合框,向组合框内添加些文本 m_ComSort.InsertString(0,"学号"); m_ComSort.InsertString(0,"姓名"); m_ComSort.InsertString(0,"毕业时间"); m_ComSort.SetCurSel(0); 我们来演示下功能实现的整个过程
|