受限数据类型属性违规 - 带Access数据库的ODBC

时间:2012-07-30 16:24:45

标签: c++ ms-access mfc odbc

我正在尝试使用MFC将数据添加到Access数据库中。 我有两个表,在我向第一个表添加一条记录后,我将检索id并更新第二个表。第一次通过时一切正常。但是对于第二个记录表1,rs.Update()抛出异常 - 受限制的数据类型属性违规。我对两个记录使用相同的数据。表1的ID是自动生成的。

function AddData(){

rs.Open(CRecordset::snapshot, _T("SELECT * FROM Table1"));

for ( each of the objects ) 
{
    db.BeginTrans();
    rs.AddNew();  // Parent table

    m_xx = xx; 
    .......
    .....

   rs.Update(); 

   db.CommitTrans();

   id = GetParentId();  // Get Id of added record

   // Update the second table with id.
   UpdateSecondTable ( id ) ; 

 }
 rs.close(); 

}


int GetParentId(){

 rs.Open(CRecordset::forwardOnly, _T("SELECT @@Identity FROM Table1"));
 int id = rs.GetFieldValue(); 
 return id; 
}

提前致谢。

1 个答案:

答案 0 :(得分:0)

@@identity在Access中效果不佳。您必须使用完全相同的连接来检索插入的ID。

快速解决此问题的方法如下:select max(ID) from table1

但是,在多用户环境中,这是不安全