298上位机VC MFC使用ADO计算域最大最小平均值
ADO计算域最大最小平均值
功能展示
ADO数据库程序中,求极值其实就是对记录中某个字段值的范围进行界定,另外求平均值也是很常用的数据处理过程,我们当前例程就实现指定记录集一字段中最大,最小,平均值的获取,效果如图,程序运行会初始化连接根目录数据库文件,点击界面的三个按钮就会分别获取我们想要的最大,大小,平均值;
要点提示
求平均值的SQL语句为
select AVG(FieldName) from TableName where Condition
求最大值的SQL语句为
select MAX(FieldName) from TableName
求最小值的SQL语句为
select MIN(FieldName) from TableName
实现功能
1.新建基于对话框的应用程序
2.在App类的InitInstance()函数中添加代码AfxOleInit();//初始化COM,创建ADO连接等操作
3.在stdafx.h中加入ADO支持库
#import “c:\program files\common files\system\ado\msado15.dll” no_namespace rename (“EOF”, “adoEOF”) 及#include "icrsint.h"//IADORecordBinding 头文件
4.主对话框中添加变量public:
_ConnectionPtr m_pConnection; 并初始化
HRESULT hr;
try
{
hr =m_pConnection.CreateInstance("ADODB.Connection");//创建Connection对象
if(SUCCEEDED(hr))
{
hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=stuinf.mdb","","",adModeUnknown);
}
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
}
5.按照例程界面,添加三编辑框,IDC_EDIT1,IDC_EDIT2,IDC_EDIT3,三按钮<年龄域最小值查找><年龄域最大值查找><good学生年龄均值>关联按钮的点击函数
void CGkbc8Dlg::OnFindmin()
{
_RecordsetPtr m_pRecordset;
_variant_t RecordsAffected;
m_pRecordset =m_pConnection->Execute("select MIN(age) from course",&RecordsAffected,adCmdText);
_variant_t vIndex = (long)0;
_variant_t vCount = m_pRecordset->GetCollect(vIndex);
m_pRecordset->Close();
m_pRecordset.Release();
SetDlgItemInt(IDC_EDIT1,vCount.lVal);
}
void CGkbc8Dlg::OnFindmax()
{
_RecordsetPtr m_pRecordset;
_variant_t RecordsAffected;
m_pRecordset =m_pConnection->Execute("select MAX(age) from course",&RecordsAffected,adCmdText);
_variant_t vIndex = (long)0;
_variant_t vCount = m_pRecordset->GetCollect(vIndex);
m_pRecordset->Close();//关闭记录集
m_pRecordset.Release();
SetDlgItemInt(IDC_EDIT2,vCount.lVal);
}
void CGkbc8Dlg::OnAverage()
{
_RecordsetPtr m_pRecordset;
_variant_t RecordsAffected;
m_pRecordset=m_pConnection->Execute("select AVG(age) from course where comment='good'",&RecordsAffected,adCmdText);
_variant_t vIndex = (long)0;
_variant_t vCount = m_pRecordset->GetCollect(vIndex);
m_pRecordset->Close();
m_pRecordset.Release();
SetDlgItemInt(IDC_EDIT3,(long)vCount);
}
我们来演示功能实现过程
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|