262上位机VC MFC使用ODBC显示数据表全部记录
262上位机VC MFC使用ODBC显示数据表全部记录
功能展示
我们在使用数据库时很多情况都要显示记录集的全部数据,比如打印,那么我们就得使用代码将表中的数据全部的显示出来,我们当前例程就实现了这一功能,程序运行自动连接数据源,将数据源中指定表格的数据全部显示出来,效果如图
要点提示
1.数据库表的全部遍历可以使用CRecordSet类的IsEOF()函数及MoveNext()结合来实现,IsEOF()表示是否已经MOVENEXT()到了表格的尾部 实现功能 1.新建基于单文档的应用程序; 2.再用类向导新建一基于Crecordset的类CODBCSet; 在文档中类中添加此类的头文件#include “ODBCSet.h”及变量public:CODBCSetm_ODBCSet;在视窗中添加此类的头文件#include “ODBCSet.h”及变量public:CODBCSet *m_pSet; 3.在视窗的初始化函数OnInitialUpdate()中初始变量的初始化 - void CGkbc8View::OnInitialUpdate()
- {
- CScrollView::OnInitialUpdate();
- //<>
- 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()函数中实现数据表内容的全部读取与显示 - void CGkbc8View::OnDraw(CDC* pDC)
- {
- CGkbc8Doc* pDoc = GetDocument();
- ASSERT_VALID(pDoc);
- // TODO: add draw code for native data here
- TEXTMETRIC txtm;
- int nLineHight,y=0;
- CString str;
- pDC->GetTextMetrics(&txtm);
- nLineHight=txtm.tmHeight+txtm.tmExternalLeading;
- CPoint point(0,0);
- if(m_pSet->IsBOF())//检查是否空记录集
- return;
- m_pSet->MoveFirst();
- pDC->TextOut(point.x,point.y,"StudentID");//在点point(x,y)显示StudentID
- pDC->TextOut(point.x+1000,point.y,"StudentName");
- pDC->TextOut(point.x+4000,point.y,"GradYear");
- point.y-=nLineHight*2;
-
- while(!m_pSet->IsEOF())//循环,直到数据库末尾
- {
- str.Format("%d",m_pSet->m_ID);//把变量m_ID的值赋予变量str
- pDC->TextOut(point.x,point.y,str);
- str.Format("%s",m_pSet->m_Name);
- pDC->TextOut(point.x+1000,point.y,str);
- str.Format("%d",m_pSet->m_GradYear);
- pDC->TextOut(point.x+4000,point.y,str);
- m_pSet->MoveNext();//下移记录
- point.y-=nLineHight;
- }
- }
复制代码我们来演示功能实现的整个过程
|