QQ登录

只需一步,快速开始

264上位机VC MFC使用ODBC基于列表视图显示数据表全部记录

[ 复制链接 ]

264上位机VC MFC使用ODBC基于列表视图显示数据表全部记录

264上位机VC MFC使用ODBC基于列表视图显示数据表全部记录

264上位机VC MFC使用ODBC基于列表视图显示数据表全部记录功能展示
使用列表视图来显示记录集数据界面会更友好编程也简单,还可以通过双击在界面上显示的记录条可以显示此条目是第几条记录等,我们当前例程就实现了利用列表视图为显示记录集数据的功能,效果如右图;
要点提示
1.这里要注意的是view类中记录集对象指针m_pSet的初始化,及赋值,在view的构造函数中初始化为NULL,在DOC类的OnNewDocument()被初始化为DOC类中的成员变量m_Set 有地址,这样在VIEW类的OnInitialUpdate()函数中显示数据库数据时才不会出错
实现功能
1.新建基于单文档的应用程序,记得视窗派生于CListView;
2.再用类向导新建一基于Crecordset的类CODBCSet;
在文档中类中添加此类的头文件#include “ODBCSet.h”及变量public:CODBCSetm_Set;在视窗中添加此类的头文件#include “ODBCSet.h”及变量public:CODBCSet *m_pSet; CListCtrl* m_List;
3.在视窗的构造函数中初始变化量,及析构函数中关闭记录集
  1. CGkbc8View::CGkbc8View()
  2. {
  3.         m_pSet=NULL;
  4.         m_List=&GetListCtrl();//获取列表视图控件
  5.         m_dwDefaultStyle|=LVS_REPORT;//以报表的格式显示
  6. }
  7. CGkbc8View::~CGkbc8View()
  8. {
  9.         if(m_pSet->IsOpen())        
  10.         m_pSet->Close();
  11. }
复制代码
4.在文档类的OnNewDocument()函数中初始化视窗类的变量m_pSet
  1. BOOL CGkbc8Doc::OnNewDocument()
  2. {
  3.         if (!CDocument::OnNewDocument())
  4.                 return FALSE;

  5.         // TODO: add reinitialization code here
  6.         // (SDI documents will reuse this document)
  7.         POSITION pos;
  8.         pos=GetFirstViewPosition();
  9.         CGkbc8View* pView =(CGkbc8View*)GetNextView(pos);
  10.         pView->m_pSet=&m_Set;

  11.         return TRUE;
  12. }
复制代码
5.在视窗类的OnInitialUpdate()函数中实现数据表内容的全部显示
  1. void CGkbc8View::OnInitialUpdate()
  2. {
  3.         CListView::OnInitialUpdate();
  4. //<>
  5.         if(m_pSet==NULL)
  6.         {
  7.                 AfxMessageBox("还没有对记录集进行初始化");
  8.                 return;
  9.         }
  10.         if(!m_pSet->IsOpen())
  11.         {
  12.                 m_pSet->Open();//打开记录集
  13.         }
  14.         int i=0,j=0;
  15.         CODBCFieldInfo DbFi;//存储记录集字段信息的结构体
  16.         LV_COLUMN m_Lc;//存储列信息的结构体
  17.         m_Lc.mask=LVCF_FMT|LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;//设置列属性
  18.         //读取记录集的字段信息
  19.         for(i=0;i<m_pSet->m_nFields;i++)
  20.         {
  21.                 m_pSet->GetODBCFieldInfo(i,DbFi);
  22.                 m_Lc.iSubItem=i;
  23.                 m_Lc.fmt=LVCFMT_CENTER;
  24.                 m_Lc.cx=DbFi.m_strName.GetLength()*10+16;
  25.                 m_Lc.pszText=DbFi.m_strName.GetBuffer(DbFi.m_strName.GetLength());
  26.                 GetListCtrl().InsertColumn(i,&m_Lc);
  27.         }
  28.         //根据记录集的数据信息添加行
  29.         LV_ITEM m_item;//条目结构体对象
  30.         CString string;//字符串临时变量
  31.         CDBVariant DbVariant;
  32.         i=0;
  33.         if(m_pSet->IsEOF())//记录集是否为空
  34.         {
  35.                 AfxMessageBox("记录集没有记录");
  36.                 return;
  37.         }
  38.         m_pSet->MoveFirst();//从第一个记录开始
  39.         while(m_pSet->IsEOF()==0)//是否到达最后一个记录
  40.         {
复制代码
  1. m_item.mask=LVIF_TEXT;
  2.                 m_item.iItem=i;
  3.                 m_item.iSubItem=0;
  4.                 m_pSet->GetFieldValue((short)0,string);
  5.                 m_item.pszText=string.GetBuffer(string.GetLength());
  6.                 m_List->InsertItem(&m_item);//插入条目
  7.                 //显示列数据
  8.                 for(j=1;j<m_pSet->m_nFields;j++)
  9.                 {
  10.                         m_pSet->GetFieldValue((short)j,string);
  11.                         m_List->SetItemText(i,j,string.GetBuffer(string.GetLength()));
  12.                 }
  13.                 m_pSet->MoveNext();//下移记录
  14.                 i++;
  15.         }
  16. }
复制代码
我们来演示功能实现的整个过程、
请点击此处下载

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

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

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


  

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

  

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

  

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




回复

使用道具 举报

点击查看
快速回复 返回列表 客服中心 搜索