list控件为什么无法显示数据库中内容
以下是我的代码,结果显示“无效指针”,到底错在哪儿,请各位高手帮忙给看一下:
BOOL COrderSelect::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_list1.InsertColumn(0, "订单号 ",LVCFMT_LEFT,80);
m_list1.InsertColumn(1, "客户代号 ",LVCFMT_LEFT,80);
m_list1.InsertColumn(2, "合同代号 ",LVCFMT_LEFT,80);
m_list1.InsertColumn(3, "交货期 ",LVCFMT_LEFT,80);
m_list1.InsertColumn(4, "订单优先级 ",LVCFMT_LEFT,100);
m_list1.InsertColumn(5, "订单状态 ",LVCFMT_LEFT,80);
m_list2.InsertColumn(0, "订单号 ",LVCFMT_LEFT,80);
m_list2.InsertColumn(1, "客户代号 ",LVCFMT_LEFT,80);
m_list2.InsertColumn(2, "合同代号 ",LVCFMT_LEFT,80);
m_list2.InsertColumn(3, "交货期 ",LVCFMT_LEFT,80);
m_list2.InsertColumn(4, "订单优先级 ",LVCFMT_LEFT,1080);
m_list2.InsertColumn(5, "订单状态 ",LVCFMT_LEFT,80);
RefreshData();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void COrderSelect::RefreshData()
{
m_list1.DeleteAllItems();
m_list1.SetRedraw(FALSE);
ADOConn m_adoconn;
m_adoconn.OnInitADOConn();
CString strSQL;
_bstr_t vSQL;
strSQL.Format( "select* from Order_Main ");
_RecordsetPtr MySet;
int i=0;
try
{
MySet.CreateInstance(_uuidof(Recordset));
vSQL=strSQL.AllocSysString();
MySet=m_adoconn.ExecuteSQL(vSQL);
_variant_t var;
while(!MySet-> adoEOF)
{
var=MySet-> GetCollect( "Order_Main_No ");
if(var.vt!=VT_NULL)
m_list1.InsertItem(i,(char*)(_bstr_t)var);
var=MySet-> GetCollect( "Customer_No ");
if(var.vt!=VT_NULL)
m_list1.SetItemText(i,1,(char*)(_bstr_t)var);
var=MySet-> GetCollect( "Contract_No ");
if(var.vt!=VT_NULL)
m_list1.SetItemText(i,2,(char*)(_bstr_t)var);
var=MySet-> GetCollect( "Due_Data ");
if(var.vt!=VT_NULL)
m_list1.SetItemText(i,3,(char*)(_bstr_t)var);
var=MySet-> GetCollect( "Order_Priority ");
if(var.vt!=VT_NULL)
m_list1.SetItemText(i,4,(char*)(_bstr_t)var);
var=MySet-> GetCollect( "Order_Status ");
if(var.vt!=VT_NULL)
m_list1.SetItemText(i,5,(char*)(_bstr_t)var);
MySet-> MoveNext();
}
}
catch(_com_error &e)
{
AfxMessageBox(e.ErrorMessage());
m_list1.SetRedraw(TRUE);
return;
}
m_list1.SetRedraw(TRUE);
}
[解决办法]
楼主不要急,慢慢调试。
你定义了一个变量i,好像没有用处。
还有,像 SetRedraw 这些附加的东西先不用加,做到尽量简单,把问题找出来。