用ODBC源,access2000数据库,vs2005开发环境。rs是CRecordset的派生类,使用正常。
//把数据添加到数据库中.
while(!rs.IsEOF())  
{  
rs.MoveNext();  
}   rs.AddNew();
rs.m_ID = str_index;
rs.m_Time = m_ctlListData.GetItemText(0,0);
rs.m_Channel1 = m_ctlListData.GetItemText(0,1);
rs.m_Channel2 = m_ctlListData.GetItemText(0,2);
rs.m_Channel3 = m_ctlListData.GetItemText(0,3);
//省略若干
rs.m_Channel24 = m_ctlListData.GetItemText(0,24);
rs.Update();已经用while语句把游标指向到了记录最后一条了,可是,添加的时候,始终只能添加到记录中间,何解?

解决方案 »

  1.   

    记录集是这样的:
    rs.Open(CRecordset::dynaset,_T("Select * from tb_1"));
      

  2.   

    看看有没办法order by 
    select into 新表 order by
    删除旧表
    重命名新表
      

  3.   

    呵呵,这个问题我来答,看你的代码是用ODBC接口连的吧,要加在最后一条先要找到最后一条的ID
    为了实现给应用程序添加这一功能,首先为记录集类CSet添加一个计算下
    一个ID号的成员函数GetMaxID,函数类型为长整型,访问权限为公共。编辑该函数,并
    加入如下的代码。 
     long C……Set::GetMaxID() 

        //move to the last record 
     MoveLast(); 
     //return the ID of this record 
     return m_ID; 

    使用Class Wizard,为视图类C……View添加一个关于新增菜单的COMMAND事
    件消息的事件处理函数。编辑该函数,并加入如下的代码。 
     
    void CEx_ODBCView::OnRecordNew()  

      // TODO: Add your command handler code here 
       //Get a pointer to the record set 
        CRecordset* pSet=OnGetRecordset(); 
       //确保对当前记录的修改保存 
     if(pSet->CanUpdate()&&!pSet->IsDeleted()) 
     { 
           pSet->Edit(); 
          if(!UpdateData()) 
            return; 
          pSet->Update(); 
          } 
        //为新记录得到ID号 
        long m_lNewID=m_pSet->GetMaxID()+1; 
        //Add the new record 
      m_pSet->AddNew(); 
        //设置新记录的ID号 
      m_pSet->m_ID =m_lNewID; 
        //保存新记录 
    ……………………//其他字段值的保存
          m_pSet->Update(); 
        //刷新记录集 
      m_pSet->Requery(); 
        //移动到新记录上 
        m_pSet->MoveLast(); 
        //刷新窗体 
        UpdateData(FALSE);  

     你试试看
      

  4.   


    关系数据库中的记录不分前后,一个 ORDER BY 子句就解决问题了。
    特殊情况:考虑到存取速度,大型数据库中都有聚簇索引;但是像 ACCESS JET 小型数据库可以不考虑这个。看下边的例子:学生表,有3个字段,分别为
    ===============================
    “学号”,数值型“姓名”,字符型“出生日期”,日期类型
    ===============================有下边几条数据:
    ===============================
    10    张三    1982.3.3
    5     李四    1983.5.4
    20    王五    1983.6.2
    ===============================虽然数据存储在数据库中是没有按学号顺序排放的,但是读取时,可以使用 ORDER BY 子句,如下:SELECT * FROM student ORDER BY strnum
      

  5.   

    读取时不用order by,只能读取到数据库原始的排序。那么,添加数据到数据库的排序原则到底是什么呢?
      

  6.   

    用ADO连接没出现过这样的事情。
    且不需要:
      while(!rs.IsEOF())  
        {  
            rs.MoveNext();  
        }  
    这样移动。
      

  7.   

    1. 没有设置主键也没关系,添加一个字段,如编号,数据类型选“自动编号”2. 添加数据之前将指针移到最后
    m_Recordset->MoveLast();
    m_Recordset->AddNew();3. 如果数据库是空的,这样会出错,所以先判断一下是否为空,处理一下4. 我觉得order by在读取数据时很必要
      

  8.   

    感谢各位,分数有限,大家不要嫌弃啊~我决定使用order by了