Таблица VBA Access 2003 с переменным количеством столбцов - PullRequest
1 голос
/ 19 ноября 2008

У меня есть таблица в Access 2003 VBA с 164 столбцами, но данные, которые я получаю, имеют 181 столбец, и, возможно, в будущем они увеличатся. Мне нужно знать, как изменить размер таблицы и добавить дополнительные столбцы во время выполнения Я знаю, как проверить, сколько столбцов мне нужно, поэтому мне просто нужно знать, как изменить размер моего собственного стола.

спасибо

Ответы [ 7 ]

3 голосов
/ 19 ноября 2008

Не на чем основывать это, но это звучит как проблема дизайна. Я бы посмотрел на данные, которые управляют этими дополнительными столбцами, и посмотрю, можно ли создать столбец для его хранения.

Если данные действительно настолько изменчивы, я бы подумал о создании новой таблицы с Key, FieldName, FieldValue в качестве столбцов. Таким образом, вам не придется изменять отчеты, запросы, процедуры импорта при каждом изменении данных.

3 голосов
/ 19 ноября 2008

Другой вариант; вместо таблицы « short-fat » с большим количеством столбцов используйте таблицу « tall-skinny » с большим количеством строк:

Short-жир:

   ID
   FirstName
   LastName
   ...
   Amount

   1 Joe Smith   ... $123
   2 Bob Roberts ... $214
   3 Jim Black   ... $500

Tall-тощий:

   RecordID
   FieldNumber
   FieldName
   FieldValue

   1 1 FirstName Joe
   1 2 LastName  Smith
   ...
   1 n Amount $123
   2 1 FirstName Bob
   2 2 Lastname  Roberts
   ...
   2 n Amount    $214
   3 1 FirstName Jim
   3 2 LastName  Black
   ...
   3 n Amount    $500

Это хорошо, если у вас есть «автономный» стол, который не должен соединяться с другими столами, иначе вы попадете в мир боли.

2 голосов
/ 19 ноября 2008

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

1 голос
/ 19 ноября 2008

Если вы застряли в этом плохом дизайне, вы можете использовать SQL для добавления столбцов по мере необходимости:

strSQL="ALTER TABLE tblTable ADD COLUMN NewCol Text (25)"
CurrentDB.Execute strSQL,dbFailOnError

Или вы можете использовать TableDef.

1 голос
/ 19 ноября 2008

Может быть что-то здесь . Вероятно, я бы создал новую таблицу на основе старой и с дополнительными столбцами из источника данных. Затем я заполнил бы новую таблицу из двух источников данных. Я бы сделал это, если бы ни по какой другой причине, кроме случаев, когда я сохранял старые данные в безопасности, создавая новые.

0 голосов
/ 19 ноября 2008

Итак, вы ищете код VB / VBA, чтобы изменить таблицу в MDB? Похоже, это то, что вам нужно - что-то автоматизированное на основе входящих данных. Если у вас нет прав доступа к файлу MDB, это будет сложно сделать, но я думаю, что вы на самом деле говорите, что у вас нет возможности открыть MDB в Access и изменить его.

0 голосов
/ 19 ноября 2008

проблема в том, что у меня нет прав на изменение дизайна полная база данных уже создана, моя работа состоит только в том, чтобы затруднить чтение данных в формате csv, но эти данные ... нужно больше столбцов, чем было предусмотрено программистом из предыдущих версий вот почему я не могу просто удалить таблицу и кроме того есть около 30 или 40 таблиц, как я описал в вопросе вот почему я попросил какой-то алгоритм для изменения количества столбцов

но спасибо за быстрый awnser

...