powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Импорт даты из Excel в Access
32 сообщений из 32, показаны все 2 страниц
Импорт даты из Excel в Access
    #39205661
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
Импорт даты из Excel в Access
    #39205680
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
Импорт даты из Excel в Access
    #39205687
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
Импорт даты из Excel в Access
    #39205710
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема не воспроизводится.

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

На какой формат исправили?
...
Рейтинг: 0 / 0
Импорт даты из Excel в Access
    #39205731
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
excel_accessНа какой формат исправили?
ДД|VV|UUUU/
Потом ради любопытства попробовал ещё пару совершенно "отмороженных" форматов, с дублированием частей и кучей паразитных символов. Результат - формат поля ожидаемо не влияет.
...
Рейтинг: 0 / 0
Импорт даты из Excel в Access
    #39205738
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну в смысле ДД/ММ/ГГГГ
...
Рейтинг: 0 / 0
Импорт даты из Excel в Access
    #39205881
Открыл ваш XLSX, даты выглядят так:
14.08.1987 14 . 08 . 87
Отсюда два вывода:
1. У вас в системе разделитель элементов даты - "/", а не ".", как у большинства.
2. В 1-м столбце не дата, а текст, похожий на дату. При разделителе "." этот текст легко преобразуется в дату при импорте в поле типа "Дата" существующей таблицы, а при "/", ИМХО, не понимает. При импорте в новую таблицу это поле будет иметь тип "Текст" и будет заполнено.
Если я угадал, то перед импортом можно подправить файл, выполнив замену "." на "/" в выделенном диапазоне.
...
Рейтинг: 0 / 0
Импорт даты из Excel в Access
    #39205910
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Импорт даты из Excel в Access
    #39206072
excel_access
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, перед импортом если заменить "." на "/", то тогда нет проблем. Но это лишняя работа для оператора.
А замена на ДД/ММ/ГГГГ, тоже ничего дало. Ладно, пока не найду выход, оператору придется вручную делать замену.
...
Рейтинг: 0 / 0
Импорт даты из Excel в Access
    #39206095
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
excel_accessперед импортом если заменить "." на "/", то тогда нет проблем. Но это лишняя работа для оператора.Ну так импортируй данные как текстовые во временную таблицу, а оттуда запросом со всякоразными преобразованиями в боевую - какие проблемы?
...
Рейтинг: 0 / 0
Импорт даты из Excel в Access
    #39206124
excel_access, решение в лоб - изменить системные настройки. Кстати, почему разделитель "/"? В какой стране вы живете?

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

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

Мне нужна ваша помощь, я только начинаю изучать 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
Импорт даты из Excel в Access
    #39208437
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
Импорт даты из Excel в Access
    #39208456
Aslonov M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое! Вы можете оставит мне свои контактные данные.? Чтобы я мог лично связаться с вами. ! Я очень нуждаюсь в ваших знаниях.

It@furuz.tj
...
Рейтинг: 0 / 0
Импорт даты из Excel в Access
    #39208902
Aslonov M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет ребята. Помогите мне выбрать "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
Импорт даты из Excel в Access
    #39208903
Aslonov M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот скрин от тест-формы !
...
Рейтинг: 0 / 0
Импорт даты из Excel в Access
    #39208914
не парься
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aslonov M, возьми эту 6209665
...
Рейтинг: 0 / 0
Импорт даты из Excel в Access
    #39208930
Aslonov M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но для меня это кажется немного сложным. А вы не можете поправлять мой алгоритм?
...
Рейтинг: 0 / 0
Импорт даты из Excel в Access
    #39208932
не парься
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Импорт даты из Excel в Access
    #39208934
Aslonov M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не парься, Спасибо большое конечно За помощь) Мне нужна консультация Не могли бы вы мне помочь ?... Не хочу просто каждый раз обратится с тупыми вопросами на форуме !
...
Рейтинг: 0 / 0
Импорт даты из Excel в Access
    #39208954
не парься
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aslonov M, на самом деле там код не сложный. Примерно так же как у тебя, только более универсальный.
Как ты наверное понял, на вход в функцию подаются два параметра - строка с датой и шаблон, на основе которого разбирается дата.
В функции идёт анализ строки с датой (и временем). Соответственно выделяются из строки Дата ( ss ) и Время ( st ). Далее в строке заменяются разделители на пробел и строка Дата разбивается в массив ( v ). Каждый член массива анализируется согласно с шаблоном ( ymd ) на принадлежность составной части даты (день, месяц, год). После чего собирается дата (функция DateSerial ), иначе будет сгенерирована ошибка времени выполнения, которую можно обработать в вызывающей функции.
...
Рейтинг: 0 / 0
Импорт даты из Excel в Access
    #39209038
