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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
| Option Compare Database
Option Explicit
Const MAX_OPEN = 63
Sub Test()
Dim oDB As DAO.Database
Dim oTD As DAO.TableDef
Dim oFD As DAO.Field
Dim T As Integer
Dim strTableName As String
Dim strFieldName As String
Dim Tentative As Integer
For Tentative = 1 To MAX_OPEN
On Error Resume Next
For T = 1 To MAX_OPEN
strTableName = "Table" & Format(T, "000")
DoCmd.Close acTable, strTableName
DoEvents
DoCmd.DeleteObject acTable, strTableName
Next
On Error GoTo 0
RefreshDatabaseWindow
On Error GoTo Test_Error
Set oDB = CurrentDb
For T = 1 To MAX_OPEN
strTableName = "Table" & Format(T, "000")
strFieldName = "Field" & Format(T, "000")
Set oTD = oDB.CreateTableDef(strTableName)
With oTD
Set oFD = oTD.CreateField(strFieldName, dbText, 50)
.Fields.Append oFD
End With
With oDB
.TableDefs.Append oTD
End With
RefreshDatabaseWindow
Next
oDB.Close
Set oFD = Nothing
Set oTD = Nothing
Set oDB = Nothing
DoEvents
Call OpenTables
Next Tentative
On Error GoTo 0
Test_Exit:
Exit Sub
Test_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") !"
Resume Test_Exit
End Sub
Sub OpenTables()
Dim T As Integer
Dim strTableName As String
For T = 1 To MAX_OPEN
strTableName = "Table" & Format(T, "000")
DoCmd.OpenTable strTableName, acViewNormal, acEdit
Next
For T = 1 To MAX_OPEN
strTableName = "Table" & Format(T, "000")
DoCmd.Close acTable, strTableName
Next
End Sub |
Partager