powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как в ВБА проверить существование таблицы?
18 сообщений из 18, страница 1 из 1
Как в ВБА проверить существование таблицы?
    #32209621
Champion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пож-та, как в ВБА проверить существование таблицы? Просто мне в процедуре надо удалить таблицу, а если ее нет, то выдается ошибка. Каким методом проверяется существование?
...
Рейтинг: 0 / 0
Как в ВБА проверить существование таблицы?
    #32209645
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>ее нет, то выдается ошибка

ну и обработай свою ошибку. Проблема-то в чем?
...
Рейтинг: 0 / 0
Как в ВБА проверить существование таблицы?
    #32209654
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mdb или adp?
...
Рейтинг: 0 / 0
Как в ВБА проверить существование таблицы?
    #32209707
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Pavel
>mdb или adp?

а какая разница.
VBA+DDL+обработка ошибок

On error resume next
currentproject.connection.execute "DROP TABLE table_name"
On error goto 0
Case err.number
case 0
'таблица удалилась
case -2147217865
'таблицы не существует
case else
...
end select


Правда наверное лучше повеить на case else
так как ошибки могут и из-за отсуствия прав доступа, например.
...
Рейтинг: 0 / 0
Как в ВБА проверить существование таблицы?
    #32209721
Champion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так мне не надо обрабатывать ошибки. Я просто хочу, если таблицы не существует, то чтобы ничего и не удалялось.

If Таблица (Table1) существует then
CurrentDb.TableDefs.Delete "Table1"
end If

Вот меня инетресует как проверить существование таблицы?
...
Рейтинг: 0 / 0
Как в ВБА проверить существование таблицы?
    #32209737
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тогда обратитьс к ней. Если таблица - есть то все пройдет нормально, если нет - то будет опять же ошибка.
Можешь выше приведенный пример:
CurrentProject.Connection.Execute "Select Top 1 * From Таблица"
Номер ошибки будет тем же
...
Рейтинг: 0 / 0
Как в ВБА проверить существование таблицы?
    #32209757
А что мешает проверить поле Name системной таблицы MSysObjects? Помоему так проще.
...
Рейтинг: 0 / 0
Как в ВБА проверить существование таблицы?
    #32209764
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Champion:
зачем так мучаться?
напиши

Код: plaintext
1.
on error resume next
CurrentDb.TableDefs.Delete  "Table1"  


и все.
...
Рейтинг: 0 / 0
Как в ВБА проверить существование таблицы?
    #32209768
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самое простое как у Senin Viktor только без обработки ошибок
Код: plaintext
1.
2.
On error resume next 
currentproject.connection.execute  "DROP TABLE table_name"  
On error goto  0  

или
Код: plaintext
1.
2.
On error resume next 
CurrentDb.TableDefs.Delete  "Table1"  
On error goto  0  
...
Рейтинг: 0 / 0
Как в ВБА проверить существование таблицы?
    #32209779
Так вот еще можно:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Dim myRecordCount As Integer

myRecordCount = DCount( "Name" ,  "MSysObjects" ,  "Name = "  "Имя таблицы"  " " ) 

If myRecordCount <>  1  Then

Ваша процедура

end if
...
Рейтинг: 0 / 0
Как в ВБА проверить существование таблицы?
    #32209788
Champion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромное спасибо.
...
Рейтинг: 0 / 0
Как в ВБА проверить существование таблицы?
    #32209798
Фотография wara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так не пойдет?
function TableExist(TableName as string) as boolean
dim tdf as tabledef
dim flag as boolean
flag=false
for each tdf in currentdb.tabledefs
if tdf.name=tablename then flag=true
next
TableExist=flag
end function
...
Рейтинг: 0 / 0
Как в ВБА проверить существование таблицы?
    #32209805
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Хамский Шкет

Способ хорош. Тока я сейчас е%бусь убирая всякое упоминание системных таблиц акеса при переносе своей прги на сиквел. Лучше использовать что-нибудь по-универсальней. Жить станет проще, жить станет веселее
...
Рейтинг: 0 / 0
Как в ВБА проверить существование таблицы?
    #32209813
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 wara
Человек просил как проще...
И еще тогда уж лучше так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
function TableExist(TableName as string) as boolean 
dim tdf as tabledef 
dim flag as boolean 
flag=false 
for each tdf in currentdb.tabledefs 
 if tdf.name=tablename then 
    flag=true 
    exit for
 end  if
next 
TableExist=flag 
end function
...
Рейтинг: 0 / 0
Как в ВБА проверить существование таблицы?
    #32209829
Фотография wara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIG, ну да, exit for - это действительно лучше. Не надо таблицы после того, как нужная найдена, перебирать...
...
Рейтинг: 0 / 0
Как в ВБА проверить существование таблицы?
    #32209833
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIG, ну да, exit for - это действительно лучше
Убедил
...
Рейтинг: 0 / 0
Как в ВБА проверить существование таблицы?
    #32209881
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще быстрей, еще унивирсальней и без exit for :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Function TableExist(TableName As String) As Boolean
    On Error Resume Next
    CurrentProject.Connection.Execute  "Select Top 1  * From " & TableName
    If Err.Number =  0  Then
        TableExist = True
    Else
        TableExist = False
    End If
End Function
...
Рейтинг: 0 / 0
Как в ВБА проверить существование таблицы?
    #32209890
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
If Err.Number = 0 Then
TableExist = True
Else
TableExist = False
End If

можно записать короче:

TableExist = Err = 0
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как в ВБА проверить существование таблицы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]