Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Импорт даты из Excel в Access / 25 сообщений из 32, страница 1 из 2
01.04.2016, 08:21
    #39205661
excel_access
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт даты из Excel в Access
Есть данные даты в Excel, которые нужно импортировать в Access.
В первом столбце формат даты в виде точки, а во втором разделяется косой чертой. В Excel указан формат даты. Мне интересно понять, почему первый столбец не импортируется и появлябтся только пустые значения, а второй нормально.
Мне нужно получить гарантированный ввод даты в Access, независимо от того, точка указана в Excel или черта.
Как можно этого добиться?

В Excel
date_1 date_214.08.1987 14/08/198731.01.1970 31/01/197009.12.1974 09/12/197421.06.1965 21/06/196510.05.1976 10/05/197611.03.1949 11/03/194926.01.1968 26/01/196819.12.1972 19/12/197208.02.1963 08/02/1963


В Access
date_1 date_2 14/08/1987 31/01/1970 09/12/1974 21/06/1965 10/05/1976 11/03/1949 26/01/1968 19/12/1972 08/02/1963
...
Рейтинг: 0 / 0
01.04.2016, 08:59
    #39205680
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт даты из Excel в Access
Импортировать селектом типа
Код: sql
1.
2.
3.
4.
INSERT INTO Table1 (Field1, Field2, Field3) 
SELECT *
  FROM [Sheet1$D3:E24] 
    IN "C:\Temp\Test.xls" [Excel 12.0;HDR=YES;IMEX=1];


в полях указывать явно используемый формат даты типа Format([Field1],"@@.@@.@@@@"). Пишу без проверки, мог ошибиться, но идея должна быть понятна.
...
Рейтинг: 0 / 0
01.04.2016, 09:08
    #39205687
excel_access
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт даты из Excel в Access
MrShinИмпортировать селектом типа
Код: sql
1.
2.
3.
4.
INSERT INTO Table1 (Field1, Field2, Field3) 
SELECT *
  FROM [Sheet1$D3:E24] 
    IN "C:\Temp\Test.xls" [Excel 12.0;HDR=YES;IMEX=1];


в полях указывать явно используемый формат даты типа Format([Field1],"@@.@@.@@@@"). Пишу без проверки, мог ошибиться, но идея должна быть понятна.

Идея понятна, но так не думаю, чтобы устроило. Диапазон может быть разным и я не смогу контролировать его, так как импортирование данных будет производить оператор и данные будут иметь разное количество строк.
...
Рейтинг: 0 / 0
01.04.2016, 09:34
    #39205710
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт даты из Excel в Access
Проблема не воспроизводится.

Office 2007 Prof. Таблицу скопировал в файл Excel. Сохранил (форматы XLS и XLSX). Выполнил импорт внешних данных. Для обоих исходных форматов правильно импортированы оба поля - и значения, и формат.
...
Рейтинг: 0 / 0
01.04.2016, 09:36
    #39205712
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт даты из Excel в Access
Что же до приложенных файлов - там в файле XLSX оба столбца имеют одинаковый формат ДД.ММ.ГГГГ.
...
Рейтинг: 0 / 0
01.04.2016, 09:41
    #39205714
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт даты из Excel в Access
Исправил формат ячеек в XLSX. Выполнил импорт через VBA-код на форме. Импортированы оба поля.
...
Рейтинг: 0 / 0
01.04.2016, 09:46
    #39205724
excel_access
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт даты из Excel в Access
AkinaИсправил формат ячеек в XLSX. Выполнил импорт через VBA-код на форме. Импортированы оба поля.

На какой формат исправили?
...
Рейтинг: 0 / 0
01.04.2016, 09:52
    #39205731
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт даты из Excel в Access
excel_accessНа какой формат исправили?
ДД|VV|UUUU/
Потом ради любопытства попробовал ещё пару совершенно "отмороженных" форматов, с дублированием частей и кучей паразитных символов. Результат - формат поля ожидаемо не влияет.
...
Рейтинг: 0 / 0
01.04.2016, 09:58
    #39205738
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт даты из Excel в Access
Ну в смысле ДД/ММ/ГГГГ
...
Рейтинг: 0 / 0
01.04.2016, 12:00
    #39205881
