Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

执行delete时,报“不能更新。数据库或对象为只读。”

虫虫  发表于:2013-01-03 19:13:29  
复制

各位大侠们,帮帮在下吧。


背景

access数据库转成sql server后,改语句就无法执行了。


已按照网上说的将读写权限都是everyone了。

还是不行。

具体代码如下:

Private Sub cmd_delete_Click()
If IsNull(Me.ID1) Or Me.ID1 = "" Then
   MsgBox "请选择想要删除的记录!", vbOKOnly, "Error"
   Me.cmd_delete.SetFocus
   Exit Sub
End If
If Me.shainID <> Me.shainID1 Then
   MsgBox "请选择自己负责的制作物!", vbOKOnly, "Error"
   Me.cmd_delete.SetFocus
   Exit Sub
End If


If MsgBox("请确认是否要删除该信息!", vbYesNo) = vbYes Then
Dim Stemp  As String
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
Dim i As Integer
Stemp = "SELECT * from DailyTBL "
rs.Open Stemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
   rs.MoveFirst
   For i = 1 To rs.RecordCount
      If rs("ID") = Me.ID1 Then
         rs.Delete
         Me.sub_SD0023.Requery
         Me.ID1 = ""
         rs.MoveNext
        Else
         rs.MoveNext
        End If
            
    Next i
    
    Set rs = Nothing
End If


End Sub

受累帮我看看吧

 

Top
学习者 发表于:2013-01-03 23:34:41
rs.Delete  后面加一句   rs.update 更新语句

dbaseIIIer 发表于:2013-01-04 02:12:10

你从服务器打开整个数据表到本机,偏历到你的记录才删除,是 浪费网络流量,浪费本机运算资源!

不如简单一点啦:


Stemp = "DELETE FROM DailyTBL WHERE ID=" &  Me.ID1

adoconnection.Execute Stemp

就好了! 





dbaseIIIer 发表于:2013-01-04 02:15:11

dim recsAffected as long

CurrentProject.Connection.Execute "DELETE FROM DailyTBL WHERE ID=" &  Me.ID1, recsAffected

if recsAffected >0  then  '成功删除


else ' 数据库连接有问题


end if



虫虫 发表于:2013-01-04 09:35:53
谢谢各位了,可是按照各位说的试了,还是不行

虫虫 发表于:2013-01-04 09:36:20
目前我查看了一下存放数据库文件的data文件夹,显示是只读文件夹

虫虫 发表于:2013-01-04 10:54:48

adoconnection.Execute Stemp

这儿报错“要求对象”,这个怎么解决呢?



总记录:6篇  页次:1/1 9 1 :