Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Как кодом удалить только связанные таблицы в базе?  [new]
Геха
Guest
Как перебрать таблицы базы и удалить связанные? При каждом удалении меняется число таблиц и не получается организовать цикл.
29 сен 04, 15:01    [996633]     Ответить | Цитировать Сообщить модератору
 Re: Как кодом удалить только связанные таблицы в базе?  [new]
Serge Gavrilov
Member

Откуда:
Сообщений: 3248
Считать надо с максимума...
For i = CurrentDb.Tabledefs.Count-1 To 0 Step -1
...
Next
29 сен 04, 15:09    [996671]     Ответить | Цитировать Сообщить модератору
 Re: Как кодом удалить только связанные таблицы в базе?  [new]
Geo
Member

Откуда:
Сообщений: 6883
dim tbl as tabledef

for each tbl in currentdb.tabledefs
...
...
next tbl
29 сен 04, 15:10    [996680]     Ответить | Цитировать Сообщить модератору
 Re: Как кодом удалить только связанные таблицы в базе?  [new]
Serge Gavrilov
Member

Откуда:
Сообщений: 3248
Geo
dim tbl as tabledef

for each tbl in currentdb.tabledefs
...
...
next tbl

так тоже неправильно будет работать, т.е. пропускать ...
29 сен 04, 15:12    [996702]     Ответить | Цитировать Сообщить модератору
 Re: Как кодом удалить только связанные таблицы в базе?  [new]
Geo
Member

Откуда:
Сообщений: 6883
Почему?

  Dim t As TableDef
  
  For Each t In CurrentDb.TableDefs
    If Left(t.Name, 1) = "t" Then
       CurrentDb.TableDefs.Delete t.Name
    End If
  Next
все удалила.
29 сен 04, 15:17    [996733]     Ответить | Цитировать Сообщить модератору
 Re: Как кодом удалить только связанные таблицы в базе?  [new]
Serge Gavrilov
Member

Откуда:
Сообщений: 3248
Geo
Почему?

  Dim t As TableDef
  
  For Each t In CurrentDb.TableDefs
    If Left(t.Name, 1) = "t" Then
       CurrentDb.TableDefs.Delete t.Name
    End If
  Next
все удалила.


Значит просто повезло или я ошибся, на досуге посмотрю ...
29 сен 04, 19:13    [997920]     Ответить | Цитировать Сообщить модератору
 Re: Как кодом удалить только связанные таблицы в базе?  [new]
Serge Gavrilov
Member

Откуда:
Сообщений: 3248
Я понял, да, действительно такой код удалит, но методически он неправилен, прежде всего потому что каждый раз вызывается CurrentDb (что и позволяет обновить коллекцию объектов) - довольно медленная процедура, а также потому, что проблема "маскируется".
Попробуйте видоизменить ваш код следующим образом:
Dim t As TableDef
Dim Db as DAO.Database
Set Db = CurrentDb   
For Each t In Db.TableDefs
    If Left(t.Name, 1) = "t" Then
        Db.TableDefs.Delete t.Name
    End If
Next
И код уже не будет работать должным образом.

Но, прошу прощения за первый "скороспелый" ответ
29 сен 04, 19:23    [997941]     Ответить | Цитировать Сообщить модератору
 Re: Как кодом удалить только связанные таблицы в базе?  [new]
Pantalone
Member

Откуда:
Сообщений: 1322
Действительно фигня какая-то...
22 дек 04, 14:55    [1200549]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить