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

ну и обработай свою ошибку. Проблема-то в чем?
...
Рейтинг: 0 / 0
16.07.2003, 13:30
    #32209654
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в ВБА проверить существование таблицы?
mdb или adp?
...
Рейтинг: 0 / 0
16.07.2003, 13:59
    #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
16.07.2003, 14:06
    #32209721
Champion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в ВБА проверить существование таблицы?
Так мне не надо обрабатывать ошибки. Я просто хочу, если таблицы не существует, то чтобы ничего и не удалялось.

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

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

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


и все.
...
Рейтинг: 0 / 0
16.07.2003, 14:33
    #32209768
VIG
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
16.07.2003, 14:39
    #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
16.07.2003, 14:44
    #32209788
Champion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в ВБА проверить существование таблицы?
Огромное спасибо.
...
Рейтинг: 0 / 0
16.07.2003, 14:48
    #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
16.07.2003, 14:52
    #32209805
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в ВБА проверить существование таблицы?
2Хамский Шкет

Способ хорош. Тока я сейчас е%бусь убирая всякое упоминание системных таблиц акеса при переносе своей прги на сиквел. Лучше использовать что-нибудь по-универсальней. Жить станет проще, жить станет веселее
...
Рейтинг: 0 / 0
16.07.2003, 14:56
    #32209813
VIG
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
16.07.2003, 15:05
    #32209829
wara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в ВБА проверить существование таблицы?
VIG, ну да, exit for - это действительно лучше. Не надо таблицы после того, как нужная найдена, перебирать...
...
Рейтинг: 0 / 0
16.07.2003, 15:07
    #32209833
VIG
VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в ВБА проверить существование таблицы?
VIG, ну да, exit for - это действительно лучше
Убедил
...
Рейтинг: 0 / 0
16.07.2003, 15:31
    #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
16.07.2003, 15:34
    #32209890
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в ВБА проверить существование таблицы?
If Err.Number = 0 Then
TableExist = True
Else
TableExist = False
End If

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

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


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