在mfc中如何求access数据库的平均分

在mfc中编写一个学生信息管理系统,运用access数据库;
如何求一列的平均分;
select avg(语文) from score group by 编号。。。。。
总是说未定义select和avg??
求整么做,,详细代码

贴上下文完整代码上来吧。
MFC访问access,需要ADO或者ODBC方式连接,
而查询语句,是一个参数字符串:"select avg(语文) from score group by 编号",如果使用了正确的方法,不会有未定义提示。
提示说未定义select和avg,至少你没有使用字符串双引号。追问

数据库和mfc界面如上

查找,添加,编辑,删除功能都搞好了,可以运行;

现在菜单-——查找平均分——下拉有语文成绩,英语成绩..............;

要求是一按语文成绩就弹出语文平均分.....................

接着就做不出了'''''''''

求''''''''''''''''''''''''''

追答

界面没用啊,代码贴出来帮你调整。

追问

void CMainFrame::OnChiness()
{
// TODO: Add your command handler code here

}
没什么代码啊,就是添加一个映射和函数就行啊不是吗?

追答

费了个劲了。。。追问几次了也没说明白用的什么连接方式,访问数据库的代码用的哪一种。

给你个例子吧,没法细说了:

CString strSql;
strSql = _T("select avg(语文) AS 平均分 from score group by 编号");
HRESULT hr = pRecordset->Open(_bstr_t(strSql), 
_variant_t((IDispatch*)pConnection, TRUE), adOpenUnspecified, 
adLockUnspecified, adCmdUnknown);
if(hr != S_OK)
{
pConnection->Close();
return FALSE;
}
_variant_t vt;
pRecordset->MoveFirst();
while(!pRecordset->adoEOF)
{
vt = pRecordset->Fields->GetItem("平均分")->Value;
pRecordset->MoveNext();
}
pConnection->Close();

追问

弱弱问一句,能留个邮箱么?悬赏加到100了。。。。。。。。。。

追答

CDatabase db 最好保存为一个全局变量或者成员变量方便使用,不用每次Open

void CMyView::OnChiness() 
{
    // TODO: Add your command handler code here
    CString str;
    CDatabase db;
    db.Open("ODBC;DSN=Database Example For VC++");
    if (db.IsOpen())
    {
        CRecordset mset(&db);
        mset.Open(CRecordset::forwardOnly,"select avg(语文成绩) as AVGC from [学生信息]");
        mset.GetFieldValue("AVGC",str);
        str = "语文平均分为:\n" + str;
        AfxMessageBox(str);
        mset.Close();
        db.Close();
    }
}

 

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-19
你先确认表中有没有“语文”这一列?“语文”是列名么?追问

语文 是字段名

数据库和mfc界面如上

查找,添加,编辑,删除功能都搞好了,可以运行;

现在菜单-——查找平均分——下拉有语文成绩,英语成绩..............;

要求是一按语文成绩就弹出语文平均分.....................

接着就做不出了'''''''''

求''''''''''''''''''''''''''

追答

那就按理是select avg(语文成绩) from score

而不是 语文

追问

也是一样出错啊

追答

表名呢?select avg(语文成绩) from 学生信息。

既然你之前的查找,添加这些功能都OK了,这个字段信息应该不会错吧。

追问

http://pan.baidu.com/s/1rE5gN
能帮我看看代码么?继续加悬赏。。。。。。。
跪求好人

追答

在看了,不过先看的ACCESS中的话
按理说 select avg(语文成绩) from 学生信息 是可以的了。
我再开虚拟机看下你代码

相似回答