Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 помогите написать функцию которая выдает по номеру квартала его начальную и конечную дату  [new]
paradisediamond
Member

Откуда: от верблюда
Сообщений: 100
помогите написать функцию которая выдает по номеру квартала его начальную и конечную дату, Допустим вводим мы год и вводим дату, можно также задать квартал, только что бы он вывел 2 даты, начало и конец квартала
23 сен 10, 11:13    [9487444]     Ответить | Цитировать Сообщить модератору
 Re: помогите написать функцию которая выдает по номеру квартала его начальную и конечную дату  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40416
function xxx(y as integer,kva as integer,nach as boolean)as date
select case kva
case 1:if nach then xxx=dateserial(y,1,1)else xxx=dateserial(y,3,31)
case 2:if nach then xxx=dateserial(y,4,1)else xxx=dateserial(y,6,30)
case 3:if nach then xxx=dateserial(y,7,1)else xxx=dateserial(y,9,30)
case 4:if nach then xxx=dateserial(y,10,1)else xxx=dateserial(y,12,31)
end select
end function
23 сен 10, 11:20    [9487509]     Ответить | Цитировать Сообщить модератору
 Re: помогите написать функцию которая выдает по номеру квартала его начальную и конечную дату  [new]
paradisediamond
Member

Откуда: от верблюда
Сообщений: 100
Владимир Саныч,
спасибо добрый самаритянин, буду проверять
23 сен 10, 11:23    [9487533]     Ответить | Цитировать Сообщить модератору
 Re: помогите написать функцию которая выдает по номеру квартала его начальную и конечную дату  [new]
paradisediamond
Member

Откуда: от верблюда
Сообщений: 100
Владимир Саныч,

Если честно, то с вами я лучше понимаю чем мне кто-то объясняет. были бы вы моим учителем.!
23 сен 10, 11:29    [9487614]     Ответить | Цитировать Сообщить модератору
 Re: помогите написать функцию которая выдает по номеру квартала его начальную и конечную дату  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40416
paradisediamond
Если честно, то с вами я лучше понимаю чем мне кто-то объясняет. были бы вы моим учителем.!

То есть Вы понимаете, когда Вам НЕ объясняют, а делают за Вас. Прискорбно. Постараюсь впредь так НЕ делать.
23 сен 10, 11:31    [9487645]     Ответить | Цитировать Сообщить модератору
 Re: помогите написать функцию которая выдает по номеру квартала его начальную и конечную дату  [new]
paradisediamond
Member

Откуда: от верблюда
Сообщений: 100
Владимир Саныч,
нет я в акцессе полный ноль, но после того как я вижу функцию, я начинаю читать что означает то или иное в хелпе, вот я не знала про DateSerial. Сейчас читаю и изучаю. И так постоянно. Разве это плохо?
23 сен 10, 11:34    [9487679]     Ответить | Цитировать Сообщить модератору
 Re: помогите написать функцию которая выдает по номеру квартала его начальную и конечную дату  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40416
Если Вы действительно так делаете, то хорошо.
23 сен 10, 11:35    [9487690]     Ответить | Цитировать Сообщить модератору
 Re: помогите написать функцию которая выдает по номеру квартала его начальную и конечную дату  [new]
paradisediamond
Member

Откуда: от верблюда
Сообщений: 100
Владимир Саныч,
потом свой вариант выглядит так:

' сделать даты конца и начала квартала
god = Me.ПолеСоСписком3
kv = CInt(Left(Me.ПолеСоСписком5, 1))

i = ((kv - 1) * 3) + 1

' Первый день текущего месяца
m_FirstDayKv = DateSerial(god, i, 1) ' 1 4 7 10

' Последний день текущего месяца
m_LastDayKv = DateSerial(god, i + 3, 0) ' 4 7 10 13
23 сен 10, 11:36    [9487703]     Ответить | Цитировать Сообщить модератору
 Re: помогите написать функцию которая выдает по номеру квартала его начальную и конечную дату  [new]
