MFC access分页技术

260 篇文章 10 订阅

简单应用视频:c++ access操作_哔哩哔哩_bilibili

根据ado技术,采用封装的分页api,具体实现如下:


// CPageDlg 消息处理程序
BOOL CPageDlg::OnInitDialog()
{
    CString strName = L"test.mdb";
    CString strFullPath = _InitLocalPath(strName);
    if (!_IsMDBConnection(strFullPath))
    {
        m_MDB.Close();
        return FALSE;
    }

    CString strQuerySQL;
    strQuerySQL.Format(_T("SELECT * FROM Res"));//查询语句
    m_cRe.SetADODatabase(&m_MDB);
    m_cRe.SetPageSize(20);
    bool bRet = m_cRe.Open(strQuerySQL, m_cRe.openQuery);
    if (!bRet)
    {
    }
    return TRUE;
}

BOOL CPageDlg::_IsMDBConnection(CString& strFilePath)
{
    m_MDB.SetConnectionString(strFilePath);

    BOOL bRet = m_MDB.Open();
    if (!bRet)
    {
        AfxMessageBox(_T("打开数据库失败"));
        return FALSE;
    }
    return TRUE;
}

//获取Debug的目录中的数据库文件
CString CPageDlg::_InitLocalPath(CString& strTemplateFileName)
{
    TCHAR modulePath[MAX_PATH];
    GetModuleFileName(NULL, modulePath, MAX_PATH);
    CString strModulePath(modulePath);
    strModulePath = strModulePath.Left(strModulePath.ReverseFind(_T('\\')));
    strModulePath = strModulePath + _T("\\") + strTemplateFileName;
    return strModulePath;
}

//上一页

void CPageDlg::OnBnClickedButton1()
{
    // TODO:  在此添加控件通知处理程序代码
    m_nPage--;
    OnReadAccess();
}

//下一页
void CPageDlg::OnBnClickedButton2()
{
    // TODO:  在此添加控件通知处理程序代码
    m_nPage++;
    OnReadAccess();
}

//首页
void CPageDlg::OnBnClickedButton3()
{
    // TODO:  在此添加控件通知处理程序代码

    m_nPage = 1;

    OnReadAccess(); //自定义的函数,表示输出记录到控件

}

void CPageDlg::OnReadAccess() 
{
    m_cRe.SetAbsolutePage(m_nPage);
    int nLastPosition = m_cRe.GetAbsolutePosition() + m_cRe.GetPageSize();
    CString strGroupID;
    while (!m_cRe.IsEof())
    {
        m_cRe.GetFieldValue(_T("id"), strGroupID);

        int nPosition = m_cRe.GetAbsolutePosition();
        if (nPosition >= nLastPosition - 1) break;

        m_cRe.MoveNext();
    }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值