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

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

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

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

Также можно с использованием DAO, ADO проверить наличие таблицы, или принципиально с "Exists" нужно?
...
Рейтинг: 0 / 0
17.05.2006, 16:19
    #33733155
anjekos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
if exists+jet
А как из 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
17.05.2006, 16:50
    #33733275
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
if exists+jet
...
Рейтинг: 0 / 0
17.05.2006, 18:55
    #33733764
anjekos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
if exists+jet
Большое спасибо, все Ок!
...
Рейтинг: 0 / 0
17.05.2006, 23:14
    #33734111
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
if exists+jet
По поводу того, что не разрешен доступ, 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
18.05.2006, 00:10
    #33734140
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
if exists+jet
вообще-то, есть более простой вариант. Использовать коллекцию 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
18.05.2006, 08:27
    #33734357
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
if exists+jet
White Owl, мне кажется, что все-таки, самым простым будет вариант, который я привел в первом сообщении.
...
Рейтинг: 0 / 0
18.05.2006, 08:52
    #33734396
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
if exists+jet
AshtonWhite Owl, мне кажется, что все-таки, самым простым будет вариант, который я привел в первом сообщении.
согласен
...
Рейтинг: 0 / 0
18.05.2006, 13:23
    #33735430
anjekos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
if exists+jet
Ого, масса вариантов оказывается!:-)
Всем огромгое спасибо!
Вариант с On error похоже и правда самый простой, но душа что то противится использовать его:-)
...
Рейтинг: 0 / 0
18.05.2006, 18:23
    #33736718
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
if exists+jet
Верно, вариант с ON ERROR и простым запросом на удаление действительно более простой...
Но если религиозные чувства не позволяют сознательно генерировать ошибку - можно все таки воспользоваться и стандартными методами интерфейса :) Во всяком случае это будет повеселее чем копаться в системных таблицах.
...
Рейтинг: 0 / 0
18.05.2006, 18:31
    #33736742
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
if exists+jet
White Owl
Но если религиозные чувства не позволяют сознательно генерировать ошибку...
Это еще и не вплоне корректно, на данной строке может быть море ошибок вызванных самыми разными ситуациями и для уверенности нужно еще правильно трактовать ошибку. Вообщем, я бы не советовал этот способ.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / if exists+jet / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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