如何在表中新插入新记录后,获取该记录自动编号字段的值
时间: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)