我在vc6里用模板建立了一个简单的odbc程序,然后增加了两个按钮,用于增加和保存记录。代码如下://增加新记录
void CExam_004View::OnButton1() 
{
// TODO: Add your control notification handler code here
m_pSet->AddNew();           //让数据库进入增加模式
         UpdateData(FALSE);          //数据交换,将新记录的内容传入控件
m_pSet->Edit();             //进入编辑模式
}
//保存记录
void CExam_004View::OnButton4() 
{
      if (m_pSet->CanUpdate()) {
UpdateData(TRUE);         //把控件的值传给字段
m_pSet->Update();         //更新数据集
m_pSet->Requery();
      }
}现在的问题是,运行之后,无法增加记录,实际的效果是修改了当前记录的内容,请问问题出在哪里,以及如何修改?

解决方案 »

  1.   

    解决了,饼子,说了是你自己不会用。
    把m_pSet->Edit()和m_pSet->AddNew()交换一下顺序吧。UpdateData(FALSE)也不需要。
      

  2.   

    我师父原来不会MFC啊BS之,呼朋引伴BS之~
      

  3.   

    鸟人你是顾头不顾腚
    看看你改的代码:
    void CExam_004View::OnButton1() 
    {
    // TODO: Add your control notification handler code here
    m_pSet->Edit();
    m_pSet->AddNew();
    //UpdateData(FALSE);
    }
    void CExam_004View::OnButton4() 
    {
    // TODO: Add your control notification handler code here
    if (m_pSet->CanUpdate()) {
    UpdateData(TRUE);
    m_pSet->Update();
    m_pSet->Requery();
    }
    }运行完了增加了一条记录不假,可是连第一条记录也改了...
      

  4.   

    linuxer搬个板凳看掐架,顺便出售鸡蛋,烂西红柿,木棒,砍刀等兵器~~
      

  5.   

    在鸟人和轻云的帮助下又调试了一下,发下我的代码在增加记录上没问题,问题发生在mfc自动生成的数据库导航工具栏上,
    现在修改后的代码如下:void CExam_004View::OnButton1() 
    {
    m_pSet->AddNew();
    UpdateData(FALSE);
    }
    void CExam_004View::OnButton4() 
    {
    if (m_pSet->CanUpdate()) {
    UpdateData(TRUE);
    m_pSet->Update();
    }
    }直接运行之后,点增加按钮,然后输入值,再点保存,是可以增加记录的,但是如果点了数据库的工具栏,就会修改当前的数据,原因不详。看来还是得自己写个记录导航条,呵呵
      

  6.   

    原来想说点什么
    看来回帖就默默无语了
    多亏没冲动
    其实我添加记录一直用excute执行insert语句
    惭愧......
      

  7.   

    靠。这叫返璞归真,要是自己拼sql 语句就不用找你了。