powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / таблица существует ?
10 сообщений из 10, страница 1 из 1
таблица существует ?
    #33645282
kostic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как написать на VBA условие

if таблица "tab" существует
:
:
:
end if

спасибо
...
Рейтинг: 0 / 0
таблица существует ?
    #33645373
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
таблица существует ?
    #33645466
kostic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо, немного не то ...
в том примере вывод имён всех таблиц базы через схему, а у меня нет схемы.

а надо вот что ...
уже написано подключение к базе через ADO ...
и надо узнать,
есть в этой базе таблица с именем "tab" или нет
спасибо
...
Рейтинг: 0 / 0
таблица существует ?
    #33645490
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kosticспасибо, немного не то ...
в том примере вывод имён всех таблиц базы через схему, а у меня нет схемы.

Что значит нет схемы? К чему вы подключаетесь-то?
...
Рейтинг: 0 / 0
таблица существует ?
    #33645511
Nikz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно попробовать что нибудь вроде:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Public Function tabExists(name AS String, cn AS ADODB.Connection) as Boolean

Dim r as New ADODB.Recordset 

On Error Goto Err_Exit

r.Open "SELECT * FROM '" & name & "'", cn

tabExists=True

Exit Function

Err_Exit:

tabExists = False

End Function
...
Рейтинг: 0 / 0
таблица существует ?
    #33645513
Фотография SmeL_md
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создаете таблицу и ловите ошибку о том что таблица существует.
...
Рейтинг: 0 / 0
таблица существует ?
    #33645551
Nikz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вариант в голову пришел.
Если база Access то можно так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Public Function tblExists(sName) As Boolean

Dim v As Variant
For Each v In CurrentData.AllTables
    If v.Name = sName Then
        tblExists = True
        Exit Function
    End If
Next v
tblExists = False

End Function
...
Рейтинг: 0 / 0
таблица существует ?
    #33645559
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Function prTables(b As String) As Boolean
    ' True если есть
    Dim dbAccess As Database
    Dim Puti As String
    
    Puti = ThisWorkbook.Path & "\DAlt.mdb"
    Set dbAccess = OpenDatabase(Puti, False, True, ";DATABASE=" & Puti & ";PWD=111")
    On Error Resume Next
    Puti = dbAccess.TableDefs(b).Name
    If Err =  0  Then prTables = True Else prTables = False
    dbAccess.Close
    Set dbAccess = Nothing
End Function
...
Рейтинг: 0 / 0
таблица существует ?
    #33646584
kostic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо огромное за помощь
как раз то, что надо было

Melkiades kosticспасибо, немного не то ...
в том примере вывод имён всех таблиц базы через схему, а у меня нет схемы.

Что значит нет схемы? К чему вы подключаетесь-то?

а вот на счёт схемы ...
работать со схемой данных в ACCESS не приходилось, но я так думаю, что её надо через
Сервис-Схема данных создавать вручную
сейчас она не нужна мне, поэтому и написал что её нет.
...
Рейтинг: 0 / 0
таблица существует ?
    #33647607
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kosticв том примере вывод имён всех таблиц базы через схему, а у меня нет схемы.
Вы не поняли того, что вам предложили. Схема данных и метод OpenSchema объекта Connection - это не одно и то же. Метод OpenSchema позволяет создавать специальные наборы с самой разнообразной информацией, например, информацией о таблицах, о столбцах таблицы, индексах и т.д.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Private cnn As ADODB.Connection

Public Sub procConnection()
    Set cnn = New ADODB.Connection
    Set cnn = CurrentProject.Connection
    
    If fnDoesTableExists("Table1") Then
        Debug.Print "Таблица существует."
    Else
        Debug.Print "Таблица НЕ существует."
    End If
    
    cnn.Close
    Set cnn = Nothing
End Sub

Public Function fnDoesTableExists( _
  strTableName As String) As Boolean
    Dim rst As ADODB.Recordset
    
    Set rst = New ADODB.Recordset
    Set rst = cnn.OpenSchema(adSchemaTables)
    
    Do Until rst.EOF
        If rst!TABLE_NAME = strTableName Then
            fnDoesTableExists = True
            Exit Do
        End If
        rst.MoveNext
    Loop
    
    rst.Close
    Set rst = Nothing
End Function

Кстати в примере от HandKot'а, по-видимому, опечатка.

Вместо If rs!TABLE_TYPE = "TABLE" нужно rs!TABLE_NAME.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / таблица существует ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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