会员登录 - 用户注册 - 网站地图 Office中国(office-cn.net),专业Office论坛
当前位置:主页 > 技巧 > Access技巧 > 数据表 > 正文

如何在表中新插入新记录后,获取该记录自动编号字段的值

时间:2005-02-04 00:00 来源:Access911 作者:未知 阅读:

 


问题:
 

  请教一个问题,请各位帮忙!!!
    access数据库中,有“自动编号”类型字段,但在表中新插入新记录后,在编程中
如果取得新插入记录的自动编号的值

 

 

回答:
 

 

 

我在写登陆界面的时候也遇到同样的问题
我用 insert into 来添加一个新的人员,但是该人员的password字段值是用这条记录的自动编号字段的值+密码 这样的格式来存储的,也就是说我必须先添加,然后用 update 来设置密码,就遇到了和你相同的问题。

我的办法是:在insert into 的同时将你自己生成的一个uid存储在新纪录的 password 里面,在 update 的时候只要找到这段值就可以了。
    以下是我的代码

 


    DoCmd.SetWarnings False
    Dim strGUID As String
    strGUID = CreateGUID   '建立一个GUID 
    '建立GUID有很多方法,你甚至可以建立一个你自己的GUID:  日期+时间+人员姓名+4位数的随机数字
    Debug.Print strGUID
    DoCmd.RunSQL "INSERT INTO tbl_family ( name, pwd ) SELECT '" & text4.Value & "' AS 表达式1, '" & strGUID & "' AS 表达式2"
    Dim strUID As String
    strUID = Trim(str(DLookup("id", "tbl_family", "name='" & text4.Value & "' and pwd='" & strGUID & "'")))
    DoCmd.RunSQL "UPDATE tbl_family SET tbl_family.pwd = md5('" & strUID & "|" & Text6.Value & "') WHERE tbl_family.id=" & strUID

 

    DoCmd.SetWarnings True


 

方法一:

  很简单,先取id后update

 

 

dim rcd as long
Dim rs As New ADODB.Recordset
rs.Open "表1", CurrentProject.Connection, adOpenDynamic, adLockOptimistic
rs.AddNew
rcd=rs("id")
rs.update
rs.Close

 

docmd.runsql "update … where id="&str(rcd)


 

 

 

 

方法二:
 

 
必须 jet oledb 4 支持
Private Sub AutoIncTest()
   Dim cnn As ADODB.Connection
   'Dim cmd As ADODB.Command
   Dim rst As ADODB.Recordset
   Set cnn = CurrentProject.Connection
   'Set cmd = New ADODB.Command
   'Set cmd.ActiveConnection = cnn
   'cmd.CommandType = adCmdText
   'cmd.CommandText = "INSERT INTO tblNewOrder2 " & _
                     "(ItemId, Quantity) VALUES (1, 20)"
   'cmd.Execute
   'Set cmd = Nothing
   cnn.execute "insert into tblneworder2 (item) values ('dd')"
   Set rst = New ADODB.Recordset
   rst.Open "SELECT @@IDENTITY AS LastOrderId", _
                 cnn, 
      Options:=adCmdText
   Debug.Print "OrderId for new record = " & _
   rst("LastOrderId") 
   rst.Close
   Set rst = Nothing
End Sub

 

 

 

 

 

 

(责任编辑:admin)

顶一下
(0)
0%
踩一下
(0)
0%
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价: