我用SQL2000建立了一个数据库book,其中有二个表,lent和card.我用VC6分别建立了一个对话框,用以往表lent和card中插入数据。但是当lent和card表中没记录时,如果往这两个表中插入记录,就会出现一个错误 :“0x5f477959"指令引用的0x00000014" 内存。该内存不能为read.”。但记录却插入到了数据表中。另外,如果lent和card表中已有记录时再插入新记录却不会出错。再另外:对于同一个数据库中的其它几个表却不会出现这样的问题。而且,我新建一个对话框程序用于测试以上问题,结果在新建的对话框中依旧会出现以上情况。我在另外一部机上曾建立过同样的数据库,用以上程序该时也会出现同样的问题,而且几乎可以确定添加记录的代码不会出错(我用了很简单的几个数字测试,而且用同样的方法去往同一数据库中的其它表添加记录也不会出现错误)。
我已试了二天多了,总是查不出什么原因,请大家帮忙!

解决方案 »

  1.   

    不会吧,我的代码:
    if(!m_dbLentSet.IsOpen) return;
    m_dbLentSet.AddNew ();
    m_dbLentSet.m_book_no = 10000;                     //此数字型字段
    m_dbLentSet.m_card_no = 10000;                     //此数字型字段
    m_dbLentSet.m_worker_no = 1001;                       //此数字型字段
    m_dbLentSet.m_len_date  =  CTime::GetCurrentTime ();  //日期型字段
    m_dbLentSet.m_book_name = "aaa";                     //字符型字段
    if( !m_dbLentSet.Update () ){
          MessageBox(_T("数据更新失败,图书借出操作无法完成"), 
          TEXT("图书借出失败"), MB_OK );
    }
    这样的代码也会出问题吗,而且为什么数据库中有记录时不会出错呢?
    烦请指教!
      

  2.   

    我终于发现原来是因为数据库表中有DATATIME类型的字段才会出错,我将其去掉后就没事了,加上之后又会出现问题。但我不知道为什么会这样,而且我需要用DATATIME类型的字段。有谁知道还请多多指教!
      

  3.   

    CString strDate;
    strDate = dateVal; //你的时间类型变量转换成字符串形式再赋给strDate
    cmdText.Format("Insert Into 表名 (DateTimeField) Values(\'%s\'", strDate);