Изменение имен полей

Я ищу способ изменить имена полей в Access.

я импортирую данные через макрос из текстовых файлов. Который я потом обзор через отчет Crystal. Теперь, иногда, отчет должен читать поле, которое я импортировал в поле 7 вместо поля 5. Поэтому я не хочу перестраивать весь процесс импорта, потому что я часто работаю над импортом для 500000-1000, 000 записей и импорт, что много записей из текстового файла занимает около 5-9 минут каждый. Я бы действительно вместо этого выполните импорт только один раз и измените имена полей, если это один из таких случаев. До сих пор я просто был правой кнопкой мыши переименование-ing.

есть ли способ для меня, чтобы нажать макрос и переименовать Field5 -> FieldTemp, Field7 -> Field5, и FieldTemp -> Field7

в конечном счете мне нужно переименовать Field5 Field7. Предложения?

обновление: я нашел этой но я не уверен, как реализовать это. Будет ли это работать так, как я думаю? Если да, то как я могу получить это работает?

22
задан nixda
07.05.2023 5:50 Количество просмотров материала 2806
Распечатать страницу

1 ответ

вы можете сделать это с помощью VBA и сочетания клавиш, назначенного вашему коду.

Public Function swapFieldNames(table, name1, name2)

    '## Close & save the table in case its open or else you can't rename fields
    DoCmd.Close acTable, CurrentDb().TableDefs(table).Name, acSaveYes

    '## Save all touched field names to temporarily variables for later use
    temp1 = CurrentDb().TableDefs(table).Fields(name1).Name
    temp2 = CurrentDb().TableDefs(table).Fields(name2).Name

    '## Rename them to unique names because duplicate names are not allowed
    CurrentDb().TableDefs(table).Fields(name1).Name = "#$%temp1%$#"
    CurrentDb().TableDefs(table).Fields(name2).Name = "#$%temp2%$#"

    '## Rename them again and do the switch
    CurrentDb().TableDefs(table).Fields("#$%temp1%$#").Name = temp2
    CurrentDb().TableDefs(table).Fields("#$%temp2%$#").Name = temp1

    '## Open the table to view the result
    DoCmd.OpenTable CurrentDb().TableDefs(table).Name

End Function

Я загрузил демо-базе где вы можете нажать F3 поменять местами имена полей "field5"и " field7"

enter image description here

шаг за шагом

  1. откройте базу данных Access и нажмите ALT+F11 вызвать редактор VBA
  2. на левой панели щелкните правой кнопкой мыши имя базы данных и вставьте модуль
  3. на правой панели вставьте приведенный выше код и сохраните его как e.g VBA swap module
  4. соблюдать руководство Microsoft о том, как использовать AutoKeys для быстрого способа выполнения кода

    • на вкладке Создать нажмите макрос (или стрелку под модулем, а затем макрос)
    • на вкладке Конструктор в группе показать или скрыть нажмите кнопку имена макросов, чтобы отобразить столбец имя макроса
    • в Имя макроса столбец, вставьте ключ, к которому вы хотите назначить действие

      Macro Name      Key or keyboard shortcut
      ^A or ^4        CTRL+A or CTRL+4
      {F1}            F1
      ^{F1}           CTRL+F1
      +{F1}           SHIFT+F1
      
    • в столбце действие добавьте RunCode действия, который выполняется при нажатии клавиши
    • в столбце Аргументы, вставить swapFieldNames("table1", "field5", "field7") или как вы назвали свой модуль. Здесь вы также определяете, какую таблицу следует использовать для переименования и какие имена полей следует поменять местами enter image description here

    • нажмите Сохранить или нажмите CTRL+S и назовите макрос "AutoKeys". Только с этим именем Access будет знать, что он должен назначить ярлык при повторном открытии


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

2
отвечен nixda 2023-05-08 13:38

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх