asp+access,数据库join的问题,不能更新。数据库或对象为只读
首先声明一点,我的分区是fat32的,这个不是权限问题(权限问题我知道怎么解决)
以下代码:
....
数据完整性检测...
strsql= "select table1.*,table3.table3code,table2.table3_id as table2_table3_id,table2.table2_name as table2_table2_name,table2.table2_number as table2_table2_number,table2_sort.sort_name as table2_sort_name from ((table1 left join table2 on table1.table2_id=table2.id ) left join table3 on table2.table3_id=table3.id) left join table2_sort on table2.table2_sort=table2_sort.id where table1.id=0 "
rs.open strsql,conn,1,3
rs.addnew
rs( "update_by ")=update_by
rs( "create_by ")=update_by
rs( "update_date ")=now()
rs( "create_date ")=now()
rs( "table2_id ")=table2_id
rs( "table1_id ") =table1_id
rs( "price ")=price
rs( "number ") =number
rs.update
temp=rs.bookmark
rs.bookmark=temp
temp=cstr(rs( "id "))
if temp> 99999 then temp=temp-99999
for i=1 to 5-len(temp)
temp= "0 "&temp
next
month_str=month(now())
day_str=day(now())
if len(month_str) <2 then month_str= "0 "&month_str
if len(day_str) <2 then day_str= "0 "&day_str
table1_id_str=rs( "table3code ")&year(now())&month_str&day_str&temp
rs( "table1_id ")=table1_id_str
rs( "table3_id ")=rs( "table2_table3_id ")
rs( "table3code ")=rs( "table3_table3code ")
rs( "table2_name ")=rs( "table2_table2_name ")
rs( "table2_number ")=rs( "table2_table2_number ")
rs( "sort_name ")=rs( "table2_sort_name ")
rs.update
rs.Close
set rs=Nothing
错误提示:
错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver] 不能更新。数据库或对象为只读。
。。。。, 第 74 行
第74行是第一个update处
1)以上当我的连接SQL变为不用left join 时(只查询一个数据表),错误提示到了第一个update后面(提示找不到字段),这证明是left join 导致不能更新
2)我这里数据表联接了三个,以前我用这种方式是可以更新的,先更新table1内的字段,update以后再更新和其他表有关的字段,但现在不行了,为什么?
3)我这里也没有用事务
------解决方案--------------------頂下,後面來的解決.
------解决方案--------------------1.最好不要在join里面更新数据库.
尤其是一对多或多对多.或者left /outer join 的情况.
会出现某个表中的数据没有主键或唯一索引而不能更新。
------解决方案--------------------楼主那么肯定的说不是权限问题,那我就不说什么了.友情UP