VC中Access数据库的问题,总是提示操作失败,无当前记录!

时间:2021-01-22 21:43:57
    我在VC的MFC中操作Access数据库的时候,我生成了一个CRecordset的派生类(采用snapshot) ,编译都没问题,但是在运行的时候却总是报错:操作失败,无当前记录!请先看下面的代码:

void CClassDialog::OnAddbutton() 
{
// TODO: Add your control notification handler code here

bSelec=TRUE;
CAddDialog dlg;
    CString s;
if(dlg.DoModal()==IDOK) 
{
if(m_strGetstring=="一班")
{
if(dlg.m_nxue>=200)
{
MessageBox("一班的学号必须在1~100之间!");
return;
}
}
if(m_strGetstring=="二班")
{
if(dlg.m_nxue<200)
{
MessageBox("二班学号必须在200到400之间!");
return;
}
}

// m_Dset.MoveLast();
        m_Dset.AddNew();
m_nCount+=1;
m_Dset.m_column1=dlg.m_nxue;
        m_Dset.m_column2=dlg.m_strname;
m_Dset.m_column3=dlg.m_fmath;
m_Dset.m_column4=dlg.m_fphysics;
m_Dset.m_column5=dlg.m_fchemistry;
m_Dset.m_column6=dlg.m_fenglish;
m_Dset.m_column7=dlg.m_fpolitics;
       
m_Dset.m_column8=(dlg.m_fmath+dlg.m_fphysics+dlg.m_fchemistry+dlg.m_fenglish+dlg.m_fpolitics);
m_Dset.m_column9=(float)((dlg.m_fmath+dlg.m_fphysics+dlg.m_fchemistry+dlg.m_fenglish+dlg.m_fpolitics)/5);
this->Equal();  //改变m_Bset中的值
m_Dset.Update();
m_Dset.Requery();
m_dlist.DeleteAllItems();
m_Dset.Close();
    this->Show();
m_blist.DeleteAllItems();
m_Bset.Close();
this->Display();
}
}

void CClassDialog::Equal()
{
  
for(int i=0;i<5;i++)
{
float p=0;
if(i==0)
p=m_Dset.m_column3;
if(i==1)
p=m_Dset.m_column4;
if(i==2)
p=m_Dset.m_column5;
if(i==3)
p=m_Dset.m_column6;
if(i==4)
p=m_Dset.m_column7;
     
m_Bset.Edit();

if(bSelec==TRUE)  //此时执行的是加记录操作
{
m_Bset.m_column2+=p;
m_Bset.m_column3=(m_Bset.m_column2)/m_nCount;
if(p>=60)
m_Bset.m_column4+=1;
if(p>=80)
    m_Bset.m_column5+=1;
}
else
{
m_Bset.m_column2-=p;
m_Bset.m_column3=(m_Bset.m_column2)/m_nCount;
if(p>=60)
m_Bset.m_column4-=1;
if(p>=80)
    m_Bset.m_column5-=1;
}
m_Bset.Update();
if(!m_Bset.IsEOF())
m_Bset.MoveNext();

else
{
MessageBox("无记录可以操作");
break;
}
}
m_Bset.Requery();


}
哪位高手知道错误在什么地方的请不吝赐教!!!

3 个解决方案

#1


先看你的代码出错的语句,然后判断你的sql语句是否正确...

#2


看不出来了,只能单步调试了

#3


单步看哪一句错

#1


先看你的代码出错的语句,然后判断你的sql语句是否正确...

#2


看不出来了,只能单步调试了

#3


单步看哪一句错