update bbs_board set childboards=(select count(*) from bbs_board where parentid=1)access数据库库下提示“操作必须使用一个可更新的查询”
而转为SQL Server后在查询分析器里正常是不是access数据库不支持如:update a set b=(select ....
select a=(select ....),b=(select....)
这些嵌套的语句呢?

解决方案 »

  1.   

    access数据库没用过.
    不过你改成
    declare @total int
    select @total = count(*) from bbs_board where parentid=1 
    update bbs_board set childboards=@total
    这样能行不?
      

  2.   

    不是语句问题,应该是文件读写权限问题浏览页面时,web服务器会给一个帐号供浏览者使用,至于这个帐号可以在IIS的匿名访问帐号里设置,默认的是 iusr_你的计算机名 这个帐号,这就是 www服务对外的访问帐号.这个帐号属于guest组,权限很小。
    当你的web目录所在磁盘卷为NTFS格式时,一般默认的guest组用户没有权限,但当你设为网站目录时,这些文件,iusr_.. 这个帐号有了读权限, 但当执行 UPDATE 操作时,要写 Access(文件型数据库) 文件,此时这个帐号却没有写权限(修改权限),就出错了.在数据库文件所在目录右击属性>安全>增加一个访问帐号可以是那个帐号也可以是guest组,也可以是everyone(代表所有帐号),然后钩选写入,修改权限,这样就可以了.当然,我们在这不是讨论安全,所以权限怎么设置我就不多说了.
      

  3.   

    不是也样啊,
    如果是“update bbs_board set childboards=1”都行啊
    程序(asp.net)和权限绝对没问题
      

  4.   

    ACCESS 和 SQL 语法上的不一样吧
      

  5.   

    update bbs_board set childboards=(select count(*) from bbs_board where parentid=1)
    ------------------------------------------------------
    Access使用的是Jet-SQL,而SQL Server使用的是T-SQL。
    这种写法在Access中是通不过的。
    可以考虑使用Dcount()函数来实现。--tryupdate bbs_board set childboards=dcount("parentid","bbs_board","parentid=1")