Выборочно отбросить много таблиц в Access? - PullRequest
1 голос
/ 13 февраля 2010

Мне нужно удалить 175 из 180 таблиц в Access 2003 (с использованием базы данных формата Access 2000). Первым делом я попытался перейти к списку таблиц и попытаться выбрать все, щелкнув по элементам управления, которые я хочу сохранить, и выбрать «Удалить». Однако оказывается, что вы можете выбрать только по одному за раз.

Затем я нашел способ получить список всех имен таблиц в виде простого текста и сделал набор drop операторов, используя Vim:

drop table table_1;
drop table table_2;
...
drop table table_175;

(Очевидно, это не настоящие имена.) Эти операторы отлично работают сами по себе (то есть просто выполняют по одному за раз, но когда я пытаюсь запустить 2 или более из них, я получаю сообщение об ошибке:

Syntax error in DROP TABLE or DROP INDEX.

Кажется, это побеждает цель. О, доступ ... ты всегда заставляешь меня хотеть вырвать мои волосы.

Чего мне не хватает, чтобы заставить эту работу? Любой процесс, который позволит мне сохранить несколько таблиц, которые мне нужны для моих целей, был бы великолепен. (Тем не менее, я бы хотел не изучать Visual Basic.)

Ответы [ 3 ]

2 голосов
/ 13 февраля 2010

У Remou есть ответ на вашу проблему, но в качестве предложения вы можете импортировать таблицы, которые хотите сохранить, в новый файл. Вы можете выбрать несколько файлов и их данные. Вы можете получить более чистый файл, если у вас не осталось много таблиц.

2 голосов
/ 13 февраля 2010

Использовать VBA.

For Each tbl In CurrentDb.TableDefs
    If Left(tbl.Name,4) <> "Msys" Then
        s = "DROP TABLE " & tbl.Name
        CurrentDb.Execute s
    End If
Next

For i = ( CurrentDb.TableDefs.Count - 1 ) To 0 Step -1
    If Left(tbl.Name,4) <> "Msys" Then
        ''Debug.Print CurrentDb.TableDefs(i).Name
        CurrentDb.TableDefs.Delete CurrentDb.TableDefs(i).Name
    End If
Next

Возможно, вам придется предоставить массив или набор записей и повторить его, если вы хотите удалить определенные таблицы или если таблицы связаны между собой.

1 голос
/ 05 мая 2011

Как описано выше, в общем случае мы используем объектную модель и VBA для удаления определений таблиц и их данных.

Вы не можете запускать пакеты SQL в Access, опять же, способ перебирать несколько операторов SQL - в VBA.

Access - это не консольная СУБД, и вы не можете запускать пакетные сценарии, как в SQL Plus, и вы непременно потрясете, если попробуете.

Access - это контейнер приложений и инструмент анализа, и все процедурные приложения используют VBA или макросы, которые значительно менее гибки, чем VBA. Вы получите максимум от Access, если вы действительно изучите некоторый VBA. Доступ очень ограничен без VBA, а доступ к функциональности, к которой вы сможете получить доступ, - это простой запрос по запросу.

...