QQ登录

只需一步,快速开始

263上位机VC MFC使用ODBC显示与排序数据表全部记录

[ 复制链接 ]

263上位机VC MFC使用ODBC显示与排序数据表全部记录

263上位机VC MFC使用ODBC显示与排序数据表全部记录

263上位机VC MFC使用ODBC显示与排序数据表全部记录
功能展示
我们在显示记录集的全部数据时,时常会因为添加,删除或修改数据记录,使得数据的显示杂乱无章,我们当前例程实现通过数据表的不同字段进行排序,效果如图,点击菜单的排序,有三个选项<按学号排序><按姓名排序><按时间排序>可以实现不现的排序方法;
要点提示
1.数据库表的排序可以通过Crecordset类的成员变量m_strSort来实现,排序时记得事先得关闭已经打开的记录集,如我们当前的例程实现代码m_pSet->Close();m_pSet->m_strSort="ID";m_pSet->Open(CRecordset::snapshot,NULL,CRecordset::readOnly);
实现功能
1.新建基于单文档的应用程序;
2.再用类向导新建一基于Crecordset的类CODBCSet;
在文档中类中添加此类的头文件#include “ODBCSet.h”及变量public:CODBCSetm_ODBCSet;在视窗中添加此类的头文件#include “ODBCSet.h”及变量public:CODBCSet *m_pSet;   UINT     m_nSortFlag;
3.在视窗的初始化函数OnInitialUpdate()中初始变量的初始化
void CGkbc8View::OnInitialUpdate()
{
  CScrollView::OnInitialUpdate();
//<>
              m_nSortFlag =0;
  CSize sizeTotal;
  sizeTotal.cx =sizeTotal.cy = 100;
  SetScrollSizes(MM_TEXT,sizeTotal);
  SetScrollSizes(MM_HIENGLISH,sizeTotal);
  m_pSet=&GetDocument()->m_ODBCSet;
  if(m_pSet->IsOpen())//检查记录集是否打开
  m_pSet->Close();//关闭记录集
  m_pSet->Open();//打开记录集

}
4.在视窗类的OnDraw()函数中实现数据表内容的全部读取与显示
  1. void CGkbc8View::OnDraw(CDC* pDC)
  2. {
  3.         CGkbc8Doc* pDoc = GetDocument();
  4.         ASSERT_VALID(pDoc);
  5.         // TODO: add draw code for native data here

  6.         TEXTMETRIC txtm;
  7.     int nLineHight,y=0;
  8.         CString str;
  9.         pDC->GetTextMetrics(&txtm);
  10.         nLineHight=txtm.tmHeight+txtm.tmExternalLeading;
  11.         CPoint point(0,0);
  12.         if(m_pSet->IsBOF())//检查是否空记录集
  13.                 return;
  14.         m_pSet->MoveFirst();
  15.         pDC->TextOut(point.x,point.y,"StudentID");//在点point(x,y)显示StudentID
  16.         pDC->TextOut(point.x+1000,point.y,"StudentName");
  17.         pDC->TextOut(point.x+4000,point.y,"GradYear");
  18.         point.y-=nLineHight;
  19.         point.y-=nLineHight;
  20.         if(m_nSortFlag==0)
  21.         {
  22.                 m_pSet->Close();
  23.                 m_pSet->m_strSort="ID";
  24.                 m_pSet->Open(CRecordset::snapshot,NULL,CRecordset::readOnly);
  25.         
  26.         while(!m_pSet->IsEOF())//循环,直到数据库末尾
  27.                 {
  28.                     str.Format("%d",m_pSet->m_ID);//把变量m_ID的值赋予变量str
  29.                     pDC->TextOut(point.x,point.y,str);
  30.                     pDC->TextOut(point.x+1000,point.y,m_pSet->m_Name);
  31.                     str.Format("%d",m_pSet->m_GradYear);
  32.                     pDC->TextOut(point.x+4000,point.y,str);
  33.                     m_pSet->MoveNext();//下移记录
  34.                     point.y-=nLineHight;
  35.                 }
  36.         }
  37.         if(m_nSortFlag==1)
  38.         {
  39.                 m_pSet->Close();
  40.                 m_pSet->m_strSort="Name";
复制代码
  1. m_pSet->Open(CRecordset::snapshot,NULL,CRecordset::readOnly);
  2.         while(!m_pSet->IsEOF())//循环,直到数据库末尾
  3.                 {
  4.                     str.Format("%d",m_pSet->m_ID);//把变量m_ID的值赋予变量str
  5.                     pDC->TextOut(point.x,point.y,str);
  6.                     pDC->TextOut(point.x+1000,point.y,m_pSet->m_Name);
  7.                     str.Format("%d",m_pSet->m_GradYear);
  8.                     pDC->TextOut(point.x+4000,point.y,str);
  9.                     m_pSet->MoveNext();//下移记录
  10.                     point.y-=nLineHight;
  11.                 }
  12.         }
  13.         if(m_nSortFlag==2)
  14.         {
  15.                 m_pSet->Close();
  16.                 m_pSet->m_strSort="GradYear";
  17.                 m_pSet->Open(CRecordset::snapshot,NULL,CRecordset::readOnly);
  18.         
  19.         while(!m_pSet->IsEOF())//循环,直到数据库末尾
  20.                 {
  21.                     str.Format("%d",m_pSet->m_ID);//把变量m_ID的值赋予变量str
  22.                     pDC->TextOut(point.x,point.y,str);
  23.                     pDC->TextOut(point.x+1000,point.y,m_pSet->m_Name);
  24.                     str.Format("%d",m_pSet->m_GradYear);
  25.                     pDC->TextOut(point.x+4000,point.y,str);
  26.                     m_pSet->MoveNext();//下移记录
  27.                     point.y-=nLineHight;
  28.                 }
  29.         }
  30. }
复制代码
添加三个菜单对变量m_nSortFlag进行赋值
  1. void CGkbc8View::OnId()
  2. {
  3.         m_nSortFlag=0;Invalidate();}
  4. void CGkbc8View::OnYear()
  5. {
  6.         m_nSortFlag=1;Invalidate();        }
  7. void CGkbc8View::OnName()
  8. {
  9.         m_nSortFlag=2;Invalidate();}
复制代码
我们来演示功能实现的整个过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:263.上位机VC MFC使用ODBC显示与排序数据表全部记录.zip 
文件大小:44.24 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我


  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!




回复

使用道具 举报

快速回复 返回列表 客服中心 搜索