日期:2014-05-17  浏览次数:21087 次

晕,高手们怎么都不回啊~~求助!!!

有个后台是access的,要改成sql的,如下:
1.acess
.......
set   rsc=server.CreateObject( "adodb.recordset ")
sqlc= "select   *   from   newscata   where   id   is   null "
rsc.open   sqlc,conn,1,3
rsc.addnew
rsc( "title ")=   addtitle
rsc( "level ")   =   alevel   +   1
rsc( "time ")   =   now()
if   arootid   =   " "   then
rsc( "rootid ")   =   "* "
else
rsc( "rootid ")   =arootid& ",* "
end   if
rsc.update
gid   =   rsc( "id ")
groot   =   rsc( "rootid ")
c_groot   =   replace(groot, "* ",gid)
rsc( "rootid ")   =c_groot
rsc.update

rsc.close
set   rsc=nothing
意思就是增加一个栏目   数据库有个字段是rootid的是表示栏目
比如建一个新根目录   id=2   那么数据库里   rootid=2   然后在这个目录里建个2级子目录,则rootie=2,1       …………
大概就是这个意思,大家注意下*号
2:sql   栏目还是可以建,但是会显示“不能为新插入的行确定标识。”
返回目录管理里能看到刚建的栏目,但是数据库里这个栏目中的rootid   却是*
也就是gid   =   rsc( "id ")
groot   =   rsc( "rootid ")
c_groot   =   replace(groot, "* ",gid)
rsc( "rootid ")   =c_groot
rsc.update这个根本没有执行
期待中………………

------解决方案--------------------
帮顶!!
------解决方案--------------------
真的看不懂你的意思,你把newscata的结构发过来看一下,是不是让我们更易理解
如下形式:

表名:newscata
title varchar(30) 标题
level int 级别
time smalldatetime **时间
rootid int 上级目录id

------解决方案--------------------
也许是你的sql数据库的id列没有被设置自动标识,如果是access导入过来的数据表就会这样。
------解决方案--------------------
很简单, 你的ID不是自动增量+1的