标题:提交后怎样提取ID
只看楼主
hwqde
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-10-7
 问题点数:0 回复次数:14 
提交后怎样提取ID
<%
    title=request.form("title")
    content=request.form("content")
    dateandtime=date()

if title="" then
    FoundErr=True
    ErrMsg=ErrMsg & "<br><li>新闻标题不能为空!</li>"
end if

if content="" then
    FoundErr=True
    ErrMsg=ErrMsg & "<br><li>新闻内容不能为空!</li>"
end if


if FoundErr<>True then   
    set rs=server.CreateObject("ADODB.RecordSet")
    sql = "SELECT * FROM news"
    rs.Open sql,Conn,2,3
    rs.addnew
        rs("title") = title
    rs("content") = content
        rs("dateandtime")=dateandtime
    rs.update
    rs.close
    set rs = nothing
    Response.Redirect "Id是数据库自动编号的,怎样才能在提交后就知道此段数据的ID号呢?望高手赐教"
else
    call WriteErrMsg()
end if   
搜索更多相关主题的帖子: 新闻 sql content title 
2009-09-12 22:52
无诲今生
Rank: 8Rank: 8
来 自:桂林理工大学
等 级:蝙蝠侠
威 望:2
帖 子:373
专家分:726
注 册:2009-5-11
得分:0 
因为ID是自动编号的,所以在你插入一个纪录之前,先获取该表中ID最大的。这样现实:通过DESC使按降序排,然后取第一个ID。
然后使ID加1就是此段数据的ID了.

顺境逆境切莫止境,得意失意切莫在意。
2009-09-12 23:13
aspic
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:51
帖 子:2258
专家分:8050
注 册:2008-2-18
得分:0 
if FoundErr<>True then     
    set rs=server.CreateObject("ADODB.RecordSet")
    sql = "SELECT * FROM news"
    rs.Open sql,Conn,2,3
    rs.addnew
        rs("title") = title
    rs("content") = content
        rs("dateandtime")=dateandtime
    rs.update
    ID = rs("id") '在这里提取呢?
    rs.close
    set rs = nothing
    Response.Redirect "Id是数据库自动编号的,怎样才能在提交后就知道此段数据的ID号呢?望高手赐教"
else
    call WriteErrMsg()
end if   
2009-09-13 08:36
hwqde
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-10-7
得分:0 
回复 2楼 无诲今生
这个想法我也想过,但如果是多人同时操作,这个ID可能就是别人的ID了

2009-09-13 09:31
hwqde
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-10-7
得分:0 
回复 3楼 aspic
怎样能将这个ID反馈出来呢,就是提交后用一个页面把ID号输出来?

2009-09-13 09:32
aspic
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:51
帖 子:2258
专家分:8050
注 册:2008-2-18
得分:0 
access只能这样获取
2009-09-13 09:37
hwqde
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-10-7
得分:0 
怎样能将这个ID反馈出来呢,就是提交后用一个页面把ID号输出来?

2009-09-13 09:39
aspic
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:51
帖 子:2258
专家分:8050
注 册:2008-2-18
得分:0 
Response.Redirect "a.asp?ID="&ID

a.asp页面
<%
ID = Request("ID")
Response.Write ID
%>
2009-09-13 09:49
aspic
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:51
帖 子:2258
专家分:8050
注 册:2008-2-18
得分:0 
在Access中,下面的代码一定要避免使用的:
<%  
    fakeValue = 5  
    set conn = Server.CreateObject("ADODB.Connection")  
    conn.open "<conn string>"  
    conn.execute "Insert into someTable(intField) values(" & fakeValue & ")"  
    set rs = conn.execute("select MAX(ID) from someTable")  
    response.write "新产生的 " & rs(0)  
    rs.close: set rs = nothing  
    conn.close: set conn = nothing  
%>
 
为什么必须避免呢?因为:当两个人同时调用这个ASP时候,由于可能同时插入数据记录,返回的MAX(ID)可能就是错误的。这在SQL Server中也一样。
这时,如果你坚持使用Access,你可以使用一个带有adOpenKeyset游标的Recordset对象。(在这里,Recordset对象比T-SQL语句更适当)。
 
<%  
    fakeValue = 5  
    set conn = Server.CreateObject("ADODB.Connection")  
    conn.open "<conn string>"  
    set rs = Server.CreateObject("ADODB.Recordset")  
    rs.open "select * from someTable where 1=0", conn, 1, 3  
    rs.close: set rs = nothing  
    conn.close: set conn = nothing  
    rs.AddNew  
    rs("intField") = fakeValue  
    rs.update  
    response.write "新的ID号:" & rs("id")  
    rs.close: set rs = nothing  
    conn.close: set conn = nothing  
%>
收到的鲜花
  • hwqde2009-09-13 20:29 送鲜花  3朵   附言:我很赞同
2009-09-13 09:51
aspic
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:51
帖 子:2258
专家分:8050
注 册:2008-2-18
得分:0 
还有人建议添加空记录 然后更新
2009-09-13 09:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-285567-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.101447 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved