无论如何删除Access 2000中的多个窗体,查询等? (在设计师那里)。Access 2000 - 删除多个表单?
2
A
回答
1
您可以使用VBA删除对象。一定要倒退从集合中删除时,例如,该代码将删除不少对象:
Dim db As Database
Dim idx As Long
Dim strName As String
Set db = CurrentDb
''Forms
For idx = CurrentProject.AllForms.Count - 1 To 0 Step -1
strName = CurrentProject.AllForms(idx).Name
DoCmd.DeleteObject acForm, strName
Next idx
''Reports
For idx = CurrentProject.AllReports.Count - 1 To 0 Step -1
strName = CurrentProject.AllReports(idx).Name
DoCmd.DeleteObject acReport, strName
Next idx
''Modules
For idx = CurrentProject.AllModules.Count - 1 To 0 Step -1
strName = CurrentProject.AllModules(idx).Name
If strName <> "Module9" Then
DoCmd.DeleteObject acModule, strName
End If
Next idx
''Queries
For idx = db.QueryDefs.Count - 1 To 0 Step -1
strName = db.QueryDefs(idx).Name
If Left(strName, 4) <> "~sq_" Then
db.QueryDefs.Delete strName
Else
Debug.Print strName
End If
Next idx
''Relationships
For idx = db.Relations.Count - 1 To 0 Step -1
strName = db.Relations(idx).Name
If Left(strName, 4) <> "msys" Then
db.Relations.Delete strName
Else
Debug.Print strName
End If
Next idx
''Tables
For idx = db.TableDefs.Count - 1 To 0 Step -1
strName = db.TableDefs(idx).Name
If Left(strName, 4) <> "msys" Then
db.TableDefs.Delete strName
Else
Debug.Print strName
End If
Next idx
2
当用户执行某些操作我创造了很多的查询上飞的。所以,我将创建查询,然后在关闭表单后删除查询。我在On Close事件下执行此操作。无论查询是否创建,它都会运行。所以,为了防止出现错误,我将它告诉Resume Next。
Private Sub Form_Close()
On Error Resume Next
DoCmd.Close acReport, "EmployeeDetails"
DoCmd.DeleteObject acQuery, "MyEmployeeDetails"
End Sub
2
这对我更好。试图去除循环中的元素一直存在问题。我只是将对象名称放入数组中,然后将其删除。
Public Sub DeleteAllFormsAndReports()
Dim accobj As AccessObject
Dim X As Integer
Dim iObjCount As Integer
Dim sObjectNames() As String
If MsgBox("Are you sure you want to delete all of the forms and reports?", vbCritical + vbYesNo) = vbYes Then
ReDim sObjectNames(0)
For Each accobj In CurrentProject.AllForms
ReDim Preserve sObjectNames(UBound(sObjectNames) + 1)
sObjectNames(UBound(sObjectNames)) = accobj.Name
Next accobj
For X = 1 To UBound(sObjectNames)
DoCmd.DeleteObject acForm, sObjectNames(X)
Next X
ReDim sObjectNames(0)
For Each accobj In CurrentProject.AllReports
ReDim Preserve sObjectNames(UBound(sObjectNames) + 1)
sObjectNames(UBound(sObjectNames)) = accobj.Name
Next accobj
For X = 1 To UBound(sObjectNames)
DoCmd.DeleteObject acReport, sObjectNames(X)
Next X
End If
末次
相关问题
- 1. 从多个Access表中删除记录
- 2. 删除重复2000
- 3. 添加和删除多个表单域
- 4. 从Access 2007中的多个表中删除记录
- 5. SQL 2000,Access查询
- 6. 在Access中选择性地删除很多表?
- 7. 删除级联多个表
- 8. 删除从多个表
- 9. 删除多个表SQL
- 10. 删除多表
- 11. 转换MS Access 2000至2010
- 12. Access 2000自动添加文本到表单输入字段
- 13. 什么能防止MS Access 2000表单关闭?
- 14. 删除多个表中的多行MYSQL
- 15. MS Access Redemption删除“代表发送人”
- 16. 从Access中的表中删除记录
- 17. 从Access 2000/2003迁移到Access 2010
- 18. 如何从MSDE 2000中的3个连接选择的表中删除文件?
- 19. 使用Access 2003将Access 2000数据库转换为Access 97
- 20. 多个小删除
- 21. Mysql - 删除多表
- 22. Django删除表单
- 23. 删除包含多个单词的行
- 24. 用单个查询删除多行
- 25. 使用ClosedXML删除多个单元格
- 26. 在Access 2000中加密PDF
- 27. 删除表单元素.hide()删除值?
- 28. 从多个数据库中的多个表中删除单个行
- 29. MS Access中删除重复
- 30. 删除验证从Microsoft Access
通过“抹去”你的意思是删除对象还是你的意思是清除显示在打开的窗体或查询的数据? – 2010-01-11 18:56:45
删除对象。 – Alex 2010-01-12 03:35:54
你介意标记我的答案,如果它有帮助吗?我可以使用代表。 :) – jfw 2014-11-21 22:10:49