主题:  谁知道在添加记录之前,就知道添加的这条记录ID号的最好方法

songinfo

职务:普通成员
等级:1
金币:0.0
发贴:7
#12004/11/2 9:02:48
谁知道在添加记录之前,就知道添加的这条记录ID号的最好方法

我很急
情况是这样的:
1. 我做了个产品展示系统, 其中图片上传部分,我想让上传的图片以产品的ID号命名.
2. 这样我在做产品更名,删除的时候,方便对图片管理,因为用时间命名的话,产品更名删除时还要读一次库中图片名,这样代码就多了(我目地是产品添加,删除,更新后,网站中的图片不会出现多余的,如果理解我的想方,有更好的方法也提一下)

--------------------------------------------------------------------------------------------------------------
query="select * from table"
rs.open query,conn,3,2
rs.addnew
rs("name")=??? 怎样让rs("name")=这条记录的ID
rs.update
--------------------------------------------------------------------------------------------------------------

现在我知道的方法是读记录集的最后一条记录 id加一



缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
#22004/11/2 9:30:24
在还没有增加之前id还没有产生又怎么去获得
你可以添加后再update一下



songinfo

职务:普通成员
等级:1
金币:0.0
发贴:7
#32004/11/2 9:30:32
不好意思问了个蠢问题

----------------------------------------------------
query="select * from table"
rs.open query,conn,3,2
rs.addnew
rs("name")=rs("id")
rs.update
---------------------------------------------------
真没想到这么简单



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#42004/11/2 9:36:27
你是SQL SERVER吗,可以用
INSERT INTO jobs (job_desc,min_lvl,max_lvl)
valueS ('Accountant',12,125)
SELECT @@IDENTITY AS 'Identity'

另外如果用Guide,可以用NEWID()产生唯一的标识。

ACCESS有些麻烦,这些好象都不支持。如果急着没办法,先插入后,再用SELECT新记录再选出来,但条件一定是唯一的。如果单机用可以,多用户有麻烦,但也不太可能用ACCESS。

ACCESS办法留着再讨论。


非常大鱼

songinfo

职务:普通成员
等级:1
金币:0.0
发贴:7
#52004/11/2 9:55:03
accass id自动排序

我的目地:
1. 我做了个产品展示系统, 其中图片上传部分,我想让上传的图片以产品的ID号命名.
2. 这样我在做产品更名,删除的时候,方便对图片管理,因为用时间命名的话,产品更名删除时还要读一次库中图片名,这样代码就多了(我目地是产品添加,删除,更新后,网站中的图片不会出现多余的,如果理解我的想方,有更好的方法也提一下)



缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
#62004/11/2 10:06:15
rs("name")=rs("id")
这我倒没有想到

to 蓝鲸:
不管在Access中还是MSSQL中rs.update后就直接可以取rs("id")了



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#72004/11/2 10:08:36
你可以用其它的方法来标识图片的唯一性,如时间编号,可精确到秒,再用其它可以标识维一性的字段如产品ID号,比如产品ID号为105,可编为105-20041025-115621,因为后台管理不太可能在1秒内同一产品发二次,但前提保证系统时间必须准确。这是一种方法。也可以用其它方法来确定唯一编号,如果是多用户,可以设置用户ID。


非常大鱼

songinfo

职务:普通成员
等级:1
金币:0.0
发贴:7
#82004/11/2 10:21:18
to 蓝鲸
以前我是用时间编号
可是在产品更新时,如果新上传新图片,那么网站中的旧图片就会还存在,须再写一条删除旧图片的代码,
以后如果我更新产品时,只更新产品名,或只更新图片,或同时更新图片和产品名,那问题说越来越多。

向你致敬
同样的贴子在蓝色理想,没有回反到被封,真是伤心
再次向您致敬



songinfo

职务:普通成员
等级:1
金币:0.0
发贴:7
#92004/11/2 10:23:19
我的目地:
产品更新一段时间后,网站中图片不会出现多余



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#102004/11/2 10:36:21
如果熟悉FSO的话,这不成问题,只是后台管理稍复杂些。产品名更新与图片没影响,因为标识的是ID号,所以产品表一定要有一个ID号。如果是临时用的软件,不考虑删除也可以,用好了完了,软件功能适可而止,多化些时间在主要方面,客户会更赏心。功能在以后需要时再开发。


