表设计
如何在表中新插入新记录后,获取该记录自动编号字段的值
2005-02-04 15:48:46

 

问题:  

  请教一个问题,请各位帮忙!!!     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