Импорт Excel для доступа: Дата будет именем поля для таблицы доступа

Я пытался импортировать лист Excel в таблицу Access, и на листе были определенные даты (например, 12/4/2017) в качестве заголовков для столбцов.

И когда я попытался импортировать в Access, Access не позволил мне импортировать этот лист в таблицу, так как "04.12.2017 не является допустимым именем поля"

Есть ли другие способы импортировать лист или работать над этим?

Спасибо

1 ответ

Решение

Имена полей, элементов управления и объектов в Access:

  • Может быть длиной до 64 символов.

  • Может содержать любую комбинацию букв, цифр, пробелов и специальных символов, кроме точки (.), восклицательный знак (!), акцент могила (``) или скобки ([ ]).

  • Не могу начать с начальных пробелов.

  • Не может включать управляющие символы (значения ASCII от 0 до 31).

  • Не удается включить двойную кавычку (") в имена таблиц, представлений или хранимых процедур в проекте Microsoft Access. ( Источник)

Значения даты и времени в Excel хранятся внутри как 64-разрядное число с плавающей запятой. Значение слева от десятичной запятой представляет количество дней с 30 декабря 1899 года. Значение справа от десятичной дроби представляет собой долю дня с полуночи.

Например:

  • 12:00 Noon хранится как 0.5,

  • 1.0 представляет полночь 1 января 1900 года.

  • 2.25 представляет 6:00 утра 2 января 1900 года.

  • Ваш пример даты 12/4/2017 будет храниться как 43073,


Интерпретация даты и времени зависит от настройки региональных настроек в соответствии с Microsoft (необязательно в стандартном формате даты, принятом в стране). Например, я живу в Северной Америке, поэтому по умолчанию Excel будет интерпретировать 12/4/2017 как свидание

Однако по разным причинам я предпочитаю формат даты YYYY-MM-DD (технически названный ISO 8601 "), поэтому я изменил формат в настройках Windows. Поэтому, когда я вхожу 12/4/2017 Excel не распознает ее как дату, поэтому она сохраняется как текст, но когда я вхожу 2017-12-4 Excel знает, чтобы сохранить его как дату.


Помимо региональных настроек, я подозреваю, что к именам ваших полей может быть привязано время (даже если они не отформатированы для отображения как таковые).

Если ячейка, которую вы хотите использовать в качестве имени поля, на самом деле содержит:

April 12, 2017 6:00 AM

который, если отформатирован как M/D/YYYY "скрывает" время, чтобы отобразить как:

12/4/2017

хотя он на самом деле хранится как:

43073.25

Поскольку имена полей Access не могут содержать точку (см. Выше), Access становится "перепутанным" с долей дня (.25).


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

Вы могли бы:

  • Отформатируйте строку с именами полей в виде текста.

    1. Щелкните правой кнопкой мыши номер строки и выберите Format Cells,
    2. Под Number выберите вкладку Text
  • Используйте функцию, чтобы удалить времена:

    Если B1 содержит дату и время, которое вы хотите использовать в качестве имени поля в A1, вы можете использовать функцию Int в ячейке A1 (округлить значение до целого числа):

    =Int(B1)

    Фракция (время) удаляется, но значение по-прежнему сохраняется как число / дата.

  • Используйте функцию для преобразования даты и времени в текст:

    Если B1 содержит дату, которую вы хотите использовать в качестве имени поля в A1 Вы можете использовать функцию Text в ячейке A1:

    =Text(B1, "M/D/YYYY HH:MM")

Как вы можете видеть на изображении, Access позволяет мне использовать даты в качестве имен полей, если они правильно отформатированы:

Доступ к импорту листа Excel с датами в качестве имен полей


Связанные Дальнейшее чтение:


Примечание о нормализации базы данных:

То, что вы можете использовать даты в качестве имен полей, не означает, что вы должны это делать. Обычно считается плохим дизайном базы данных иметь конкретное имя поля.

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

Если ваши данные имеют названия полей для конкретной даты:

Ex.1

... тогда дата должна быть добавлена ​​как часть записи, а не как имя поля:

ex.2

... хотя это еще не нормализовано. Нормализация - это оптимизация эффективности и возможность расширения, поэтому, возможно, база данных может быть настроена так:

ex.3

С помощью этого метода было бы расширение базы данных, а анализ данных был бы более логичным (возможно, упростил бы поиск тенденций в тревожных привычках в еде Джейн).

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


Дальнейшее чтение о нормализации:


РЕДАКТИРОВАТЬ: (результат)

Вы не упомянули, какой метод вы используете для импорта данных из Excel в Access, что может быть актуально (поскольку существует несколько возможных комбинаций). Access может обрабатывать исходные данные иначе, если ваши данные Excel сохранены в XLSM против XLS против CSV и т. д. Данные могут быть импортированы с помощью New Source Data... from File интерфейс, программно с VBA, или даже другие языки. Поэтому, если вы не можете заставить работать один метод (с датами, отформатированными определенным образом), попробуйте одну из других комбинаций.

Для простоты я использовал встроенный интерфейс с XLSM в ACCDB, Результат продемонстрирован ниже:

пример импорта данных

Обратите внимание, что это сработало, хотя я включил раз в заголовки (и работал бы без раз), так как они правильно отформатированы как текст, и First Column Contains Column Headers выбран.

Другие вопросы по тегам