1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| Public Function TruncateAllTables(ByVal OnlyLinkedTables As Boolean) As Boolean
'---------------------------------------------------------------------------
' Procedure : TruncateAllTables
' DateTime : 8/06/2005
' Author : Jean-Philippe AMBROSINO
' Purpose : Delete all [linked] tables of the DB
'...........................................................................
' Parameters : OnlyLinkedTables = True
' Return Codes : = True if success
'...........................................................................
' Notes :
'---------------------------------------------------------------------------
Dim oDB As DAO.Database
Dim oTDF As DAO.TableDef
Dim SQL As String
Dim T As Long
On Error GoTo L_ErrTruncateAllTables
Set oDB = CurrentDb()
For Each oTDF In oDB.TableDefs
If Left$(oTDF.Name, 4) <> "MSys" And InStr(oTDF.Name, Chr(126)) = 0 Then
SQL = "DELETE * FROM [" & oTDF.Name & "];"
If OnlyLinkedTables Then
If Len(oTDF.Connect) = 0 Then
GoTo L_Next_Table
Else
T = T + 1
End If
End If
oDB.Execute SQL, dbFailOnError
L_Next_Table:
End If
Next
If OnlyLinkedTables = -1 And T = 0 Then
Err.Raise 3078, "Aucune table liée", "Il n'existe pas de tables liées dans cette base de données."
End If
MsgBox "Toutes les tables " & IIf(OnlyLinkedTables, "liées", "") & " ont été effacées.", vbInformation, "TABLES TRUNCATED"
If Not oDB Is Nothing Then oDB.Close
TruncateAllTables = True
On Error GoTo 0
L_ExTruncateAllTables:
Set oTDF = Nothing
Set oDB = Nothing
Exit Function
L_ErrTruncateAllTables:
TruncateAllTables = False
Select Case Err.Number
Case 3376, 3270
Resume Next
Case Else
MsgBox Err.Description, 48, Err.Source
Resume L_ExTruncateAllTables
End Select
End Function |
Partager