Access交流中心

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

ACCESS前台删除SQL后台记录无效???

感恩  发表于:2013-07-04 15:28:23  
复制

下面的代码不能将SQL做后台的“系统权限表”里面的用户ID的数据全部删除,只能删除第一条记录?但是在ACCESS做后台的系统权限表的数据却可以全部删除!不知道是哪里出了问题?请那位老师帮忙解答,谢谢!

Dim STemp As String
'定义用于循环的整型变量
Dim I As Integer
'定义数据集变量
Dim rs As ADODB.Recordset
'为定义的数据集变量分配空间
Set rs = New ADODB.Recordset
'为打开数据表“查询语句”字符变量赋值
    STemp = "Select * From dbo_系统权限"
    rs.Open STemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    rs.MoveFirst
    For I = 1 To rs.RecordCount
        If rs("用户ID") = Me![用户ID] Then
            rs.Delete 1
            I = rs.RecordCount + 1
        Else
            rs.MoveNext
        End If
    Next I
    '弹出“删除完成”的提示信息
    MsgBox "注册用户资料已经删除完成!", vbOKOnly, "删除完成"
    '刷新“权限管理 子窗体”子窗体
    Me![权限管理 子窗体].Requery
    Me![用户输入权限查询].Requery
    Me![用户ID].Requery
    Me![用户名] = ""
    '释放系统为Rs数据集分配的空间
    Set rs = Nothing

 

Top
123木头人 发表于:2013-07-05 20:54:00

    For I = 1 To rs.RecordCount
        If rs("用户ID") = Me![用户ID] Then
            rs.Delete 1
            I = rs.RecordCount + 1
        Else
            rs.MoveNext
        End If
    Next I

这个循环怪怪的,第一句For I = 1 To rs.RecordCount,第四句就I = rs.RecordCount + 1,这不就跳出循环了吗?

第四句换成I=I+1试一下。

还有我认为这样一条一条去判断再删除太耗时了吧,为什么不直接用一个sql的DELETE的语句呢?



殷小宝 发表于:2013-07-05 22:55:33
经测试,在ACCESS中也是一次只删除当前用户ID,而不是全部删除。点击下载此附件

感恩 发表于:2013-07-06 10:21:54
二楼的123木头人你好:用你的方法把第四句换成了I=I +1也不行,出现了“ODBC--调用失败”。所以只能用一个sql的DELETE的语句了。但是我想知道是什么原因?三楼的殷老师你好:在ACCESS中是可以全部删除的,但是在SQL中就没法删除了,这是怎么回事呢?请指教!

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