为什么进了while循环后就不出来了···是不是因为读不到最后一条记录所以一直不为空··刚学的这些类型的转换我不是很清楚··
_variant_t varseatno;
  _variant_t varstarttime;
   _variant_t varusetime;
   _variant_t varcount;
   CString Sseatno,Sstarttime,Susetime,Scount;
   int i=0;
  db.Open(Filepath);
   Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT * FROM DataTable", 0);
   while(!Dbset.IsEOF())
   {
   varseatno=Dbset.GetFieldValue("SeatNO");
   varstarttime=Dbset.GetFieldValue("StartTime");
   varusetime=Dbset.GetFieldValue("UseTime");
   varcount=Dbset.GetFieldValue("Count");    Sseatno=(LPCSTR)_bstr_t(varseatno);
   Sstarttime=(LPCSTR)_bstr_t(varstarttime);
   Susetime=(LPCSTR)_bstr_t(varusetime);
   Scount=(LPCSTR)_bstr_t(varcount);
   m_list.InsertItem(i,"");
   m_list.SetItemText(i,0,Sseatno);
   m_list.SetItemText(i,1,Sstarttime);
   m_list.SetItemText(i,2,Susetime);
   m_list.SetItemText(i,3,Scount);
   i++;
   }
 
   Dbset.Close();
   db.Close();
}

解决方案 »

  1.   

    m_list.SetItemText(i,1,Sstarttime);
        m_list.SetItemText(i,2,Susetime);
        m_list.SetItemText(i,3,Scount);
        i++;
    Dbset.MoveNext();//再加这句,记完数据后要往下移记录才和
      

  2.   

    Dbset.MoveNext();//再加这句,记完数据后要往下移记录才和 
    要记得移动指针。。不然就永远死在第一个记录
      

  3.   

    好的··谢谢这个问题解决了···现在又遇到一个问题我在 用edit()修改记录时为什么好像他只修改了最后一条记录····把他更新到数据库中在读出来读到列表控件中时最后一条记录变成了第一条··其他的又都没变··
    //////修改记录存到数据库////////
    db.Open(Filepath);
    Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT * FROM DataTable",0);
    Dbset.Edit();
    for(int j=0;j<=3;j++)
    {
    Dbset.SetFieldValue("SeatNO",_variant_t(a[j]));
    Dbset.SetFieldValue("StartTime",_variant_t(dlg1.m_time[j]));
    Dbset.SetFieldValue("UseTime",_variant_t(dlg1.m_usetime[j]));
    Dbset.SetFieldValue("Count",_variant_t(itoa(count[j], string, 10)));
    }Dbset.Update();Dbset.Close();
    db.Close();/////数据库中读到列表控件////////
     db.Open(Filepath);
       Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT * FROM DataTable", 0);
       if(!Dbset.IsEOF()==1)
       {    for(int j=0;j<=3;j++)
       {
       varseatno=Dbset.GetFieldValue("SeatNO");
       varstarttime=Dbset.GetFieldValue("StartTime");
       varusetime=Dbset.GetFieldValue("UseTime");
       varcount=Dbset.GetFieldValue("Count");    Sseatno=(LPCSTR)_bstr_t(varseatno);
       Sstarttime=(LPCSTR)_bstr_t(varstarttime);
       Susetime=(LPCSTR)_bstr_t(varusetime);
       Scount=(LPCSTR)_bstr_t(varcount);
       m_list.InsertItem(i,"");
       m_list.SetItemText(i,0,Sseatno);
       m_list.SetItemText(i,1,Sstarttime);
       m_list.SetItemText(i,2,Susetime);
       m_list.SetItemText(i,3,Scount);
       i++;
    Dbset.MoveNext();
       
    }
    }Dbset.Close();
       db.Close();
      

  4.   

    你把Edit和Update配对使用,放到循环里面。
    说明下,在Delphi下,你的代码是可以的,移动指针时,Delphi会根据是否有自动提交,自动帮你Update
      

  5.   

    关键在你的修改后,数据要commit提交,才会真正的更新到数据库中。否则,更新只是在缓存在那里,并没有真正的影响到数据库记录。
      

  6.   

    Delphi是什么意思··?我用move(j)移动记录前3条都能编辑为什么到最后一条是会错误··弹出消息框说记录不存在。。但初始化时似乎是创建了4条记录的······然后我move到最后一条重新把数据库打开单独编辑·可以了但第3条记录没有编辑了似乎数据丢失了··为什么······????????谢谢啊····