非常大鱼

songinfo

职务:普通成员
等级:1
金币:0.0
发贴:7
#112004/11/2 15:35:39
我的目地:产品更多新一段时间后,站内不会出现多余的图片

用了两天时间终于完工,大家PP,使代码更短一点


creaters()我做的建数据连接的函数
___________________________________________________________________

<!--#include file="conn.asp" -->
<!--#include file="upload.inc" -->
<%
ChkPost() '验证来源
dim upload ,file , filename , fileExt
set upload=new upload_5xSoft

act=Trim(Request.QueryString("act"))
select case act
case "add"
    creaters(1)
     query="select * from product where name='"&upload.form("name")&"'"
     rs.open query,conn,1,1
     if not rs.eof then
     response.write "<script language=javascript>"&vbCrLf
     response.write "alert(""错误:产品编号已存在。"");"& vbCrLf
     response.write "location.href = ""javascript:history.back()"""&vbCrLf
     response.write "</script>"& vbCrLf
     creaters(0)
     response.end
     end if
    case "updata"
     creaters(1)
     query="select * from product where id=" +Trim(Request.QueryString("id"))
     rs.open query,conn,1,1
     if upload.form("name")<>rs("name") then
     creaters(2)
         query="select * from product where name='"&upload.form("name")&"'"
         rs.open query,conn,1,1
         If Not rs.eof Then
         response.write "<script language=javascript>"& vbCrLf
            response.write "alert( ""错误:产品编号已存在。"");"& vbCrLf
            response.write "location.href = ""javascript:history.back()"""& vbCrLf
            response.write "</script>"& vbCrLf
            creaters(0)
            response.end
         End If
     End If
end select


creaters(2)
select case act
case "add"
        query="select * from product where class = '"& upload.form("class") &"'"
rs.open query,conn,3,2
rs.addnew
num = rs.RecordCount+1
rs("num") = num
rs("class") = upload.form("class")
        rs("name") = upload.form("name")
    case "updata"
     query="select * from product where id = " & Trim(Request.QueryString("id"))
rs.open query,conn,3,2
        rs("name") = upload.form("name")
        response.write upload.form("name")
end select


for each formname in upload.file
set file=upload.file(formname)
if file.filesize>100 then
if file.filesize>2048000 then
response.write "<script language=javascript>"& vbCrLf
    response.write "alert( ""错误:请选择上传的文件不要超过了2M!"");"&vbCrLf
    response.write "location.href =""javascript:history.back();"" "& vbCrLf
    response.write "</script>"& vbCrLf
    response.end
    end if
    
    fileExt=lcase(right(file.filename,4))
    if fileEXT<>".gif" and fileEXT<>".jpg" and fileEXT<>".png" and fileEXT<>".bmp" then
    response.write "<script language=javascript> "& vbCrLf
    response.write "alert( ""错误:请选择类型为jpg,gif,png,bmp的上传文件!"");"& vbCrLf
response.write "location.href =""javascript:history.back();"" "& vbCrLf
response.write "</script>"& vbCrLf
    response.end
    end if
    
    filename="pic/"&rs("id")&fileExt

    file.SaveAs Server.mappath(filename) '保存文件
set file=nothing
else
filename = ""
end if
next


if filename <> "" then rs("img") = filename
rs.update


response.Redirect("product.asp?class="&upload.form("class"))
creaters(0)
set upload=nothing
%>

___________________________________________________________________

经过测验,除了下面一种情况基本上更新图片,或更新产品名后站内不会出现无用图片

--------------------------------------------------------
更新的图片格式和上次图片格式不一样
--------------------------------------------------------



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#122004/11/2 16:02:58
creaters()怎么这么多?


非常大鱼

songinfo

职务:普通成员
等级:1
金币:0.0
发贴:7
#132004/11/2 17:31:41
creaters(1)建数据连接

creaters(2)=rs.close

creaters(0)关闭数据连接