QQ登录

只需一步,快速开始

260上位机VC MFC使用ODBC动态切换数据表

[ 复制链接 ]

260上位机VC MFC使用ODBC动态切换数据表

260上位机VC MFC使用ODBC动态切换数据表

260上位机VC MFC使用ODBC动态切换数据表
功能展示
ODBC程序时有时会在同一数据源中来回切换数据表,显示各表中的不同数据,我们当前例程就实现了两表间的动态切换功能,程序初始化运行时会调用<连接—数据源>按钮连接上数据源,再点击<切换数据表>按钮会在已连接的数据源中切换连接两表,效果如图;
要点提示
1,在连接了数据源后就可以动态连接表,表的连接实现可以通过CRecordSet的成员函数Open()实现,此函数通过不同SQL语言就可连接不同的表,要注意的是在连接其他表之前,记得关闭已经连接的表;
2.例程中有两静态文本控件ID,IDC_NAME,IDC_GRADYEAR要注意,不然切换表后对应的提示信息会不匹配;
实现功能
1.新建基于对话框的应用程序;
2.按照例程界面给主对话框添加三个编辑框ID分别 为IDC_STUID,IDC_STUNAME,IDC_STUGRADYEAR分别关联变量CString  m_ID;CString  m_Name; CString  m_Year;
3.再给主对话框添加两变量private:CDatabase m_DB;  CRecordset* m_Set; 及一头文件#include "Afxdb.h"//数据库支持
4.分别添加按钮控件<连接--数据源><第一条记录><下一条记录><上一条记录><最后一条记录>分别关联函数
  1. void CGkbc8Dlg::OnConnect()
  2. {
  3.     m_Set=new CRecordset(&m_DB);
  4.         if(!m_DB.OpenEx(_T("DSN=student"),0))//连接数据源
  5.         {
  6.                 AfxMessageBox("打开数据源失败!!");//报告错误
  7.                 return;
  8.         }
  9.         if(!m_Set->IsOpen())
  10.         {
  11.         m_Set->Open(CRecordset::dynaset,_T("Select * from 表1"));//选择数据表并打开
  12.         }
  13.     if(m_Set->IsEOF())//记录集是否为空
  14.         {
  15.                 AfxMessageBox("记录集没有记录");
  16.                 return;
  17.         }
复制代码
  1. m_Set->MoveFirst();//第一个记录
  2.         m_Set->GetFieldValue((short)0,m_ID);//把第0 列赋给此控件
  3.     m_Set->GetFieldValue((short)1,m_Name);//把第1 列赋给此控件
  4.     m_Set->GetFieldValue((short)2,m_Year);//把第2 列赋给此控件
  5.     UpdateData(FALSE);//更新对话框        
  6. }
  7. void CGkbc8Dlg::OnSelect()
  8. {
  9.         m_Set->MoveFirst();//第一个记录
  10.         m_Set->GetFieldValue((short)0,m_ID);//把第0 列赋给此控件
  11.     m_Set->GetFieldValue((short)1,m_Name);//把第1 列赋给此控件
  12.     m_Set->GetFieldValue((short)2,m_Year);//把第2 列赋给此控件
  13.     UpdateData(FALSE);//更新对话框        
  14. }
  15. void CGkbc8Dlg::OnRecordNext()
  16. {
  17.         m_Set->MoveNext();//下一个记录开始
  18.         m_Set->GetFieldValue((short)0,m_ID);//把第0 列赋给此控件
  19.     m_Set->GetFieldValue((short)1,m_Name);//把第0 列赋给此控件
  20.     m_Set->GetFieldValue((short)2,m_Year);//把第0 列赋给此控件
  21.     UpdateData(FALSE);//更新对话框        
  22. }
  23. void CGkbc8Dlg::OnRecordPrev()
  24. {
  25.         m_Set->MovePrev();//上一个记录开始
  26.         m_Set->GetFieldValue((short)0,m_ID);//把第0 列赋给此控件
  27.     m_Set->GetFieldValue((short)1,m_Name);//把第0 列赋给此控件
  28.     m_Set->GetFieldValue((short)2,m_Year);//把第0 列赋给此控件
  29.     UpdateData(FALSE);//更新对话框        
  30. }
  31. void CGkbc8Dlg::OnRecordLast()
  32. {
  33.         m_Set->MoveLast();//最后一个记录开始
  34.         m_Set->GetFieldValue((short)0,m_ID);//把第0 列赋给此控件
  35.     m_Set->GetFieldValue((short)1,m_Name);//把第0 列赋给此控件
  36.     m_Set->GetFieldValue((short)2,m_Year);//把第0 列赋给此控件
  37.     UpdateData(FALSE);//更新对话框        
  38. }
复制代码
OnConnect()函数可以选择性在程序初始化是调用一次
5.再给主对话框添加一变量m_bSwitch,初始化为  m_bSwitch =FALSE;对话框资源中修改静态文本控件<姓名><毕业时间>ID分别为IDC_NAME, IDC_GRADYEAR, 添加一按钮<切换 数据表>关联函数,实现不同表间的切换功能
  1. void CGkbc8Dlg::OnSwitch()
  2. {
  3.         if(m_Set->IsOpen())
  4.                 m_Set->Close();
  5.         CWnd *pWnd1=GetDlgItem(IDC_NAME);//得到控件句柄
  6.         CWnd *pWnd2=GetDlgItem(IDC_GRADYEAR);//
  7.         if(m_bSwitch)
  8.         {
  9.                 pWnd1->SetWindowText("姓名");
  10.                 pWnd2->SetWindowText("毕业时间");
  11.                 //选择数据表并打开
  12.                 m_Set->Open(CRecordset::dynaset,_T("Select * from 表1"));
  13.                 m_Set->MoveFirst();//第一个记录
  14.                 m_Set->GetFieldValue((short)0,m_ID);//把第0 列赋给此控件
  15.                 m_Set->GetFieldValue((short)1,m_Name);//把第1 列赋给此控件
  16.                 m_Set->GetFieldValue((short)2,m_Year);//把第2 列赋给此控件
  17.                 UpdateData(FALSE);//更新对话框
  18.                 m_bSwitch=FALSE;
  19.         }
  20.         else
  21.         {
  22.                 pWnd1->SetWindowText("家庭住址");
  23.                 pWnd2->SetWindowText("电话号码");
  24.                 //选择数据表并打开
  25.                 m_Set->Open(CRecordset::dynaset,_T("Select * from Basic"));
  26.                 m_Set->MoveFirst();//第一个记录
  27.                 m_Set->GetFieldValue((short)0,m_ID);//把第0 列赋给此控件
  28.                 m_Set->GetFieldValue((short)1,m_Name);//把第1 列赋给此控件
  29.                 m_Set->GetFieldValue((short)2,m_Year);//把第2 列赋给此控件
  30.                 UpdateData(FALSE);//更新对话框
  31.                 m_bSwitch=TRUE;
  32.         }        
  33. }
复制代码
我们来演示下功能实现的整个过程
请点击此处下载

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

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

文件名称:260.上位机VC MFC使用ODBC动态切换数据表.zip 
文件大小:33.1 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

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

  

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

  

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


回复

使用道具 举报

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