Импорт 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
).
Убедитесь, что ваши даты, которые будут использоваться в качестве имен полей, не содержат раз.
Вы могли бы:
Отформатируйте строку с именами полей в виде текста.
- Щелкните правой кнопкой мыши номер строки и выберите
Format Cells
, - Под
Number
выберите вкладкуText
- Щелкните правой кнопкой мыши номер строки и выберите
Используйте функцию, чтобы удалить времена:
Если
B1
содержит дату и время, которое вы хотите использовать в качестве имени поля вA1
, вы можете использовать функцию Int в ячейкеA1
(округлить значение до целого числа):=Int(B1)
Фракция (время) удаляется, но значение по-прежнему сохраняется как число / дата.
Используйте функцию для преобразования даты и времени в текст:
Если
B1
содержит дату, которую вы хотите использовать в качестве имени поля вA1
Вы можете использовать функцию Text в ячейкеA1
:=Text(B1, "M/D/YYYY HH:MM")
Как вы можете видеть на изображении, Access позволяет мне использовать даты в качестве имен полей, если они правильно отформатированы:
Связанные Дальнейшее чтение:
TechRepublic: методы успешного импорта данных Excel в Access
Office.com: рекомендации по именованию полей, элементов управления и объектов
ExcelTactics: полное руководство по использованию дат и времени в Excel
Microsoft: как использовать даты и время в Excel
Переполнение стека: MS Access - Дата как имя поля таблицы
Примечание о нормализации базы данных:
То, что вы можете использовать даты в качестве имен полей, не означает, что вы должны это делать. Обычно считается плохим дизайном базы данных иметь конкретное имя поля.
Возможно, вы намерены импортировать плохо структурированные данные в Access, чтобы решить эту проблему, но если нет, то вам следует рассмотреть вопрос о хранении данных более организованным способом, который способствует расширению и нормализации базы данных.
Если ваши данные имеют названия полей для конкретной даты:
... тогда дата должна быть добавлена как часть записи, а не как имя поля:
... хотя это еще не нормализовано. Нормализация - это оптимизация эффективности и возможность расширения, поэтому, возможно, база данных может быть настроена так:
С помощью этого метода было бы расширение базы данных, а анализ данных был бы более логичным (возможно, упростил бы поиск тенденций в тревожных привычках в еде Джейн).
Увы, я отвлекся. В Интернете доступно множество информации о нормализации базы данных на любой уровень опыта.
Дальнейшее чтение о нормализации:
Википедия: Нормализация базы данных
Microsoft: описание основ нормализации базы данных
ThoughtCo: основы нормализации базы данных
Переполнение стека: нормализация базы данных - кто прав?
РЕДАКТИРОВАТЬ: (результат)
Вы не упомянули, какой метод вы используете для импорта данных из Excel в Access, что может быть актуально (поскольку существует несколько возможных комбинаций). Access может обрабатывать исходные данные иначе, если ваши данные Excel сохранены в XLSM
против XLS
против CSV
и т. д. Данные могут быть импортированы с помощью New Source Data
... from File
интерфейс, программно с VBA, или даже другие языки. Поэтому, если вы не можете заставить работать один метод (с датами, отформатированными определенным образом), попробуйте одну из других комбинаций.
Для простоты я использовал встроенный интерфейс с XLSM
в ACCDB
, Результат продемонстрирован ниже:
Обратите внимание, что это сработало, хотя я включил раз в заголовки (и работал бы без раз), так как они правильно отформатированы как текст, и First Column Contains Column Headers
выбран.