2010-01-11 2 views
2

어쨌든 Access 2000에서 여러 양식, 쿼리 등을 삭제 하시겠습니까? (디자이너에서).Access 2000 - 여러 형식 지우기?

+0

당신이 개체를 삭제 의미하거나 열려있는 형태 또는 쿼리에 표시되는 데이터를 삭제 의미합니까? –

+0

개체를 삭제하십시오. – Alex

+0

도움이된다면 내 대답을 표시해도 되겠습니까? 담당자를 사용할 수 있습니다. :) – jfw

답변

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 이벤트에서이 작업을 수행합니다. 조회가 작성되었는지 여부에 관계없이 실행됩니다. 따라서 오류를 방지하기 위해 다음 재개라고 말합니다.

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 

최종 하위

"삭제"으로
관련 문제