paradisediamond
Member

Откуда: от верблюда
Сообщений: 100
Владимир Саныч,
Ваш вариант проще, а в моем пришлось вымудриться. Нужно было узнать начальную и конечную дату квартала
23 сен 10, 11:39    [9487756]     Ответить | Цитировать Сообщить модератору
 Re: помогите написать функцию которая выдает по номеру квартала его начальную и конечную дату  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40416
paradisediamond
Владимир Саныч,
потом свой вариант выглядит так:

Не проверял, но мне нравится.
23 сен 10, 11:50    [9487927]     Ответить | Цитировать Сообщить модератору
 Re: помогите написать функцию которая выдает по номеру квартала его начальную и конечную дату  [new]
George-III
Member

Откуда:
Сообщений: 3689
я написал 2 ф-ии:
'Функция возвращающая первую дату указанного квартал за год
Public Function fncKvStartD(ByVal bteKv As Byte, Optional ByVal varYear As Variant) As String
On Error GoTo Err_fncKvStartD
    Dim intYear As Integer
    If IsMissing(varYear) Then
        intYear = Year(Date)
    Else
        intYear = CInt(varYear)
    End If
    Select Case bteKv
        Case 1
            fncKvStartD = "01/01/" & Format(intYear, "0000")
        Case 2
            fncKvStartD = "04/01/" & Format(intYear, "0000")
        Case 3
            fncKvStartD = "07/01/" & Format(intYear, "0000")
        Case 4
            fncKvStartD = "10/01/" & Format(intYear, "0000")
        Case Else
            '213 - Недопустимый номер квартала!
            fncKvStartD = "Недопустимый номер квартала!"
    End Select
Exit_fncKvStartD:
    Exit Function
Err_fncKvStartD:
    fncKvStartD = Err.Description
    Resume Exit_fncKvStartD
End Function

'Функция возвращающая последнюю дату указанного квартал за год
Public Function fncKvEndD(ByVal bteKv As Byte, Optional ByVal varYear As Variant) As String
On Error GoTo Err_fncKvEndD
    Dim intYear As Integer
    If IsMissing(varYear) Then
        intYear = Year(Date)
    Else
        intYear = CInt(varYear)
    End If
    Select Case bteKv
        Case 1
            fncKvEndD = "03/" & Day(DateSerial(CInt(Format(intYear, "0000")), 4, 0)) & "/" & Format(intYear, "0000")
        Case 2
            fncKvEndD = "06/" & Day(DateSerial(CInt(Format(intYear, "0000")), 7, 0)) & "/" & Format(intYear, "0000")
        Case 3
            fncKvEndD = "09/" & Day(DateSerial(CInt(Format(intYear, "0000")), 10, 0)) & "/" & Format(intYear, "0000")
        Case 4
            fncKvEndD = "12/" & Day(DateSerial(CInt(Format(intYear + 1, "0000")), 1, 0)) & "/" & Format(intYear, "0000")
        Case Else
            '213 - Недопустимый номер квартала!
            fncKvEndD = "213 - Недопустимый номер квартала!"
    End Select
Exit_fncKvEndD:
    Exit Function
Err_fncKvEndD:
    fncKvEndD = Err.Description
    Resume Exit_fncKvEndD
End Function
23 сен 10, 15:02    [9489750]     Ответить | Цитировать Сообщить модератору
 Re: помогите написать функцию которая выдает по номеру квартала его начальную и конечную дату  [new]