Aslonov M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не парься,
Как мне убрать точки между ними

из 30.05.1995
сделать 30051995
...
Рейтинг: 0 / 0
Импорт даты из Excel в Access
    #39209066
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использовать Replace или Format
Код: vbnet
1.
2.
3.
t=Replace(Дата, ".", "")
или
t=Format(Дата, "ddmmyyyy")
...
Рейтинг: 0 / 0
Импорт даты из Excel в Access
    #39209103
Aslonov M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mds_world, Не получается у меня (

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
Public Sub Main()
    Debug.Print Format$(CDateEx("Sep 16 2008 18:40:07", "mdy"), "dmyyyy hh:nn:ss")
    Debug.Print Format$(CDateEx("17 9 2008 18:40:07", "dmy"), "dmyyyy hh:nn:ss")
    Debug.Print Format$(CDateEx("18-2008-Sep 18:40:07", "dym"), "dmyyyy hh:nn:ss")
    Debug.Print Format$(CDateEx("2008/sep/8 18:40:07", "ymd"), "dmyyyy hh:nn:ss")
End Sub
    
Public Function CDateEx(ss As String, Optional ByVal ymd As String = "ymd") As Date
    Dim i As Integer, st As String, sd As String, v As Variant, s As String, k As Integer, _
        m As Integer, d As Integer, y As Integer, j As Integer
    
    ymd = LCase$(ymd)
    i = InStrRev(ss, " ")
    If i Then
        st = Mid$(ss, i)
        ss = Trim$(Left$(ss, i - 1))
    End If
    
    ss = Replace(ss, "-", " ")
    ss = Replace(ss, "/", " ")
    ss = Replace(ss, ".", " ")
    
    v = Split(ss, " ")
    On Error GoTo Err_
    For i = 0 To UBound(v)
        s = v(i)
        If Len(s) Then
            k = k + 1
            If k = 4 Then GoTo Err_
            Select Case Mid$(ymd, k, 1)
                Case "d"
                    If IsNumeric(s) Then
                        d = CInt(s)
                        If d < 1 Or d > 31 Then GoTo Err_
                    End If
                Case "m"
                    If IsNumeric(s) Then
                        m = CInt(s)
                        If m < 1 Or m > 12 Then GoTo Err_
                    Else
                        s = LCase(Left$(s, 3))
                        For j = 1 To 34 Step 3
                            If s = Mid$("janfebmaraprmayjunjulaugsepoctnovdec", j, 3) Then
                                m = (j + 2) / 3: Exit For
                            End If
                        Next j
                    End If
                    If m = 0 Then GoTo Err_
                Case "y"
                    If IsNumeric(s) Then y = CInt(s)
            End Select
        End If
    Next i
    CDateEx1 = CDate(Format$(DateSerial(y, m, d), "yyyy.mm.dd") & " " & st)
    CDateEx = Format(CDateEx1, "dd-mm-yyyy")
    Exit Function

Err_:
    Err.Raise 513, , "&#209;&#242;&#240;&#238;&#234;&#224; &#241; &#228;&#224;&#242;&#238;&#233; &#241;&#238;&#228;&#229;&#240;&#230;&#232;&#242; &#238;&#248;&#232;&#225;&#234;&#243;"
End Function




?CDateEx("28-feb-16 00:00:00","dmy")
28.02.2016
...
Рейтинг: 0 / 0
Импорт даты из Excel в Access
    #39209135
не парься
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aslonov M,
Код: vbnet
1.
2.
?Format$(CDateEx("28-feb-16 00:00:00","dmy"), "ddmmyyyy")
28022016
...
Рейтинг: 0 / 0
Импорт даты из Excel в Access
    #39209749
Aslonov M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не парься,
Спасибо Большое ) Сработало нормально. вот только не знаю как назначить эту формулу на столбце. Access.
...
Рейтинг: 0 / 0
Импорт даты из Excel в Access
    #39209912
Aslonov M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aslonov M,

Ребята помогите Плз !
...
Рейтинг: 0 / 0
Импорт даты из Excel в Access
    #39210079
не парься
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aslonov M, ...
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Импорт даты из Excel в Access
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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