整个系统做好了后,当想创建第一条新书入库记录、第一条借书证记录时总时提示出现内存无法read的情况,并且在SQL库里也新建了第一条记录,后面再办理新书入库和借书证时就没有这种情况了,不知什么原因,从网上百度了下说是空库,没有指定第一条游标,不是太明白,请高手解释解释......

解决方案 »

  1.   

    内存无法read一般是内存越界之类的。你可以断点看看内存是否使用正确。此类问题真的只能自己慢慢调试
      

  2.   

    这是上面问题的一部分程序,我感觉空记录集时没有让游标指向第一条记录,可网上有的说是空集自动指向第一条记录的,不需要判断了,可那样就出现了内存不能read的情况,可第一条记录也添加进SQL表里了,添加后续记录就不会有内存read的情况了,这是什么原因???
            strSQL.Format("select * from Proof_Info");
    m_pset -> Open(AFX_DB_USE_DEFAULT_TYPE, strSQL);
    if(m_pset -> GetRecordCount()=0)
    {
    MessageBox("数据中还没有一份借阅证信息,将办理第一份借阅证","办理借阅证");
    } m_pset->AddNew();//添加新的记录
    m_pset->SetFieldNull(&(m_pset->m_Proof_ID),FALSE);
    m_pset->m_Proof_ID=m_strProofID; m_pset->SetFieldNull(&(m_pset->m_Name),FALSE);
    m_pset->m_Name=m_strName;

    m_pset->SetFieldNull(&(m_pset->m_Sex),FALSE);
    m_pset->m_Sex=m_strSex; CTime m_strBirthTime(m_year,m_month,m_day,10,5,6,-1);
    m_pset->SetFieldNull(&(m_pset->m_Birth_Time),FALSE);
    m_pset->m_Birth_Time=m_strBirthTime;

    m_pset->SetFieldNull(&(m_pset->m_Address),FALSE);
    m_pset->m_Address=m_strAddress; m_pset->SetFieldNull(&(m_pset->m_ID_Number),FALSE);
    m_pset->m_ID_Number=m_strID; m_pset->SetFieldNull(&(m_pset->m_Tel_Number),FALSE);
    m_pset->m_Tel_Number=m_strTel; m_pset->SetFieldNull(&(m_pset->m_Now_Borrow_Amount),FALSE);
    m_pset->m_Now_Borrow_Amount=0; m_pset ->Update();//保存记录
    m_pset ->Requery();//刷新数据库

    m_pset ->Close();
    m_database.Close();
      

  3.   

    你用什么的连接库的?ADO ODBC?可以先下载这些连接库的调试程序,保证环境和链接是OK的情况下,再继续调试你的业务逻辑。
      

  4.   

    用的ODBC,链接没有问题,现在的问题就是往数据库里输入第一条记录会出现内存无法read的情况...
      

  5.   

    When working with attached tables or ODBC databases, GetRecordCount always returns – 1.