Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Удалить таблицу Access

4.8K
17 марта 2004 года
Sonny
14 / / 28.01.2004
Не сочтите за труд.
Как удалить таблицу Access в модуле на vb.
258
17 марта 2004 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by Sonny
Не сочтите за труд.
Как удалить таблицу Access в модуле на vb.



Можно через DAO или ADO.

Например через ADO (в Acc2000 это библиотека подключена по умолч.)/ В свое время написал для себя функцию и везде ее использую:

Код:
Public Function DelTables(sNameTable1 As String, Optional sNameTable2 As String = "", Optional sNameTable3 As String = "", Optional sNameTable4 As String = "", Optional sNameTable5 As String = "") As Boolean
  ' удаляет таблицы из базы, макс. кол-во перечисл. таблиц - 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
266
17 марта 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by Sonny
Не сочтите за труд.
Как удалить таблицу Access в модуле на vb.


А не проще ли выполнить запрос:
DROP TABLE имя таблицы
(В Jet, по-моему DELETE TABLE имя таблицы)

258
17 марта 2004 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by mhaturov

А не проще ли выполнить запрос:
DROP TABLE имя таблицы
(В Jet, по-моему DELETE TABLE имя таблицы)



Да можно конечно, токо если через ADO, тогда все равно придется создавать объект Command, через DAO .. CurrentDB.Execute и т.д.

Токо если таблицы нет, то ведь Access начнет вопить, придется еще его душить : DoCmd.SetWarnings = False (что-то типа того).

Тем более помойму в DELETE TABLE нельpя использовать конструкцию Like, а я писал эту функцию прежде всего для того, что бы удалять таблицы с ошибками импорта вида _ImportErrors...

266
17 марта 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by SergeySV


Да можно конечно, токо если через ADO, тогда все равно придется создавать объект Command, через DAO .. CurrentDB.Execute и т.д.

Токо если таблицы нет, то ведь Access начнет вопить, придется еще его душить : DoCmd.SetWarnings = False (что-то типа того).

Тем более помойму в DELETE TABLE нельpя использовать конструкцию Like, а я писал эту функцию прежде всего для того, что бы удалять таблицы с ошибками импорта вида _ImportErrors...


Вполне согласен. Просто я хотел, как проще.:)

4.8K
18 марта 2004 года
Sonny
14 / / 28.01.2004
А не сложно команду целиком (DROP TABLE), такой глючный Help у меня, просто абзац.
258
18 марта 2004 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by Sonny
А не сложно команду целиком (DROP TABLE), такой глючный Help у меня, просто абзац.



"DROP TABLE МояТаблица" - вся SQL инструкция :)

4.8K
18 марта 2004 года
Sonny
14 / / 28.01.2004
Ламеру всегда хочется услышать, что-то типа

Sub DelTable()

Dim dbs As Object, strSQL As String
Set dbs = CurrentDb
strSQL = "DROP TABLE 101;"
dbs.Execute strSQL

End Sub

а ты
Цитата:
Originally posted by SergeySV


"DROP TABLE МояТаблица" - вся SQL инструкция :)



:))

258
18 марта 2004 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by Sonny
Ламеру всегда хочется услышать, что-то типа

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:

 
Код:
Set cmd = New ADODB.Command
cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandType = adCmdText
cmd.CommandText = strSQL
cmd.Execute lngAffected, , adExecuteNoRecords


А можно и просто через DoCmd.RunSQL strSQL

А если имя таблицы постоянное, то можно твой запрос сохранить в базе и провернуть указанные выше 3 варианта указывая уже имя сохраненного запроса. Это может быть удобнее в том смысле, что если запрос будет на глаз и если имя таблицы надо будет изменить, не придется лазить в поисках по всему коду, а достаточно будет открыть сохраненный запрос.

Так что услышать можно много всего :)
100K
01 декабря 2018 года
SvsSergo
1 / / 01.12.2018
DoCmd.DeleteObject acTable, "Имя_таблицыr"
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог