为什么就是没有显示?(在线等待)

dhbo 2003-05-27 10:14:56
我看数据库都很久了,但是老是没有显示,我希望是用ClistCtrl来显示:
BOOL CAdoDialogDlg::OnInitDialog()
{
CDialog::OnInitDialog();
AfxOleInit();
_variant_t var;
pconn.CreateInstance (__uuidof(Connection));
_bstr_t source("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Demo.mdb");
pconn->Open(source,"","",-1);
precord.CreateInstance(__uuidof(Recordset));
precord->Open("select * from DemoTable",pconn.GetInterfacePtr(),
adOpenDynamic,adLockOptimistic,adCmdText);

// m_list.InsertColumn(0,"Name",LVCFMT_LEFT,80);
// m_list.InsertColumn(1,"Age",LVCFMT_LEFT,160);//难道不显示么?
m_list.InsertColumn(1,_T("AA"),LVCFMT_LEFT,20);
// m_list.InsertItem(0,"1",NULL);
// m_list.InsertItem (1,"2",NULL);
int i=0;
while(!precord->adoEOF)
{
var=precord->GetCollect("Name");

m_list.SetItemText(i,1,(LPCTSTR)_bstr_t(var));
var=precord->GetCollect("Age");
m_list.SetItemText (i,2,(LPCTSTR)_bstr_t(var));
precord->MoveNext();
i++;
}

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

return TRUE; // return TRUE unless you set the focus to a control
}
也不知道那错了?
...全文
38 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
丁淇石头 2003-05-27
  • 打赏
  • 举报
回复
将创建列的部分写到前面,你可以在OnInitDialog()中只保留该部分内容试试,看各列是否正确。
m_list.InsertColumn(0, _T("AA"), LVCFMT_LEFT, 100, 0); //将第四个参数先写为定值。
这段函数我一直用,应该没什么问题。
dhbo 2003-05-27
  • 打赏
  • 举报
回复
哦,谢谢石头!!但是加的列名还是没有加上去,好象: m_list.InsertColumn(0, _T("AA"), LVCFMT_LEFT, TotalWidth/3-10, 0);没有什么用处?
丁淇石头 2003-05-27
  • 打赏
  • 举报
回复
上面的有点错误
while(!precord->adoEOF)
{
var=precord->GetCollect("Name");
m_List.InsertItem(LVIF_TEXT | LVIF_STATE, 0, (LPCTSTR)_bstr_t(var)), LVIS_SELECTED, 0, 0, 0);

var=precord->GetCollect("Age");
m_List.SetItemText(0, 1,(LPCTSTR)_bstr_t(var));
precord->MoveNext();
i++;
}
丁淇石头 2003-05-27
  • 打赏
  • 举报
回复
你应该先创建出各个列。
CRect Rect;
int TotalWidth;

//设置属性
m_List.SetExtendedStyle(LVS_EX_FULLROWSELECT);

//设置颜色
m_List.SetBkColor(RGB(0, 255, 255));
m_List.SetTextBkColor(RGB(0, 255, 255));

m_List.GetClientRect(Rect);
TotalWidth = Rect.right - Rect.left;

m_List.InsertColumn(0, _T("AA"), LVCFMT_LEFT, TotalWidth/3-10, 0);
m_List.InsertColumn(1, _T("BB"), LVCFMT_LEFT, TotalWidth/5, 0);
m_List.InsertColumn(2, _T("CC"), LVCFMT_LEFT, TotalWidth/20*3, 0);


然后才能添加数据

while(!precord->adoEOF)
{
var=precord->GetCollect("Name");

m_List.InsertItem(LVIF_TEXT | LVIF_STATE, Count, (LPCTSTR)_bstr_t(var)), LVIS_SELECTED, 0, 0, 0);

var=precord->GetCollect("Age");
m_list.SetItemText (i,1,(LPCTSTR)_bstr_t(var));
precord->MoveNext();
i++;
}

dhbo 2003-05-27
  • 打赏
  • 举报
回复
将m_list.InsertColumn(0,_T("AA"),LVCFMT_LEFT,20);放到循环中还是不行,并且我认为,
m_list.InsertColumn(0,_T("AA"),LVCFMT_LEFT,20);是设置列名,放到里边不好吧
dhbo 2003-05-27
  • 打赏
  • 举报
回复
数据库打开成功了的
njustcxy 2003-05-27
  • 打赏
  • 举报
回复
你要调试一下看数据库打开有没有成功返回记录.
丁淇石头 2003-05-27
  • 打赏
  • 举报
回复
需要将 m_list.InsertColumn(0,_T("AA"),LVCFMT_LEFT,20);放到循环体中

int i=0;
while(!precord->adoEOF)
{
m_list.InsertColumn(0,_T("AA"),LVCFMT_LEFT,20);
var=precord->GetCollect("Name");

m_list.SetItemText(i,1,(LPCTSTR)_bstr_t(var));
var=precord->GetCollect("Age");
m_list.SetItemText (i,2,(LPCTSTR)_bstr_t(var));
precord->MoveNext();
i++;
}

4,017

社区成员

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

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