Импорт даты из Excel в Access
Открыл ваш XLSX, даты выглядят так:
14.08.1987 14 . 08 . 87
Отсюда два вывода:
1. У вас в системе разделитель элементов даты - "/", а не ".", как у большинства.
2. В 1-м столбце не дата, а текст, похожий на дату. При разделителе "." этот текст легко преобразуется в дату при импорте в поле типа "Дата" существующей таблицы, а при "/", ИМХО, не понимает. При импорте в новую таблицу это поле будет иметь тип "Текст" и будет заполнено.
Если я угадал, то перед импортом можно подправить файл, выполнив замену "." на "/" в выделенном диапазоне.
...
Рейтинг: 0 / 0
01.04.2016, 12:24
    #39205910
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт даты из Excel в Access
Код: vbnet
1.
2.
3.
4.
?vartype(Application.ActiveWorkbook.Worksheets(1).Cells(2,1).Value)
 8 
?vartype(Application.ActiveWorkbook.Worksheets(1).Cells(2,2).Value)
 7 
...
Рейтинг: 0 / 0
01.04.2016, 14:22
    #39206072
excel_access
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт даты из Excel в Access
Да, перед импортом если заменить "." на "/", то тогда нет проблем. Но это лишняя работа для оператора.
А замена на ДД/ММ/ГГГГ, тоже ничего дало. Ладно, пока не найду выход, оператору придется вручную делать замену.
...
Рейтинг: 0 / 0
01.04.2016, 14:49
    #39206095
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт даты из Excel в Access
excel_accessперед импортом если заменить "." на "/", то тогда нет проблем. Но это лишняя работа для оператора.Ну так импортируй данные как текстовые во временную таблицу, а оттуда запросом со всякоразными преобразованиями в боевую - какие проблемы?
...
Рейтинг: 0 / 0
01.04.2016, 15:01
    #39206124
Импорт даты из Excel в Access
excel_access, решение в лоб - изменить системные настройки. Кстати, почему разделитель "/"? В какой стране вы живете?

