我从access读取的数据,显示在list control后,顺序正好跟数据库中的相反,怎么回事?sort属性我设置的是无,显示代码如下: while(!m_pRecordset->adoEOF)
{
var = m_pRecordset->GetCollect("Name");
if(var.vt != VT_NULL)
strName = (LPCSTR)_bstr_t(var);
var = m_pRecordset->GetCollect("Age");
if(var.vt != VT_NULL)
strAge = (LPCSTR)_bstr_t(var);
int i=0;
                m_ListCtrl.InsertItem(i,strName);
    m_ListCtrl.SetItemText(i,1,strAge);
                        i++;  
m_pRecordset->MoveNext();
}

解决方案 »

  1.   

    你用order by 强制排序后
    看看是否一致
      

  2.   

    m_pRecordset->Open("SELECT * FROM Demo order by Name",                 theApp.m_Pconnection.GetInterfacePtr(),   adOpenDynamic,
            adLockOptimistic,
            adCmdText);
      

  3.   

    这样不行,就是些人命还有年龄什么的,如果order by以后,就会按升序或者降序了,我要的是跟数据库一致的顺序,难道非要加个这样的字段?
      

  4.   

    int nItem = -1;while(...)
    {
      nItem = m_ListCtrl.InsertItem(nItem+1,...);
      ..
    }
      

  5.   

    我的目的是,观察究竟是插入的问题还是记录集的问题
    用order by
    就是记录集严格按照该顺序,
    如果此时仍然插入的有问题,那就是插入的问题
    否则,就应该搞清楚数据库中是按什么排列的你试试看,以缩小范围
      

  6.   

    list   control 指定了排序属性么?
      

  7.   

    m_pRecordset-> Open("SELECT*FROM   Demo   order   by Age desc",                                 theApp.m_Pconnection.GetInterfacePtr(),   adOpenDynamic, 
                    adLockOptimistic, 
                    adCmdText);shakaqrj 
    依旧是菜鸟 //按大哥说的,我分别试了升序和降序,正好是相反的,这个问题应该不是插入的问题了吧?难道是记录集的问题?
      

  8.   

    sstower 
    幽幽 
    等 级:
     发表于:2008-01-18 13:21:266楼 得分:0 
    list       control   指定了排序属性么? 
     
    //没有指定,选择的是None
      

  9.   

    正好是反的??
    那岂不就和你的现象一致了?
    应该是插入的问题
    如果不嫌麻烦
    你可以增加一个datagrid控件,绑定一下
    datagrid中的顺序应该是如你所要的
    那么就是插入问题
      

  10.   

    int   nItem   =   -1;while(...)
    {
        nItem   =   m_ListCtrl.InsertItem(nItem+1,...);
        ..
    }
      

  11.   

    try
    {
    if(!m_pRecordset->BOF)
    m_pRecordset->MoveFirst();
    else
    {
    AfxMessageBox("表内数据为空");
    return;
    }
         int i=-1;
    // 读入库中各字段并加入列表框中
    while(!m_pRecordset->adoEOF)
    {
    var = m_pRecordset->GetCollect("Name");
    if(var.vt != VT_NULL)
    strName = (LPCSTR)_bstr_t(var);
    var = m_pRecordset->GetCollect("Age");
    if(var.vt != VT_NULL)
    strAge = (LPCSTR)_bstr_t(var);
            m_ListCtrl.InsertItem(i+1,strName);
        m_ListCtrl.SetItemText(i+1,1,strAge);             
    m_pRecordset->MoveNext();
    }

    // 默认列表指向第一项,同时移动记录指针并显示

    }
    catch(_com_error *e)
    {
    AfxMessageBox(e->ErrorMessage());
    }整个插入就这么几句,我看不错来那错了啊
      

  12.   

    发给我看看
    [email protected]
      

  13.   

    iamshuke 
     
    等 级:
     发表于:2008-01-18 12:41:104楼 得分:0 
    int   nItem   =   -1; while(...) 

        nItem   =   m_ListCtrl.InsertItem(nItem+1,...); 
        .. 

     //别的不改,只这样也不行,试了
      

  14.   

    shakaqrj 
    依旧是菜鸟 
    等 级:
     发表于:2008-01-18 13:45:4112楼 得分:0 
    发给我看看 
    [email protected] 
     
    //邮件已发,谢谢帮忙看一下,我也再自己找找原因
      

  15.   

    简单嘛, m_ListCtrl.InsertItem(m_ListCtrl.GetCount(),...);   不就顺了??
      

  16.   

    tabby 
    -_-b .. 内存泄漏 
    等 级:
     发表于:2008-01-18 14:02:5015楼 得分:0 
    简单嘛,   m_ListCtrl.InsertItem(m_ListCtrl.GetCount(),...);       不就顺了?? 
     //TEST\ListDialog.cpp(118) : error C2039: 'GetCount' : is not a member of 'CListCtrl'
      

  17.   

     int nItem=0;
    // 读入库中各字段并加入列表框中
    while(!m_pRecordset->adoEOF)
    {
    var = m_pRecordset->GetCollect("Name");
    if(var.vt != VT_NULL)
    strName = (LPCSTR)_bstr_t(var);
    var = m_pRecordset->GetCollect("Age");
    if(var.vt != VT_NULL)
    strAge = (LPCSTR)_bstr_t(var);

            m_ListCtrl.InsertItem(nItem,strName);
        m_ListCtrl.SetItemText(nItem,1,strAge);
    nItem++;
    m_pRecordset->MoveNext();
    }
      

  18.   

    俄 
    你的i没有自增好像...//可能刚才我发的时候删除了,自增的时候也不管用tabby 
    -_-b .. 内存泄漏 
    等 级:
     发表于:2008-01-18 14:02:5015楼 得分:0 
    简单嘛,   m_ListCtrl.InsertItem(m_ListCtrl.GetCount(),...);       不就顺了?? //我改成m_ListCtrl.InsertItem(m_ListCtrl.GetItemCount(),...); 顺序好了,但是从第2列变的不正常了,我再看看怎么修改m_ListCtrl.SetItemText(i+1,1,strAge);                           
     
      

  19.   

    shakaqrj 
    依旧是菜鸟 
    等 级:
     发表于:2008-01-18 14:23:4622楼 得分:0 我已经修改好了 
    就是自增的毛病 
    你试试看19楼的 
     
    //谢谢你,按你说的好了,也谢谢大家,可惜分不多