ListCtr列表控件显示问题,多出好多列

zimuyuan 2011-10-09 04:12:30
连Oracle后自动读取表名在List列表框中显示,双击列表框中的表名后在列表控件中显示全部表信息,编译运行通过,只是列表控件中多显示出好列,都是重复的最后一列。

双击代码如下:
void CSiDView::OnDblclkList1() 
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);

m_grid.DeleteAllItems();

CHeaderCtrl* pHeaderCtrl = m_grid.GetHeaderCtrl();
if (pHeaderCtrl != NULL)
{
int nColumnCount = pHeaderCtrl->GetItemCount();
for(int i =0; i < nColumnCount; i++)
m_grid.DeleteColumn(0) ;
}
CString str,sql;

m_list.GetText(m_list.GetCurSel(),str);
sql.Format("select * from %s",str);
pRst.CreateInstance(__uuidof(Recordset));
//pRst->Open((_bstr_t)sql,pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
pRst->Open((_bstr_t)sql,pConn.GetInterfacePtr(), adOpenStatic , adLockReadOnly, adCmdText);

Fields * fields=NULL;
long countl;
BSTR bstr;


pRst->get_Fields((&fields));
countl=fields->Count;

for(long i=0;i<countl;i++)
{
fields->Item[i]->get_Name(&bstr);
m_grid.InsertColumn(i,(CString)bstr,LVCFMT_LEFT,100,0);
}
int k;
_variant_t var;
tagVARIANT varFieldVal;
var.vt = VT_I2;
FieldPtr pField;
while(!pRst->adoEOF)
{
m_grid.InsertItem(0, "");
for(k=0;k<countl;k++)
{
var.iVal = k;
pField = pRst->Fields->GetItem(var);
pField->get_Value(&varFieldVal);
if(varFieldVal.vt != VT_NULL)
m_grid.SetItemText(0,k,(char*)(_bstr_t)varFieldVal);
m_grid.InsertColumn(i,(CString)bstr,LVCFMT_LEFT,100,0);
}
pRst->MoveNext();
}
...全文
100 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zimuyuan 2011-10-09
  • 打赏
  • 举报
回复
太感谢2楼啦!!!
zimuyuan 2011-10-09
  • 打赏
  • 举报
回复
有道理~我也觉得是循环的问题~可是该怎么改呢?请前辈指点~
gaorqing4 2011-10-09
  • 打赏
  • 举报
回复
代码
while(!pRst->adoEOF)
{
m_grid.InsertItem(0, "");
for(k=0;k<countl;k++)
{
var.iVal = k;
pField = pRst->Fields->GetItem(var);
pField->get_Value(&varFieldVal);
if(varFieldVal.vt != VT_NULL)
m_grid.SetItemText(0,k,(char*)(_bstr_t)varFieldVal);
m_grid.InsertColumn(i,(CString)bstr,LVCFMT_LEFT,100,0);
}
pRst->MoveNext();
}
里的m_grid.InsertColumn(i,(CString)bstr,LVCFMT_LEFT,100,0);不用要了吧。
mayudong1 2011-10-09
  • 打赏
  • 举报
回复
while
for
InsertColumn


这样已经执行了很多次的添加列

4,011

社区成员

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

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