网友问:在我的数据库中,有shoes,cache,还有20086in 20087in 20088out这样的数据表 我想请问一下要怎样才能删除带有2开头的表呢? 最好能用sql的语句 不然能够得到表的名字然后再删也可以
答:因为Access将用户表的信息存放在了MSysObjects系统表内,因此,从MSysObjects表查询2开头的用户表名称的Select语句可以写为:
select name from MSysObjects where type=1 and flags=0 and name like '2%'
具体的VB代码如下:
- Private Sub Command1_Click()
- Dim cn As ADODB.Connection
- Dim rs As ADODB.Recordset
- Dim str As String
- Set cn = New ADODB.Connection
- Set rs = New ADODB.Recordset
- str = "select name from MSysObjects where type=1 and flags=0 and name like '2%'"
- cn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=c:\csdn\db1.mdb;User ID=Admin;Password=;"
- rs.Open str, cn, adOpenKeyset, adLockReadOnly
- While Not rs.EOF
- cn.Execute "drop table [" & rs(0) & "]"
- rs.MoveNext
- Wend
- MsgBox ("删除以2开头的数据表成功!")
- rs.Close
- cn.Close
- Set rs = Nothing
- Set cn = Nothing
- End Sub
Private Sub Command1_Click()Dim cn As ADODB.ConnectionDim rs As ADODB.RecordsetDim str As StringSet cn = New ADODB.ConnectionSet rs = New ADODB.Recordsetstr = "select name from MSysObjects where type=1 and flags=0 and name like '2%'"cn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=c:\csdn\db1.mdb;User ID=Admin;Password=;"rs.Open str, cn, adOpenKeyset, adLockReadOnlyWhile Not rs.EOFcn.Execute "drop table [" & rs(0) & "]"rs.MoveNextWendMsgBox ("删除以2开头的数据表成功!")rs.Closecn.CloseSet rs = NothingSet cn = NothingEnd Sub
网友问:运行后出现 不能读取记录;在 'msysobjects' 上没有读取数据权限 的问题,怎么办啊?
答:解决步骤如下:
1. 打开Access 2. 选择“工具”|“选项” 命令。 3. 在“视图”选项卡内,选择“系统对象”复选框,并单击“OK”按钮。 4. 选择“工具”|“安全”|“用户与组的权限” 命令 5. “权限”选项卡中,在“用户名/组名”列表框中选择“管理员”。 6. 在“对象名称”列表框中选择'MSysObjects' ,并在下面“权限”栏中 选择“读取数据” 复选框。 7. 单击“确定”按钮。
经过上面的操作,上面的程序便会正常运行!