ё
Guest
...шо-та как-та всё сложно ))
quartal = 2 : ?"start = " & DateAdd("q", quartal - 1, #1/1/2010#) : ?"finish = " & DateAdd("q", quartal, #1/1/2010#) - 1
start = 01.04.2010
finish = 30.06.2010
23 сен 10, 15:07    [9489794]     Ответить | Цитировать Сообщить модератору
 Re: помогите написать функцию которая выдает по номеру квартала его начальную и конечную дату  [new]
paradisediamond
Member

Откуда: от верблюда
Сообщений: 100
ё
...шо-та как-та всё сложно ))
quartal = 2 : ?"start = " & DateAdd("q", quartal - 1, #1/1/2010#) : ?"finish = " & DateAdd("q", quartal, #1/1/2010#) - 1
start = 01.04.2010
finish = 30.06.2010
:
Что за фигня????
23 сен 10, 16:10    [9490379]     Ответить | Цитировать Сообщить модератору
 Re: помогите написать функцию которая выдает по номеру квартала его начальную и конечную дату  [new]
ё
Guest
paradisediamond
ё
...шо-та как-та всё сложно ))
quartal = 2 : ?"start = " & DateAdd("q", quartal - 1, #1/1/2010#) : ?"finish = " & DateAdd("q", quartal, #1/1/2010#) - 1
start = 01.04.2010
finish = 30.06.2010
:
Что за фигня????


function xxx(y as integer,kva as integer,nach as boolean)as date
if  nach then
  xxx = DateAdd("q", kva - 1, dateserial(y,1,1)) 
else
  xxx = DateAdd("q", kva, dateserial(y,1,1)) - 1
end if
end function

...понятно, почему Саныч вам отвечает сразу кодом...
по другому - вам недоходит ниразу....
23 сен 10, 16:19    [9490450]     Ответить | Цитировать Сообщить модератору
 Re: помогите написать функцию которая выдает по номеру квартала его начальную и конечную дату  [new]
paradisediamond
Member

Откуда: от верблюда
Сообщений: 100
ё
paradisediamond
ё
...шо-та как-та всё сложно ))
quartal = 2 : ?"start = " & DateAdd("q", quartal - 1, #1/1/2010#) : ?"finish = " & DateAdd("q", quartal, #1/1/2010#) - 1
start = 01.04.2010
finish = 30.06.2010
:
Что за фигня????


function xxx(y as integer,kva as integer,nach as boolean)as date
if  nach then
  xxx = DateAdd("q", kva - 1, dateserial(y,1,1)) 
else
  xxx = DateAdd("q", kva, dateserial(y,1,1)) - 1
end if
end function

...понятно, почему Саныч вам отвечает сразу кодом...
по другому - вам недоходит ниразу....



А про год речи и нет, год может быть и от рождества Христова, а у вас полугодие
23 сен 10, 16:24    [9490503]     Ответить | Цитировать Сообщить модератору
 Re: помогите написать функцию которая выдает по номеру квартала его начальную и конечную дату  [new]
GUESТ
Member

Откуда:
Сообщений: 2673
даты начала и конца кварталов всегда одинаковые

нафига тут какая-то особая функция этих дат?
23 сен 10, 16:29    [9490554]     Ответить | Цитировать Сообщить модератору
 Re: помогите написать функцию которая выдает по номеру квартала его начальную и конечную дату  [new]
ё
Guest
paradisediamond
...
А про год речи и нет, год может быть и от рождества Христова, а у вас полугодие

ааааа!!!, мляяяя!!!

о чём вы, автор ???
23 сен 10, 16:30    [9490561]     Ответить | Цитировать Сообщить модератору
 Re: помогите написать функцию которая выдает по номеру квартала его начальную и конечную дату  [new]
ё
Guest
ё
...
о чём вы, автор ???

...для детей природы
Function xxx(y As Integer, kva As Integer, nach As Boolean) As Date
If nach Then
  xxx = DateAdd("q", kva - 1, DateSerial(y, 1, 1))
Else
  xxx = DateAdd("q", kva, DateSerial(y, 1, 1)) - 1
End If
End Function

Sub АвторЖжжет()
  Dim i As Integer
  For i = 1 To 4
    Debug.Print "Квартал: " & i & "   " & _
                "Начало: " & xxx(2010, i, True) & "   " & _
                "Окончание: " & xxx(2010, i, False)

  Next i
End Sub
АвторЖжжет
Квартал: 1   Начало: 01.01.2010   Окончание: 31.03.2010
Квартал: 2   Начало: 01.04.2010   Окончание: 30.06.2010
Квартал: 3   Начало: 01.07.2010   Окончание: 30.09.2010
Квартал: 4   Начало: 01.10.2010   Окончание: 31.12.2010
23 сен 10, 16:39    [9490636]     Ответить | Цитировать Сообщить модератору
 Re: помогите написать функцию которая выдает по номеру квартала его начальную и конечную дату  [new]
s.w.a.n.
Member

Откуда: Москва
Сообщений: 137
ё
paradisediamond
...
А про год речи и нет, год может быть и от рождества Христова, а у вас полугодие

ааааа!!!, мляяяя!!!

о чём вы, автор ???


)))+5
23 сен 10, 18:25    [9491637]     Ответить | Цитировать Сообщить модератору
 Re: помогите написать функцию которая выдает по номеру квартала его начальную и конечную дату  [new]
