Member 11561472 Ответов: 2

Как я могу циклически перебирать таблицы в базе данных access в VB.NET-что?


Я хочу создать вице-президента.Чистый код для получения имен всех таблиц в базе данных Access и изменения имен каждой таблицы путем добавления “tbl” в начало каждой таблицы. Можно ли это сделать? Любая помощь будет очень признательна.

Что я уже пробовал:

Это мое начало, но я в растерянности.

Импортирует System.Data.Для oledb

Суб ChangeTableNames()
Dim varCountNumTables как целое число
Дим ДТ в качестве объекта DataTable

VarCountNumTables = dt.Tables.count
Dt.Таблицы(0).TableName = “NewTableName”

Конец Подводной Лодки

2 Ответов

Рейтинг:
2

Wendelius

Прежде всего, таблица данных не содержит таблиц. Если вы говорите о наборе данных, то вы должны использовать Класс Набора Данных (System.Data) | Microsoft Docs[^]

Вы также писали о таблице Access, поэтому, если эти таблицы необходимо переименовать внутри базы данных Access, вы можете использовать Метод docmd.Переименовать способ (открыть) | Майкрософт Документы[^]


Рейтинг:
2

OriginalGriff

Прочитать имена таблиц из Access очень просто: выполните команду SQL:

SELECT Name FROM MSysObjects WHERE (Name Not Like "MSys*") AND (Type In (1,4,6))  ORDER BY Name
и он их вернет.
Но... Access не поддерживает переименование таблиц с помощью команды ALTER TABLE SQL, поэтому вам придется создать новую таблицу с новым именем и той же структурой, что и старая, скопировать все строки и затем удалить оригинал.Поскольку это звучит очень похоже на "одну из" работ, я бы сделал это вручную в Access - это будет намного проще и, вероятно, одновременно надежнее и быстрее!


Richard MacCutchan

Я только что попробовал это сделать и получил исключение, говорящее об отсутствии разрешения на чтение для MSysObjects. Есть идеи?

OriginalGriff

У меня нет ни одного установленного механизма доступа, поэтому я не могу проверить, но это проблема с разрешениями:
https://stackoverflow.com/questions/1937703/record-cannot-be-read-no-read-permission-on-msysobjects