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

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

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

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

Что значит нет схемы? К чему вы подключаетесь-то?
...
Рейтинг: 0 / 0
05.04.2006, 11:05
    #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
05.04.2006, 11:06
    #33645513
SmeL_md
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
таблица существует ?
Создаете таблицу и ловите ошибку о том что таблица существует.
...
Рейтинг: 0 / 0
05.04.2006, 11:14
    #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
05.04.2006, 11:16
    #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
05.04.2006, 15:22
    #33646584
kostic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
таблица существует ?
спасибо огромное за помощь
как раз то, что надо было

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

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

а вот на счёт схемы ...
работать со схемой данных в ACCESS не приходилось, но я так думаю, что её надо через
Сервис-Схема данных создавать вручную
сейчас она не нужна мне, поэтому и написал что её нет.
...
Рейтинг: 0 / 0
05.04.2006, 22:14
    #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
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / таблица существует ? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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