朋友,帮忙看看,谢谢!

ssl8848 2006-08-28 04:36:53
朋友,帮忙看看
我有个List Control控件,里面有个“身份证号码”的字段
在这个List Control里共有接近万把条记录,我要在这里面确认有无重复的“身份证号码”:

//ColumnPersonID 是已经确定的身份证号码字段所在的列号;

//m_listCtrl里面是已经读入的所有身份证号码,估计有上万条

//m_listCtrl2是用于统计出重复身份证号码后网这个列表里面写入


void CReadexcelDlg::FindPersionID(void)
{
ContinueIndex = 0; //清0,下次插入时避免行出错
CSpreadSheet sheetw("c:\\lable2.xls","sheet1"); //打开数据表sheet1,统计出重复身份证号码后往lable2.xls写入

m_staticcount.SetWindowTextA("正在统计");
for( long i = 0 ; i < NumRow -1; i++ ) //共有好多行NumRow
{
strPersonID = m_listCtrl.GetItemText(i,ColumnPersonID-1);//得到m_listCtrl中"身份证号码“的值
for( long j=i+1; j< NumRow ; j++ )
{

strPersonIDtemp = m_listCtrl.GetItemText(j,ColumnPersonID-1);

if( strPersonID == strPersonIDtemp )
{
//如果是则插入到新列表中,估计就是这里的算法不对,帮忙看看


m_listCtrl2.InsertItem(i,_T(""));


//下面这个循环就是把确定重复的记录,按照原样写入新的m_listCtrl2表中
for( short x = 0 ; x < NumCol; x++)//NumCol共计列数

{

strInsertTemp = m_listCtrl.GetItemText(j,x);

m_listCtrl2.SetItemText(ContinueIndex,x,strInsertTemp); //设置行setitemtext(行,列,str);
//同时追加到excel表里

sheetw.AddCell(strInsertTemp,x+1,ContinueIndex+2);//列,行

}
ContinueIndex++;

}
}



}

m_staticcount.SetWindowTextA("统计结束");
}
...全文
377 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tbye8848 2006-09-06
  • 打赏
  • 举报
回复
读出来,用数据库来处理很快的
ssl8848 2006-08-28
  • 打赏
  • 举报
回复
都这么说,给个具体的实现方法嘛
Dean 2006-08-28
  • 打赏
  • 举报
回复
ListCtrl 的GetItemText和InsertItem 都是用消息来控制的,巨慢!
对于数据很多的情况下还是要自己保存一个表,然后用 Virtual List-View Controls 方式显示出来
ssl8848 2006-08-28
  • 打赏
  • 举报
回复
就是这个东西只能当记录数很少时才能运行(不然记录如果超过200条就很慢),在多就死掉了,我觉得上面那个比较是否相同的程序段有问题,两个循环来比较筛选是否有相同的记录这样是很慢的,有更好的方法没,我没有用过二叉树,有更好的解决问题的方法可否给个具体的代码段学习学习,谢谢

2,644

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