Office中国论坛/Access中国论坛

标题: 求教,如何在VBA中增加一条记录,并返回此记录的“自动编号”字段值 [打印本页]

作者: laoyaoyang    时间: 2010-8-26 21:58
标题: 求教,如何在VBA中增加一条记录,并返回此记录的“自动编号”字段值
求教各位
我有一个数据表,其中的ID字段的数字类型是“自动编号”。
我想使用vba语句向其增加一行数据,并取得此行数据的ID字段的数据。

我使用了如下语句,
strSQLAddBOM = "INSERT INTO [reBills of Materials] ( ProductID, MateraCategoryID, MateralName, Status ) " & _
                         "VALUES(" & lngProductID & "," & lngMaterialCategoryID & ",'" & strMaterialName & "'," & "-1);"
rstAddBOM.Open strSQLAddBOM, CurrentProject.Connection, adOpenKeyset, adLockReadOnly

ID= rstAddBOM.Fields(0).Value

但rstAddBOM在运行后好象自动被关闭,显示最后一语句错误。

请教如何实现。

作者: chaosheng    时间: 2010-8-26 22:06
select @@IDENTITY
这个查询可获取新的自动递增值
作者: tz-chf    时间: 2010-8-27 09:40
2楼的是在sql用。
access里:
一、用dmax取最大值,如果多机操作可能有误。
二、用记录集追加,可获得正确的id。
作者: zyc1369    时间: 2010-8-27 14:18
期待高手

作者: todaynew    时间: 2010-8-27 15:40
求教各位
我有一个数据表,其中的ID字段的数字类型是“自动编号”。
我想使用vba语句向其增加一行数据,并 ...
laoyaoyang 发表于 2010-8-26 21:58


rstAddBOM.Open "[reBills of Materials]", CurrentProject.Connection, adOpenKeyset, adLockReadOnly
rstAddBOM.addnew
rstAddBOM("ProductID").value=lngProductID
rstAddBOM("MateraCategoryID").value=lngMaterialCategoryID
rstAddBOM("MateralName").value=strMaterialName
rstAddBOM("Status").value=-1
rstAddBOM.update
ID= rstAddBOM.Fields(0).Value





作者: t小宝    时间: 2010-8-28 09:58
本帖最后由 t小宝 于 2010-8-28 10:01 编辑
求教各位
我有一个数据表,其中的ID字段的数字类型是“自动编号”。
我想使用vba语句向其增加一行数据,并 ...
laoyaoyang 发表于 2010-8-26 21:58


rstAddBOM.Open 的第一个参数(数据源)不能是操作查询,操作查询不返回数据集。
可用Currentdb.Execute运行操作查询,再用选择查询打开记录集获取字段值。






欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3