QQ登录

只需一步,快速开始

279上位机VC MFC使用DAO综合查询记录

[ 复制链接 ]

279上位机VC MFC使用DAO综合查询记录

279上位机VC MFC使用DAO综合查询记录
279上位机VC MFC使用DAO综合查询记录

功能展示

在用DAO进行编写数据库程序时,查询功能也是很常用的一种功能,我们当前例程使用CDaoTableDef类演示如何查询数据库,效果如图,可以通过<按评定级别查询><按年龄区查询>也可以<属性查询>
要点提示
1.在对记录集操作之后,最后退出程序,一定要把记录集指针重新放置在首位置,随后调用Close函数关闭该记录对象;
2. COleVariant类型的变量在转化为长整形或字符串类型时,要恰当的V_I4(COleVariant&VAR)函数,以免数据出现截断错误;
实现功能
1.新建基于单文档应用程序,在创建过程中选择基于DAO,数据库文件选择例程根目录数据库文件,表选择course,具体的创建操作过程可以参考视频演示;
2.根据例程界面添加两组合框控件ID为IDC_COMBO1, IDC_COMBO2,再添加一编辑框控件ID为IDC_AGEEDIT
3,添加两列表框控件ID分别 为IDC_ITEMLIST, IDC_FEATURELIST用于显示搜索的结果;

