C++ 瓮。函数Add_Object(strObjectName作为字符串)的长度为Dim rs作为DAO.Recordset rs=CurrentDb.OpenRecordset(“ObjectTable”)rs.AddNew rs!object\u Title

C++ 瓮。函数Add_Object(strObjectName作为字符串)的长度为Dim rs作为DAO.Recordset rs=CurrentDb.OpenRecordset(“ObjectTable”)rs.AddNew rs!object\u Title,c++,ms-access-2007,ado,sql-insert,C++,Ms Access 2007,Ado,Sql Insert,瓮。函数Add_Object(strObjectName作为字符串)的长度为Dim rs作为DAO.Recordset rs=CurrentDb.OpenRecordset(“ObjectTable”)rs.AddNew rs!object\u Title=strObjectName Add\u object=rs!Object_ID rs.Update rs.Close Set rs=Nothing结束函数向上面添加错误陷阱,您应该可以。否则,您可以创建事务。我不知道VisualBasic,但


瓮。函数Add_Object(strObjectName作为字符串)的长度为Dim rs作为DAO.Recordset rs=CurrentDb.OpenRecordset(“ObjectTable”)rs.AddNew rs!object\u Title=strObjectName Add\u object=rs!Object_ID rs.Update rs.Close Set rs=Nothing结束函数向上面添加错误陷阱,您应该可以。否则,您可以创建事务。我不知道VisualBasic,但我会尝试借助Internet将代码转换成C++。我也从未使用过事务,所以实现您的解决方案需要时间。我们将保持联系,请耐心等待。谢谢你的帮助。谢谢你的帮助!只有一个问题:也许更好的选择是使用
SCOPE\u IDENTITY()
IDENTITY\u CURRENT()
?它们是否在MS Access中可用?致以最良好的祝愿。@AlwaysLearningNewStuff据我所知,
SELECT@@IDENTITY
是Access数据库唯一可用的此类选项。您提到的另外两个是T-SQL(Microsoft SQL Server)。还有一个问题:为了维护模型,我应该使用
事务
?如果是这样的话,你能用小代码示例来修改你的答案吗?我已将我的
ADO
调用放在
try/catch
块中。我已经对你的答案投了赞成票。谢谢你的帮助。致以最诚挚的问候。@AlwaysLearningNewStuff如果您想在事务中包装您的操作,那么在开始插入之前,只需在ADODB.Connection对象上调用
BeginTrans
方法,然后使用
CommitTrans
方法完成事务,或者如果出现问题,在
catch
块中使用
RollbackTrans
方法。至于在这种情况下是否需要使用事务,这完全取决于您。好吧,如果我成功地插入了5个参数中的2个,并且在第三个参数上发生错误,则会引发异常。如果我不执行
rollback
操作,那么对象将保持插入状态,使用前两个参数,我认为这是一个“脏写”。这就是为什么我认为如果我使用
rollback
我可以撤消整个插入,使数据库保持一致状态。我想你“理解”了我想说的话。我对你的观点很感兴趣。非常感谢。顺致敬意,
for ( //... ) 
   L"INSERT INTO Electric_Consumption ( Object_PK, field1, field2 ... ) 
       values ( Object_pk // should I use here @@IDENTITY ? );
L"INSERT INTO Object ( ... ) values ( ... ); //this is OK

for ( ... )
    L" INSERT INTO Electric_Consumption ( Object_PK, ... ) 
        values ( Object_PK, ... )"; // should I use @@IDENTITY here
                                    // to get Object_PK ??
for ( ... )
    L" INSERT INTO Water_Consumption ( Object_PK, ... ) 
        values ( Object_PK, ... )"; // should I use @@IDENTITY here
                                    // to get Object_PK ??
for ( ... )
    L" INSERT INTO Educational_Object ( Object_PK, ... ) 
        values ( Object_PK, ... )"; //  should I use @@IDENTITY here
                                    // to get Object_PK ??
for ( ... )
    L" INSERT INTO School ( Educational_Object_PK, ... ) 
        values ( Educational_Object_PK, ... )";// should I use @@IDENTITY here
                                    // to get Educational_Object_PK ??
for ( ... )
    L" INSERT INTO University ( Educational_Object_PK, ... ) 
        values ( Educational_Object_PK, ... )";// should I use @@IDENTITY here
                                    // to get Educational_Object_PK ??