Удалить таблицу Access
Как удалить таблицу Access в модуле на vb.
Не сочтите за труд.
Как удалить таблицу Access в модуле на vb.
Можно через DAO или ADO.
Например через ADO (в Acc2000 это библиотека подключена по умолч.)/ В свое время написал для себя функцию и везде ее использую:
' удаляет таблицы из базы, макс. кол-во перечисл. таблиц - 5 шт.
' при заданиии имен таблиц можно использовать маску, например:
' "*Кред*" - удалит все таблицы в названии которых есть сочетание - Кред
'[sNameTable1] - имя первой таблицы для удаления, обяз. параметр
'[sNameTable2,3,4,5] - имена послед. таблиц для удаления, необяз. параметр
Dim cat As ADOX.Catalog
Dim i As Long, k As Long
On Error GoTo Err_
DelTables = False
If Len(sNameTable1) > 0 Then
Set cat = New ADOX.Catalog
cat.ActiveConnection = CurrentProject.Connection
k = 0
For i = 1 To cat.Tables.Count
If cat.Tables(k).name Like sNameTable1 Then
cat.Tables.Delete k
k = k - 1
ElseIf cat.Tables(k).name Like sNameTable2 Then
cat.Tables.Delete k
k = k - 1
ElseIf cat.Tables(k).name Like sNameTable3 Then
cat.Tables.Delete k
k = k - 1
ElseIf cat.Tables(k).name Like sNameTable4 Then
cat.Tables.Delete k
k = k - 1
ElseIf cat.Tables(k).name Like sNameTable5 Then
cat.Tables.Delete k
k = k - 1
End If
k = k + 1
Next i
DelTables = True
End If
Ex_:
Set cat = Nothing
Exit Function
Err_:
DelTables = False
MsgBox Err.Description
Resume Ex_
End Function
Не сочтите за труд.
Как удалить таблицу Access в модуле на vb.
А не проще ли выполнить запрос:
DROP TABLE имя таблицы
(В Jet, по-моему DELETE TABLE имя таблицы)
А не проще ли выполнить запрос:
DROP TABLE имя таблицы
(В Jet, по-моему DELETE TABLE имя таблицы)
Да можно конечно, токо если через ADO, тогда все равно придется создавать объект Command, через DAO .. CurrentDB.Execute и т.д.
Токо если таблицы нет, то ведь Access начнет вопить, придется еще его душить : DoCmd.SetWarnings = False (что-то типа того).
Тем более помойму в DELETE TABLE нельpя использовать конструкцию Like, а я писал эту функцию прежде всего для того, что бы удалять таблицы с ошибками импорта вида _ImportErrors...
Да можно конечно, токо если через ADO, тогда все равно придется создавать объект Command, через DAO .. CurrentDB.Execute и т.д.
Токо если таблицы нет, то ведь Access начнет вопить, придется еще его душить : DoCmd.SetWarnings = False (что-то типа того).
Тем более помойму в DELETE TABLE нельpя использовать конструкцию Like, а я писал эту функцию прежде всего для того, что бы удалять таблицы с ошибками импорта вида _ImportErrors...
Вполне согласен. Просто я хотел, как проще.:)
А не сложно команду целиком (DROP TABLE), такой глючный Help у меня, просто абзац.
"DROP TABLE МояТаблица" - вся SQL инструкция :)
Sub DelTable()
Dim dbs As Object, strSQL As String
Set dbs = CurrentDb
strSQL = "DROP TABLE 101;"
dbs.Execute strSQL
End Sub
а ты
"DROP TABLE МояТаблица" - вся SQL инструкция :)
:))
Ламеру всегда хочется услышать, что-то типа
Sub DelTable()
Dim dbs As Object, strSQL As String
Set dbs = CurrentDb
strSQL = "DROP TABLE 101;"
dbs.Execute strSQL
End Sub
а ты
:))
Хе, так ты же хотел команду SQL целиком, вот она вся, целиком и была продемонстрирована.
Ну а запуска на выполнение SQL запроса это уже отдельная темя для разговора.
То что ты написал, это запуск через DAO (кстати поэтому писать лучше - Dim dbs As DAO.Database)
А можно еще и через ADO:
cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandType = adCmdText
cmd.CommandText = strSQL
cmd.Execute lngAffected, , adExecuteNoRecords
А можно и просто через DoCmd.RunSQL strSQL
А если имя таблицы постоянное, то можно твой запрос сохранить в базе и провернуть указанные выше 3 варианта указывая уже имя сохраненного запроса. Это может быть удобнее в том смысле, что если запрос будет на глаз и если имя таблицы надо будет изменить, не придется лазить в поисках по всему коду, а достаточно будет открыть сохраненный запрос.
Так что услышать можно много всего :)