工控编程吧
标题:
300上位机VC MFC使用ADO按时间段搜索数据
[打印本页]
作者:
qq263946146
时间:
2016-9-24 21:00
标题:
300上位机VC MFC使用ADO按时间段搜索数据
(, 下载次数: 3)
上传
点击文件名下载附件
ADO按时间段搜索数据
功能展示
ADO数据库程序中,有时想搜索某时间段内的相关数据,我们当前例程演示如何搜索指定时间段内入学的学生,效果如图,例程运行时会初始化连接根目录数据库文件stuinf.mdb,并打开表students,当我们选择了时间段后,点击<搜索入学时间学生>例程会搜索出与指定时间段相符的学生,并显示出来;
要点提示
我们例程时间段搜索的SQL语句为
CString sql;
sql.Format("select * from students where btime>=CDate('%s') and btime<=CDate('%s')",strB,strE);
Students为数据表的表名, btime 为表内字段名,strB,strE为搜索时间的上下根;
实现功能
1.新建基于对话框的应用程序
2.在stdafx.h中加入ADO支持库
#import “c:\program files\common files\system\ado\msado15.dll” no_namespace rename (“EOF”, “adoEOF”) 及#include "icrsint.h"//IADORecordBinding 头文件
3.主对话框中添加变量public:
private:_ConnectionPtr m_pConn;_RecordsetPtr m_pRst;; 并初始化
::CoInitialize(NULL);
_variant_t vFieldValue;
CString strFieldValue;
m_pConn.CreateInstance(__uuidof(Connection));
try
{
m_pConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=stuinf.mdb","","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败!");
}
m_pRst.CreateInstance(__uuidof(Recordset));
m_pRst->Open("select * from students",m_pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
4.按例程界面添加两时间控件IDC_DATETIMEPICKER1,IDC_DATETIMEPICKER2,一列表控件IDC_LIST,及按钮控件<搜索上面入学时间的学生>关联按钮的点击函数
void CGkbc8Dlg::OnQuery()
{
CListBox *pListBox = (CListBox *)GetDlgItem(IDC_LIST);
pListBox->ResetContent();
m_pRst->Close();
CDateTimeCtrl *pTime1 =(CDateTimeCtrl *)GetDlgItem(IDC_DATETIMEPICKER1);
CDateTimeCtrl *pTime2 =(CDateTimeCtrl *)GetDlgItem(IDC_DATETIMEPICKER2);
//格式化时间
CTime Time1,Time2;
pTime1->GetTime(Time1);
pTime2->GetTime(Time2);
CString strB,strE;
strB=Time1.Format("%Y-%m-%d");
strE=Time2.Format("%Y-%m-%d");
//构造检索语句
CString sql;
sql.Format("select * from students where btime>=CDate('%s') and btime<=CDate('%s')",strB,strE);
BSTR bssql=sql.AllocSysString();
m_pRst->Open((_variant_t)bssql,m_pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
//显示结果
while(VARIANT_FALSE==m_pRst->EndOfFile)
{
_variant_t vFieldValue;
CString ID,Name,EnterTm;
CString strItem;
vFieldValue=m_pRst->GetCollect("id");
ID=(char*)_bstr_t(vFieldValue);
vFieldValue.Clear();
vFieldValue=m_pRst->GetCollect("name");
Name=(char*)_bstr_t(vFieldValue);
vFieldValue.Clear();
vFieldValue=m_pRst->GetCollect("btime");
EnterTm=(char*)_bstr_t(vFieldValue);
vFieldValue.Clear();
strItem.Format("学号为%s的%s同学的入学时间是%s",ID,Name,EnterTm);
pListBox->AddString(strItem);
m_pRst->MoveNext();
}
}
5,最后是程序退出时关闭记录集,即在程序 的OnDestroy()函数中添加代码
void CGkbc8Dlg::OnDestroy()
{
CDialog::OnDestroy();
m_pRst->Close();
m_pConn->Close();
::CoUninitialize();
}
我们来演示整个功能实现过程
[iqiyi]http://player.video.qiyi.com/5481d3627faa4d42d7d7a9d85fc6e7c4/0/0/w_19rsu6igpd.swf-albumId=6391645309-tvId=6391645309-isPurchase=0-cnId=12[/iqiyi]
(, 下载次数: 0)
上传
点击文件名下载附件 [weixinlianxi]1[/weixinlianxi]
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4