powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Даты (Хочу отсечь данные до 01/01/окаждого года)
7 сообщений из 7, страница 1 из 1
Даты (Хочу отсечь данные до 01/01/окаждого года)
    #32312884
C'est
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди, хелп
Хочу отсечь данные до 01/01/окаждого года и просчитать дни только в пределах одного года. Идея: если год даты_начала меньше года даты_окончания, то дата начала= 01/01/года даты_начала

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Dim dat1 As Date, dat2 As Date
    Dim rs1 As Recordset
    Set rs1 = CurrentDb.OpenRecordset( "tbl_Res" )

    With rs1
        While Not .EOF
                If Year(!StartingDate) < Year(!FinalDate) Then
                dat1 = DateSerial(!FinalDate,  1 ,  1 )
            Else
                dat1 = !StartingDate

Ругается на overflow
...
Рейтинг: 0 / 0
Даты (Хочу отсечь данные до 01/01/окаждого года)
    #32312887
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное так
Код: plaintext
1.
2.
3.
4.
If Year(!StartingDate) < Year(!FinalDate) Then 
 dat1 = DateSerial(Year(!FinalDate),  1 ,  1 ) 
Else 
 dat1 = !StartingDate 
end if
...
Рейтинг: 0 / 0
Даты (Хочу отсечь данные до 01/01/окаждого года)
    #32312889
C'est
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dat1 = DateSerial(Year(!FinalDate), 1, 1)

Оно хочет line separator or ) - издевается, однако!
...
Рейтинг: 0 / 0
Даты (Хочу отсечь данные до 01/01/окаждого года)
    #32312892
C'est
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему ругается, поняла:
serialdate(year as INTEGER), а у меня тип поля - дата.
Знать бы теперь, что дальше делать :) Как все-таки задать эту дату? то есть, чтобы это было 1 января того года, который в FinalDate?
...
Рейтинг: 0 / 0
Даты (Хочу отсечь данные до 01/01/окаждого года)
    #32312894
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> Почему ругается, поняла:
> serialdate(year as INTEGER), а у меня тип поля - дата.

Неправда Ваша. Year(!FinalDate) - это Integer. А вот если скажете, на каком месте он кричит про line separator, то тогда мы попробуем Вам помочь. :^)
...
Рейтинг: 0 / 0
Даты (Хочу отсечь данные до 01/01/окаждого года)
    #32312958
C'est
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Теперь все работает (наверное, был глюк невыспавшейся девушки (или невыспавшегося Access'a))
Но: если добавить
.MoveFirst
While Not .EOF
If Year(!StartingDate) < Year(!FinalDate) Then
dat4 = DateSerial(Year(!StartingDate), 12, 31)
Else
dat4=!FinalDate
End If
dat3 = !EnteredRussia

.Edit
!DateDif = dat4 - dat3
.Update
.MoveNext
Wend
.Close
Все считает, но если
StartingDate 01/01/2003 and FinalDate 01/02/2003 получается 31 день,

а если

StartingDate 01/12/2002 and FinalDate 01/02/2003, получается 30 дней
StartingDate 01/12/2003 and FinalDate 05/01/2004, получается 30 дней
( а надо 31!)
Как с этим бороться??? А то меня бухгалтерия убъет!
...
Рейтинг: 0 / 0
Даты (Хочу отсечь данные до 01/01/окаждого года)
    #32313206
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Логика говорит, что мы не знаем, что такое !EnteredRussia. Следовательно, мы не можем сказать, почему получается именно столько.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Даты (Хочу отсечь данные до 01/01/окаждого года)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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