我在vc6利用ado+dbgrid这两个控件访问数据库,查询数据库的内容。开始查询时没什么问题,查询多次后,出现“灾难性故障”的messagebox,就不可以查询了。请问各位有遇到这个问题的么?代码贴上来,大家帮忙出出主意。 int SelIndex=m_pipename.GetCurSel();
CString selpipe,query;
m_name.GetLBText(SelIndex,selname);
// TODO: Add extra initialization here
int temp = AfxGetApp()->GetProfileInt(selname,"spot_num",-1) ;

if(temp>0)
{
CString SpotName, CSpotName, UnionCol;
int TimeIndex[]={1,3,5,9,10};
UpdateData();
CString starttime=m_startdate.Format("%Y-%m-%d ")+m_starttime.Format("%H:00:00");
CString endtime=m_enddate.Format("%Y-%m-%d ")+m_endtime.Format("%H:00:00");
m_DBGrid.SetCaption(selname);

CString strTableName;
strTableName.Format("Alarm%.4d",AfxGetApp()->GetProfileInt(selname," Code",0));
query ="select * from "+ strTableName +" where 报警时间>='"+starttime +"' and 报警时间<='"+endtime+"'";
m_DB.SetCommandType(1);
m_DB.SetConnectionString(connect);
m_DB.SetRecordSource (query);
m_DB.Refresh();
//FillCaption();
for(int i=0;i<5;i++)
{
m_DBGrid.GetColumns().GetItem(_variant_t((long)TimeIndex[i])).SetNumberFormat("YY-mm-dd HH:MM:SS");
//m_DBGrid.GetColumns().GetItem(_variant_t((long)TimeIndex[i])).
m_DBGrid.GetColumns().GetItem(_variant_t((long)TimeIndex[i])).SetWidth(120);
m_DBGrid.GetColumns().GetItem(_variant_t((long)TimeIndex[i])).SetAlignment(2);
}
m_DBGrid.GetColumns().GetItem(_variant_t((long)(0))).SetWidth(32);
m_DBGrid.GetColumns().GetItem(_variant_t((long)(0))).SetAlignment(2);
m_DBGrid.GetColumns().GetItem(_variant_t((long)(2))).SetWidth(50);
m_DBGrid.GetColumns().GetItem(_variant_t((long)(2))).SetAlignment(0);
m_DBGrid.GetColumns().GetItem(_variant_t((long)(4))).SetWidth(50);
m_DBGrid.GetColumns().GetItem(_variant_t((long)(4))).SetAlignment(0);
m_DBGrid.GetColumns().GetItem(_variant_t((long)(6))).SetWidth(50);
m_DBGrid.GetColumns().GetItem(_variant_t((long)(6))).SetAlignment(2);
m_DBGrid.GetColumns().GetItem(_variant_t((long)(6))).SetNumberFormat("#0.00");
m_DBGrid.GetColumns().GetItem(_variant_t((long)(7))).SetWidth(105);
m_DBGrid.GetColumns().GetItem(_variant_t((long)(7))).SetAlignment(2);
m_DBGrid.GetColumns().GetItem(_variant_t((long)(7))).SetNumberFormat("#0.00");
m_DBGrid.GetColumns().GetItem(_variant_t((long)(8))).SetWidth(80);
m_DBGrid.GetColumns().GetItem(_variant_t((long)(8))).SetAlignment(2);
m_DBGrid.GetColumns().GetItem(_variant_t((long)(11))).SetWidth(80);
m_DBGrid.GetColumns().GetItem(_variant_t((long)(11))).SetAlignment(2);
m_DBGrid.GetColumns().GetItem(_variant_t((long)(11))).SetNumberFormat("##0.00");
m_DBGrid.GetColumns().GetItem(_variant_t((long)(12))).SetWidth(60);
m_DBGrid.GetColumns().GetItem(_variant_t((long)(12))).SetAlignment(2);
m_DBGrid.GetColumns().GetItem(_variant_t((long)(12))).SetNumberFormat("###0.0000");
CString BtnText;
((CButton*)(GetDlgItem(IDC_CHANGEDISPLAY)))->GetWindowText(BtnText);
if (BtnText=="简单显示")
{
m_DBGrid.GetColumns().GetItem(_variant_t((long)(3))).SetWidth(120);
m_DBGrid.GetColumns().GetItem(_variant_t((long)(5))).SetWidth(120);
m_DBGrid.GetColumns().GetItem(_variant_t((long)(6))).SetWidth(50);
m_DBGrid.GetColumns().GetItem(_variant_t((long)(9))).SetWidth(120);
m_DBGrid.GetColumns().GetItem(_variant_t((long)(10))).SetWidth(120);
}
else
{
m_DBGrid.GetColumns().GetItem(_variant_t((long)(3))).SetWidth(0);
m_DBGrid.GetColumns().GetItem(_variant_t((long)(5))).SetWidth(0);
m_DBGrid.GetColumns().GetItem(_variant_t((long)(6))).SetWidth(0);
m_DBGrid.GetColumns().GetItem(_variant_t((long)(9))).SetWidth(0);
m_DBGrid.GetColumns().GetItem(_variant_t((long)(10))).SetWidth(0);
}
m_DBGrid.Refresh();
}    
UpdateData();