4.添加三按钮<按评定级别查询><按年龄区查询><属性查询>用于执行查询操作,关联点击函数
  1. void CGkbc8View::OnComreq() //按评定级别查询
  2. {
  3.         CString sCombo1Text;
  4.         CComboBox *pComboBox1 = (CComboBox *)GetDlgItem(IDC_COMBO1);
  5.         pComboBox1->GetLBText(pComboBox1->GetCurSel(),sCombo1Text);

  6.         CListCtrl *pItemList = (CListCtrl *)GetDlgItem(IDC_ITEMLIST);
  7.         pItemList->DeleteAllItems();

  8.     CGkbc8Set DaoRecordset;
  9.         CString str;
  10.         str.Format("%s",DaoRecordset.GetDefaultDBName());

  11.         CDaoDatabase db;
  12.         db.Open(str);
  13.         CDaoQueryDef DaoQueryDef(&db);
  14.         CString sql;
  15.         sql.Format("Select * from course WHERE comment='%s'",sCombo1Text);
  16.         DaoQueryDef.Create(NULL,sql);
  17.         CDaoRecordset rs(&db);
  18.         rs.Open(&DaoQueryDef);
复制代码
  1. COleVariant var;
  2.     CString str1;
  3.         int nItem;
  4.         rs.MoveFirst();
  5.         while(!rs.IsEOF())
  6.         {
  7.                 var=rs.GetFieldValue(0);
  8.         str1.Format(_T("%ld"),V_I4(&var));
  9.         nItem=pItemList->InsertItem(0,str1);
  10.         var=rs.GetFieldValue(1);
  11.         str1.Format(_T("%s"),V_I4(&var));
  12.             pItemList->SetItemText(nItem,1,str1);
  13.                 var=rs.GetFieldValue(2);
  14.         str1.Format(_T("%ld"),V_I4(&var));
  15.                 pItemList->SetItemText(nItem,2,str1);
  16.                 var=rs.GetFieldValue(3);
  17.         str1.Format(_T("%s"),V_I4(&var));
  18.                 pItemList->SetItemText(nItem,3,str1);
  19.                 var=rs.GetFieldValue(4);
  20.         str1.Format(_T("%s"),V_I4(&var));
  21.                 pItemList->SetItemText(nItem,4,str1);
  22.                 rs.MoveNext();
  23.         }
  24.         rs.MoveFirst();
  25.         rs.Close();
  26.         db.Close();        
  27. }
  28. void CGkbc8View::OnAgereq() //按年龄区查询
  29. {
  30.         long nAge = (long)GetDlgItemInt(IDC_AGEEDIT);
  31.         CString sCombo2Text;
  32.         CComboBox *pComboBox2 = (CComboBox *)GetDlgItem(IDC_COMBO2);
  33.         pComboBox2->GetLBText(pComboBox2->GetCurSel(),sCombo2Text);
  34. //
  35.         CListCtrl *pItemList = (CListCtrl *)GetDlgItem(IDC_ITEMLIST);
  36.         pItemList->DeleteAllItems();
  37.         CDaoDatabase db;
  38.     CGkbc8Set DaoRecordset;
  39.         CString str;
  40.         str.Format("%s",DaoRecordset.GetDefaultDBName());
  41.         db.Open(str);
  42.         CDaoQueryDef DaoQueryDef(&db);
  43.         CString sql;
复制代码
  1. if(sCombo2Text=="大于")
  2.         sql.Format("Select * from course WHERE age>%d",nAge);
  3.         else if(sCombo2Text=="小于")
  4.             sql.Format("Select * from course WHERE age<%d",nAge);
  5.         else
  6.                         sql.Format("Select * from course WHERE age=%d",nAge);
  7.         DaoQueryDef.Create(NULL,sql);
  8.         CDaoRecordset rs(&db);
  9.         rs.Open(&DaoQueryDef);

  10.         COleVariant var;
  11.     CString str1;
  12.         int nItem;
  13.         rs.MoveFirst();
  14.         while(!rs.IsEOF())
  15.         {
  16.                 var=rs.GetFieldValue(0);
  17.         str1.Format(_T("%ld"),V_I4(&var));
  18.         nItem=pItemList->InsertItem(0,str1);
  19.         var=rs.GetFieldValue(1);
  20.         str1.Format(_T("%s"),V_I4(&var));
  21.             pItemList->SetItemText(nItem,1,str1);
  22.                 var=rs.GetFieldValue(2);
  23.         str1.Format(_T("%ld"),V_I4(&var));
  24.                 pItemList->SetItemText(nItem,2,str1);
  25.                 var=rs.GetFieldValue(3);
  26.         str1.Format(_T("%s"),V_I4(&var));
  27.                 pItemList->SetItemText(nItem,3,str1);
  28.                 var=rs.GetFieldValue(4);
  29.         str1.Format(_T("%s"),V_I4(&var));
  30.                 pItemList->SetItemText(nItem,4,str1);
  31.                 rs.MoveNext();
  32.         }
  33.         rs.MoveFirst();
  34.         rs.Close();
  35.         db.Close();        
  36. }
  37. void CGkbc8View::OnFeabutton() //属性查询
  38. {
  39.         CListCtrl *pList = (CListCtrl *)GetDlgItem(IDC_FEATURELIST);
  40.         pList->DeleteAllItems();
  41.         //
  42.         CDaoDatabase db;
复制代码
  1. CGkbc8Set DaoRecordset;

  2.         CString str;
  3.         str.Format("%s",DaoRecordset.GetDefaultDBName());
  4.         db.Open(str);
  5.         CDaoQueryDef DaoQueryDef(&db);
  6.         CString sql="Select * from course";
  7.         DaoQueryDef.Create(NULL,sql);

  8.         int num=(int)DaoQueryDef.GetFieldCount();
  9.         CDaoFieldInfo fi;
  10.         CString str1;
  11.     CString str2;
  12.     CString str3;
  13.         for(int i=0;i<num;i++)
  14.         {
  15.                 DaoQueryDef.GetFieldInfo(i,fi,AFX_DAO_PRIMARY_INFO);
  16.         str1=fi.m_strName;
  17.                 str2.Format("%d",fi.m_nType);
  18.                 str3.Format("%d",fi.m_lSize);
  19.         int n=pList->InsertItem(0,str1);
  20.             pList->SetItemText(n,1,str2);
  21.         pList->SetItemText(n,2,str3);
  22.         }
  23.         db.Close();        
  24. }
复制代码
5.记得在程序初始化时初始化列表控件,及组合框数据


我们来演示整个功能实现过程

请点击此处下载

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

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

文件名称:279.上位机VC MFC使用DAO综合查询记录.zip 
文件大小:45.29 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

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

  

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

  

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


回复

使用道具 举报

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