powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / if exists+jet
12 сообщений из 12, страница 1 из 1
if exists+jet
    #33732920
anjekos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите плиз, есть ли вариант использования drop table [...] if exists для mdb?
...
Рейтинг: 0 / 0
if exists+jet
    #33733029
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В Access одним запросом не получится.

Почему бы просто не сделать следующим образом?

Код: plaintext
1.
2.
  On Error Resume Next 

  cnn.Execute "Drop Table [" & strTable & "]" 

Также можно с использованием DAO, ADO проверить наличие таблицы, или принципиально с "Exists" нужно?
...
Рейтинг: 0 / 0
if exists+jet
    #33733155
anjekos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как из VB c использованием ADO проверить наличие таблицы? Запрос типа:
"SELECT MSysObjects.Name , basObjType([Type]) AS TypeName " _
& "FROM MSysObjects " _
& "WHERE (((MSysObjects.Name)=[tbNum]) AND " _
& "((basObjType([Type]))=[strType]));"
не прокатывает, грит не разрешен доступ к MSysObjects.
ConnStr="Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=" & App.Path & "\garant.mdb;User Id=admin; "_
& "Jet LEDB:Database Password=ass;"
...
Рейтинг: 0 / 0
if exists+jet
    #33733275
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
if exists+jet
    #33733764
anjekos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо, все Ок!
...
Рейтинг: 0 / 0
if exists+jet
    #33734111
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По поводу того, что не разрешен доступ, Melkiades привел точный ответ.

По поводу того, как через ADO.

Код: 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.
    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    
    Set cnn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
      & "Data Source=E:\1\db1.mdb;User Id=Admin;" _
      & "Jet OLEDB:Database Password=123;"
      
    Set rst = cnn.OpenSchema(adSchemaTables, _
      Array(Empty, Empty, Empty, "Table"))
      
    Do Until rst.EOF
        If rst!TABLE_NAME = "Table1" Then
            cnn.Execute "DROP TABLE Table1"
            Exit Do
        End If
        rst.MoveNext
    Loop
    
    rst.Close
    cnn.Close
    
    Set rst = Nothing
    Set cnn = Nothing
...
Рейтинг: 0 / 0
if exists+jet
    #33734140
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще-то, есть более простой вариант. Использовать коллекцию ADOX.Catalog.Tables
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    Dim cat As New ADOX.Catalog
    
    ' Open the Catalog.
    cat.ActiveConnection = _
        "Provider='Microsoft.Jet.OLEDB.4.0';" & _
        "Data Source='Northwind.mdb';"
    
    ' Delete the Procedure.
    cat.Tables.Delete "SomeTable"
...
Рейтинг: 0 / 0
if exists+jet
    #33734357
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl, мне кажется, что все-таки, самым простым будет вариант, который я привел в первом сообщении.
...
Рейтинг: 0 / 0
if exists+jet
    #33734396
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AshtonWhite Owl, мне кажется, что все-таки, самым простым будет вариант, который я привел в первом сообщении.
согласен
...
Рейтинг: 0 / 0
if exists+jet
    #33735430
anjekos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ого, масса вариантов оказывается!:-)
Всем огромгое спасибо!
Вариант с On error похоже и правда самый простой, но душа что то противится использовать его:-)
...
Рейтинг: 0 / 0
if exists+jet
    #33736718
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верно, вариант с ON ERROR и простым запросом на удаление действительно более простой...
Но если религиозные чувства не позволяют сознательно генерировать ошибку - можно все таки воспользоваться и стандартными методами интерфейса :) Во всяком случае это будет повеселее чем копаться в системных таблицах.
...
Рейтинг: 0 / 0
if exists+jet
    #33736742
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Но если религиозные чувства не позволяют сознательно генерировать ошибку...
Это еще и не вплоне корректно, на данной строке может быть море ошибок вызванных самыми разными ситуациями и для уверенности нужно еще правильно трактовать ошибку. Вообщем, я бы не советовал этот способ.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / if exists+jet
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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