a. 刷新:因为多处要刷新,用List Control组件显示记录,故而从面向对象的观点看,定义一个函数来实现此功能,便可到处利用。
void CAddressDlg::ShowData(void)
{
if(!m_inforset.IsOpen( )) // 打开数据库指针
m_inforset.Open( );
m_addrlist.DeleteAllItems( ); // 删除所有记录
if(m_inforset.IsBOF( ) && m_inforset.IsEOF( )) // 没一条记录
AfxMessageBox("没有数据,如何显示!");
int i=0;
m_inforset.MoveFirst( );
while(!m_inforset.IsEOF( ))
{
m_addrlist.InsertItem(i,m_inforset.m_id,0);// 插入一行,i为行
m_addrlist.SetItemText(i,1,m_inforset.m_name);
m_addrlist.SetItemText(i,2,m_inforset.m_gender);
m_addrlist.SetItemText(i,3,m_inforset.m_address);
m_addrlist.SetItemText(i,4,m_inforset.m_postcode);
m_addrlist.SetItemText(i,5,m_inforset.m_email);
m_addrlist.SetItemText(i,6,m_inforset.m_memo);
i++;
m_inforset.MoveNext( );
}
CString cntstr;
cntstr.Format("%d",m_addrlist.GetItemCount( ));
m_cnt=cntstr; // 获取记录个数
m_addrlist.ShowWindow(SW_SHOW);
m_queryaddrlist.ShowWindow(SW_HIDE);
UpdateData(false); // 更新浏览界面
}
b. 添加记录:定义函数Add实现添加记录
void CAddressDlg::Add(void)
{
if(adddlg.DoModal( )==IDOK)
{
// 设置各个控件的属性
if(adddlg.m_id.GetLength( )==0)
{
AfxMessageBox("学号不能为空,请检查!");
return;
}
else
{
if(!m_inforset.IsOpen( )) // 打开数据链接
m_inforset.Open( );
// 以下程序保证学号不重复,因为学号是关键字
m_inforset.MoveFirst( ); // 移动到第一条记录
int flag=0;
while(!m_inforset.IsEOF( ))
{
if(m_inforset.m_id==adddlg.m_id)
{
flag=1;
break;
}
else
m_inforset.MoveNext( );
}
if(flag==0) // 没有这条记录,可以大胆的添加了
{
m_inforset.AddNew( );
// 以下是各字段的值
m_inforset.m_id=adddlg.m_id;
m_inforset.m_name=adddlg.m_name;
m_inforset.m_gender=adddlg.m_gender;
m_inforset.m_address=adddlg.m_address;
m_inforset.m_postcode=adddlg.m_postcode;
m_inforset.m_email=adddlg.m_email;
m_inforset.m_memo=adddlg.m_memo;
m_inforset.Update( ); // 提交数据
AfxMessageBox("恭喜你,添加成功!");
ShowData( ); // 刷新记录
}
else
AfxMessageBox("学号已存在,不能再添加了!");
}
}
}