我从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();
}
{
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();
}
解决方案 »
- 不知不觉失业刚好有一个月了,散分纪念。。。。
- 最近尝试仿照MYIE制作一个浏览器,遇到一个问题.
- 求 进程自我保护代码
- 文件内容对齐问题
- 简单问题:这种情况头文件(.h)怎样包含?
- 怎样实现每隔1分钟弹出一个子对话框
- 求教高手解决背景贴图被CTabCtrl的TabItem部分覆盖问题
- 这段CreateBitmapPalette是什么意思啊,哪些高人跟我详细解释一下嘛,最好是一行一行的说。
- 各位大虾:哪里有vc网络编程的电子书下载
- 文件打开问题
- 如何用CREATEWINDOWEX创建一个窗口并且带有最小化图标和X图标,只有最小化图标起作用
- vc++6.0中动态创建的CStatic控件,不能显示图片,而是一片灰色,为什么?
看看是否一致
adLockOptimistic,
adCmdText);
{
nItem = m_ListCtrl.InsertItem(nItem+1,...);
..
}
用order by
就是记录集严格按照该顺序,
如果此时仍然插入的有问题,那就是插入的问题
否则,就应该搞清楚数据库中是按什么排列的你试试看,以缩小范围
adLockOptimistic,
adCmdText);shakaqrj
依旧是菜鸟 //按大哥说的,我分别试了升序和降序,正好是相反的,这个问题应该不是插入的问题了吧?难道是记录集的问题?
幽幽
等 级:
发表于:2008-01-18 13:21:266楼 得分:0
list control 指定了排序属性么?
//没有指定,选择的是None
那岂不就和你的现象一致了?
应该是插入的问题
如果不嫌麻烦
你可以增加一个datagrid控件,绑定一下
datagrid中的顺序应该是如你所要的
那么就是插入问题
{
nItem = m_ListCtrl.InsertItem(nItem+1,...);
..
}
{
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());
}整个插入就这么几句,我看不错来那错了啊
[email protected]
等 级:
发表于:2008-01-18 12:41:104楼 得分:0
int nItem = -1; while(...)
{
nItem = m_ListCtrl.InsertItem(nItem+1,...);
..
}
//别的不改,只这样也不行,试了
依旧是菜鸟
等 级:
发表于:2008-01-18 13:45:4112楼 得分:0
发给我看看
[email protected]
//邮件已发,谢谢帮忙看一下,我也再自己找找原因
-_-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'
// 读入库中各字段并加入列表框中
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();
}
你的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);
依旧是菜鸟
等 级:
发表于:2008-01-18 14:23:4622楼 得分:0 我已经修改好了
就是自增的毛病
你试试看19楼的
//谢谢你,按你说的好了,也谢谢大家,可惜分不多