Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2017, 13:22   #1
Maxim360
Пользователь
 
Регистрация: 12.07.2013
Сообщений: 28
По умолчанию Разбить период дат на массив

Добрый день!
Прошу помощи.
Есть массив


Нужно сделать такой результат:


Массив в итоге содержит даты от "дата начала" до "дата конца" по каждой позиции

Как это можно сделать в Access? База данных в аттаче
Буду признателен за помощь!
Вложения
Тип файла: rar Разбить_даты.rar (28.0 Кб, 8 просмотров)
Maxim360 вне форума Ответить с цитированием
Старый 18.05.2017, 14:07   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

почему 2017 год для позиция 111 признак 1 в результате?

Код:
Sub Macro()
    Dim rs As Recordset
    Dim s As String
    Dim r As Integer
    Dim f As Boolean
    Dim f1, f2, f3, f4
    f = False ' Result doesnt exist yet
    s = "SELECT * FROM [Исходный]"
    DoCmd.SetWarnings False
    DoCmd.DeleteObject acTable = acDefault, "tblResult"
    DoCmd.SetWarnings True
    
    Set rs = CurrentDb.OpenRecordset(s)
    If Not rs Is Nothing Then
        rs.MoveLast
        rs.MoveFirst
        Do While Not rs.EOF
        f1 = rs.Fields(0): f2 = rs.Fields(1): f3 = rs.Fields(2): f4 = rs.Fields(3)
        If f1 <> "" And f1 <> "" Then
            If f1 < f2 Then
              Do While f1 <= f2
                If Not f Then
                    s = "SELECT " & Format(f1, "\#mm-dd-yyyy\#") & " as [" & rs.Fields(0).Name & "] ," & f3 & _
                        " as [" & rs.Fields(2).Name & "] ," & f4 & " as [" & rs.Fields(3).Name & "] INTO tblResult"
                    CurrentDb.Execute (s)
                    f = True
                Else
                    s = "INSERT INTO tblResult ([" & rs.Fields(0).Name & "],[" & rs.Fields(2).Name & "],[" & _
                    rs.Fields(3).Name & "]) " & _
                        "VALUES (" & Format(f1, "\#mm-dd-yyyy\#") & "," & f3 & "," & f4 & ")"
                    CurrentDb.Execute (s)
                End If
                f1 = f1 + 1
              Loop
            End If
        End If
        rs.MoveNext
        Loop
    End If
    rs.Close
    Set rs = Nothing
    If f Then
        DoCmd.OpenTable "tblResult"
    End If
End Sub
Вложения
Тип файла: rar Разбить_даты.rar (22.9 Кб, 11 просмотров)
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.

Последний раз редактировалось Aleksandr H.; 18.05.2017 в 15:25.
Aleksandr H. вне форума Ответить с цитированием
Старый 18.05.2017, 14:34   #3
Maxim360
Пользователь
 
Регистрация: 12.07.2013
Сообщений: 28
По умолчанию

Ой, это я затупил. Там везде должен быть 2017 год

Спасибо!
Maxim360 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
показать комнаты которые не заняты в заданный период, и чтобы не происходило наложения дат Мистер SQL, базы данных 14 27.04.2017 17:00
Разбить массив Veryn4ik1993 Паскаль, Turbo Pascal, PascalABC.NET 7 10.01.2014 10:16
текст разбить на массив Aleksandraaa C++ Builder 0 30.05.2013 16:41
Как разбить выбранный период по месяцам? Vit@L Общие вопросы Delphi 5 26.12.2012 15:27
Разбить на массив spein PHP 5 09.05.2009 20:11