Другой путь - преобразование текста в дату в запросе на добавление в вашу таблицу, берущем данные непосредственно с листа или из промежуточной таблицы, созданной в результате импорта. Например:
Код: sql
1.
DateSerial(Mid([date_1], 7), Mid([date_1], 4, 2), Left([date_1], 2)

Это при условии, что нет пустых ячеек и все даты имеют по 2 цифры в днях и месяцах. Иначе нужна более сложное выражение, а то и собственная функция.
...
Рейтинг: 0 / 0
01.04.2016, 16:22
    #39206212
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт даты из Excel в Access
Может я чё не понял:
при импорте по Вашему коду
поле data_1 - текст
а с этой строкой - дата
Код: vbnet
1.
 CurrentDb.Execute "ALTER TABLE date_import ALTER COLUMN date_1 date"
...
Рейтинг: 0 / 0
05.04.2016, 13:15
    #39208320
Aslonov M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт даты из Excel в Access
Привет ребята!

Мне нужна ваша помощь, я только начинаю изучать Access и столкнулся с одной проблемой !

У меня обычный формат даты "02-Nov-52" есть ячейки содержащий " - - " и " " вот такие данные. я как бы нашел алгоритм. Но почему то оно не работает когда поле пустая он выдает ощибку 94. Может вы знайте в чем проблема. Мне нужно чтобы он ячейку с минусом и пустую превратил в 000000000.

Public Function date4(num1)
If num1 = " - -" Then
date4 = "00000000"
Else
x1 = Mid$(num1, 3, 5)
x2 = Left$(num1, 2)
x3 = Right(num1, 2)
Select Case x1
Case "-jan-": x1 = "01"
Case "-feb-": x1 = "02"
Case "-mar-": x1 = "03"
Case "-apr-": x1 = "04"
Case "-may-": x1 = "05"
Case "-jun-": x1 = "06"
Case "-jul-": x1 = "07"
Case "-aug-": x1 = "08"
Case "-sep-": x1 = "09"
Case "-oct-": x1 = "10"
Case "-nov-": x1 = "11"
Case "-dec-": x1 = "12"

End Select

If x3 > 15 Then
x3 = "19" + x3
Else
x3 = "20" + x3
End If
date4 = x2 + x1 + x3
Debug.Print date4
End If

Спасибо За Внимания !
...
Рейтинг: 0 / 0
05.04.2016, 14:56
    #39208437
Импорт даты из Excel в Access
Aslonov MУ меня обычный формат даты "02-Nov-52" Ну это обычный не для всех...
О чем, вообще, речь? Это дата в текстовом поле таблицы Access? Или это Excel? Или в текстовом файле?
Если первое, то, видимо, если поле пустое, то это не "", а Null. И проверять его надо функцией IsNull(). Или преобразовывать в строку функцией NZ().
Например, строку
If num1 = " - -" Then
можно заменить на:
If NZ(num1, " - -") = " - -" Then

PS.
Код: vbnet
1.
2.
3.
4.
5.
    If x3 > 15 Then
        x3 = "19" + x3
    Else
        x3 = "20" + x3
    End If

А почему > 15, если принято > 29?
И еще, обычно для конкатенации строк используется "&". "+" тоже можно, но с ограничениями и в специфических ситуациях.
...
Рейтинг: 0 / 0
05.04.2016, 15:12
    #39208456
Aslonov M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт даты из Excel в Access
Спасибо большое! Вы можете оставит мне свои контактные данные.? Чтобы я мог лично связаться с вами. ! Я очень нуждаюсь в ваших знаниях.

It@furuz.tj
...
Рейтинг: 0 / 0
06.04.2016, 07:24
    #39208902
Aslonov M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт даты из Excel в Access
Привет ребята. Помогите мне выбрать "30-Apr-95 00:00:00" из этого формата только год рождения. Все остальное у меня показывает. Почему то у меня вместо 95-того показывает 20000 знаю проблема находится на формуле x3 но незнаю как его устранить (


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Public Function date5(num1)
   num2 = Left(num1, 9)
    If Nz(num2, "  -   -  : :") = "  -   -  : :" Then
          date5 = "00000000"
   Else
     x1 = Mid$(num2, 3, 5)
     x2 = Left$(num2, 2)
     x3 = Right$(num2, 10, 13)
...
Рейтинг: 0 / 0
06.04.2016, 07:25
    #39208903
Aslonov M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт даты из Excel в Access
Вот скрин от тест-формы !
...
Рейтинг: 0 / 0
06.04.2016, 07:56
    #39208914
не парься
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт даты из Excel в Access
Aslonov M, возьми эту 6209665
...
Рейтинг: 0 / 0
06.04.2016, 08:39
    #39208930
Aslonov M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт даты из Excel в Access
Но для меня это кажется немного сложным. А вы не можете поправлять мой алгоритм?
...
Рейтинг: 0 / 0
06.04.2016, 08:44
    #39208932
не парься
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт даты из Excel в Access
Aslonov M, возьми как есть, потом может и разберёшься.
Код: vbnet
1.
2.
3.
4.
?CDateEx("30-Apr-95 00:00:00","dmy")
30.04.1995 
?Year(CDateEx("30-Apr-95 00:00:00","dmy"))
 1995 
...
Рейтинг: 0 / 0
06.04.2016, 08:51
    #39208934
Aslonov M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт даты из Excel в Access
не парься, Спасибо большое конечно За помощь) Мне нужна консультация Не могли бы вы мне помочь ?... Не хочу просто каждый раз обратится с тупыми вопросами на форуме !
...
Рейтинг: 0 / 0
06.04.2016, 09:23
    #39208954
не парься
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импорт даты из Excel в Access
Aslonov M, на самом деле там код не сложный. Примерно так же как у тебя, только более универсальный.
Как ты наверное понял, на вход в функцию подаются два параметра - строка с датой и шаблон, на основе которого разбирается дата.
В функции идёт анализ строки с датой (и временем). Соответственно выделяются из строки Дата ( ss ) и Время ( st ). Далее в строке заменяются разделители на пробел и строка Дата разбивается в массив ( v ). Каждый член массива анализируется согласно с шаблоном ( ymd ) на принадлежность составной части даты (день, месяц, год). После чего собирается дата (функция DateSerial ), иначе будет сгенерирована ошибка времени выполнения, которую можно обработать в вызывающей функции.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Импорт даты из Excel в Access / 25 сообщений из 32, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]