……
m_pSet->Edit();               //使数据库能被更新
m_pSet->sName="abc";          //sName是字段名
m_pSet->Update();             //写入数据库
m_pSet->Edit();               //封锁数据库不被写操作
……请问,它为什么不是只改当前一条记录,而是把从当前记录的所在记录都改掉了?
我应该怎样写才才能只改当前一条记录?

解决方案 »

  1.   

    SetFieldValue
    是不是该用这个函数啊
      

  2.   

    m_pSet->Edit();               //封锁数据库不被写操作
    为什么要这一句
      

  3.   

    第二个m_pSet->Edit();封锁数据库?
    如果程序没有问题每次只能更新一个记录。
      

  4.   

    先ADDNWE();后使输入为空,在填入数据,在更新
      

  5.   

    你的m_pSet指向不对,好像不是仅仅指向一个字段。
      

  6.   

    : suheli() (  ) :你的方法也不行,还有其他办法吗?
      

  7.   

    wyfzy521(first) :你说对,不过其他字段没事,就是这个当前字段被莫名其妙地改变了。
      

  8.   

    救命啊,如果解决不了,我就只有用VFP来做了。
      

  9.   

    应该是程序其他的地方不对,第二个Edit没有必要
      

  10.   

    太简单了。我给你个全部的代码:去我的主页:
    http://www.webdiy.org/srg/下载页:
    http://www.webdiy.org/srg/other/soft.htm找软件:SRG v1.0兄弟给分把!我好久没回答问题了,手上的分也不多了!哈哈哈
      

  11.   

    这就是在那个大家都用得很多的那个表格控件中双击后,激活一个对话框,确定关闭对话框把数据带回给控件,并写到数据库中去。
    void CDatabaseView::OnDblClickMsflexgrid() 
    {
    long lCurCol=m_FGrid.GetColSel();
    long lCurRow=m_FGrid.GetRowSel();

    CDialogSetup dlg;
    if(dlg.DoModal()==IDOK)
    {
    m_FGrid.SetTextMatrix(lCurRow,lCurCol,dlg.m_sEditValue);  //return a string to Controler m_pSet->MoveFirst(); //save data to Database
    m_pSet->Move((m_nEditWeek-1)*7);
    for(int i=1;i<lCurCol;i++)
    {

    if(!m_pSet->IsEOF())
    m_pSet->MoveNext();
    else
    {
    m_pSet->AddNew();
    }
    }
    if(lCurRow==1)
    {
    m_pSet->Edit();
    m_pSet->m_Ammorning=dlg.m_sEditValue;
    m_pSet->Update();
    m_pSet->Edit();
    // MessageBox("Row=1");
    }
    else if(lCurRow==2)
    {
    m_pSet->Edit();
    m_pSet->m_Amnoon=dlg.m_sEditValue;
    m_pSet->Update();

    m_pSet->Edit();
    }
    else if(lCurRow==3)
    {
    m_pSet->Edit();
    m_pSet->m_Pmnoon =dlg.m_sEditValue;
    m_pSet->Update();
    m_pSet->Edit();
    // MessageBox("Row=3");
    }
    else if(lCurRow==4)
    {
    m_pSet->Edit();
    m_pSet->m_Pmnight =dlg.m_sEditValue;
    m_pSet->Update();
    m_pSet->Edit();
    // MessageBox("Row=4");
    }
    else
    {
    ;
    }
    }

    }
      

  12.   

    你的程序里有问题:
    1) if(!m_pSet->IsEOF())
    m_pSet->MoveNext();
    else
    {
    m_pSet->AddNew();
    }
    这里其实数据库里一条记录也添加不进,因为你没有Update。2)m_pSet->Edit();               //封锁数据库不被写操作
    没必要。另外,检查一下你的数据库设计,有没有重复记录。
      

  13.   

    Davis_Dai(霏霏) :我的数据库是要有重复记录,如果这样不行,那就没办法了。
      

  14.   

    先用VFP把软件做出来
    以后再考虑解决这个问题
    这样老钻下去不是办法啊老兄