proposed amendment
Member

Откуда:
Сообщений: 10218
select case define_dates (q as integer)

case 1
Начало= 01.01.2010 Окончание= 31.03.2010
case 2
Начало= 01.04.2010 Окончание= 30.06.2010
case 3
Начало= 01.07.2010 Окончание= 30.09.2010
case 4
Начало= 01.10.2010 Окончание= 31.12.2010
case else

end select

или это не спортивно?
23 сен 10, 18:50    [9491789]     Ответить | Цитировать Сообщить модератору
 Re: помогите написать функцию которая выдает по номеру квартала его начальную и конечную д  [new]
ё
Guest
proposed amendment
...
или это не спортивно?

да, нет - нормально,
Саныч вообщем с этого и начал

мой ответ был в основном на пример от George-III
с вот этими всякими
...Day(DateSerial(CInt(Format(intYear + 1, "0000")), 1, 0)) ...
...ну, а тут ещё ТС подтянулся
+

ну и про спорт
Function xxx(y As Integer, kva As Integer, nach As Boolean) As Date
  xxx = DateAdd("q", kva + nach, DateSerial(y, 1, 1)) + (not nach)
End Function
23 сен 10, 20:38    [9492234]     Ответить | Цитировать Сообщить модератору
 Re: помогите написать функцию которая выдает по номеру квартала его начальную и конечную дату  [new]
garri2000
Member [заблокирован]

Откуда: Моск.обл,Ступино
Сообщений: 5069
ё,
+питсот,
ща люди запугают ТС-а окончательно
23 сен 10, 20:54    [9492271]     Ответить | Цитировать Сообщить модератору
 Re: помогите написать функцию которая выдает по номеру квартала его начальную и конечную д  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40416
ё
Саныч вообщем с этого и начал

Собственно, я с этого начал только для того, чтобы показать ТС, что задачка-то элементарная и спрашивать такие вещи в форуме нехорошо. Вот если бы был задан вопрос, как это записать одной строчкой, тогда да.
23 сен 10, 20:56    [9492276]     Ответить | Цитировать Сообщить модератору
 Re: помогите написать функцию которая выдает по номеру квартала его начальную и конечную дату  [new]
Спортсмен
Guest
И мои копейки
Function xxx(y As Integer, kva As Integer, nach As Boolean) As Date
  xxx = DateSerial(y, 3*(kva+nach)+1, -nach)
End Function
23 сен 10, 21:11    [9492314]     Ответить | Цитировать Сообщить модератору
 Re: помогите написать функцию которая выдает по номеру квартала его начальную и конечную дату  [new]
nord-woolf
Member

Откуда: And God I know I'm one
Сообщений: 4896
Усложним до:
GetBeginEndQuarter = Array(DateSerial(Y, Array(, 1, 4, 7, 10)(Q), 1), DateSerial(Y, Q * 3, Array(, 31, 30, 30, 31)(Q)))
?GetBeginEndQuarter(2010,4)(0),GetBeginEndQuarter(2010,4)(1)
:)
23 сен 10, 21:30    [9492373]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft Access Ответить