当前位置: 开源爱好者 » 编程教程 » VC++教程 » 正文

VC++ 数据库中读取数字转换成中文大写

上接第一部分:VC++阿拉伯数字转中文大写。(20)给对话框增加两个静态文本框,ID 分别为IDC_NUM 和IDC_CAPITALNUM,用来分别显示阿拉伯数字和对应的中文大写数字, 并分别生成对应的CString 类型变量m_strNum 和m_strCapitalNum。

(21)在对话框的OnInitDialog 函数中打开数据库,并显示第一条记录,其代码如下:

BOOL CCapitalNumDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//其他初始化代码
//⋯⋯
//初始化环境
::CoInitialize(NULL);
//创建并打开数据库连接对象
_variant_t vFieldValue;
CString strFieldValue;
m_pCon.CreateInstance(__uuidof(Connection));
//打开数据库
m_pCon->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=capitalnum.mdb","","",NULL); //创建并打开记
录集对象
m_pRs.CreateInstance(__uuidof(Recordset));
m_pRs->Open("select* from table1",m_pCon.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
if(VARIANT_FALSE == m_pRs->EndOfFile)
{
//获得第一条记录并显示
long Num;
vFieldValue = m_pRs->GetCollect("Num");
strFieldValue = (char*)_bstr_t(vFieldValue);
Num = atol(strFieldValue.GetBuffer(0));;
vFieldValue.Clear();
m_strNum = strFieldValue;
longtostr(Num);
m_strCapitalNum = strNum;
}
UpdateData(FALSE);
return TRUE; 
}

(22)给对话框增加【下一条】按钮,其响应函数如下:

void CCapitalNumDlg::OnNext()
{
_variant_t vFieldValue;
CString strFieldValue;
//记录集指针后移一条
m_pRs->MoveNext();
if(VARIANT_FALSE == m_pRs->EndOfFile)
{
//获得当前条的数据并显示
long Num;
vFieldValue = m_pRs->GetCollect("Num");
strFieldValue = (char*)_bstr_t(vFieldValue);
Num = atol(strFieldValue.GetBuffer(0));;
vFieldValue.Clear();
m_strNum = strFieldValue;
//转换为大写中文数字
longtostr(Num);
m_strCapitalNum = strNum;
UpdateData(FALSE);
}
else
{
//定位到最后一条
m_pRs->MovePrevious();
AfxMessageBox("已经到最后一条了");
}
}

(23)给对话框增加【上一条】按钮,其响应函数如下:

void CCapitalNumDlg::OnPrv()
{
_variant_t vFieldValue;
CString strFieldValue;
//记录集指针前移一条
m_pRs->MovePrevious();
if(VARIANT_FALSE == m_pRs->FirstOfFile)
{
//获得当前条的数据并显示
long Num;
vFieldValue = m_pRs->GetCollect("Num");
strFieldValue = (char*)_bstr_t(vFieldValue);
Num = atol(strFieldValue.GetBuffer(0));;
vFieldValue.Clear();
m_strNum = strFieldValue;
//转换为大写中文数字
longtostr(Num);
m_strCapitalNum = strNum;
UpdateData(FALSE);
}
else
{
//定位到第一条
m_pRs->MoveNext();
AfxMessageBox("已经到第一条了");
}
}

(24)响应对话框的WM_DESTROY 消息,关闭数据库,其响应函数如下:

void CCapitalNumDlg::OnDestroy()
{
//关闭数据库
::CoUninitialize();
m_pRs->Close();
m_pCon->Close();
CDialog::OnDestroy();
}

CopyRight 2018© 开源爱好者 All Rights Reserved 豫ICP备16030607号 隐私声明 网站地图