【问题标题】:restricted data type attribute violation - ODBC with Access Database受限数据类型属性冲突 - 带有 Access 数据库的 ODBC
【发布时间】:2012-07-30 16:24:45
【问题描述】:

我正在尝试使用 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; 
}

提前致谢。

【问题讨论】:

    标签: c++ ms-access mfc odbc


    【解决方案1】:

    @@identity 在 Access 中不能很好地工作。您必须使用完全相同的连接来检索插入的 ID。

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

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

    【讨论】:

    • “您必须使用完全相同的连接来检索插入的 ID。” - 对于大多数数据库管理器来说都是如此,而不仅仅是 Access。
    猜你喜欢
    • 1970-01-01
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多