Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / DAO 3.6 - гадина / 25 сообщений из 28, страница 1 из 2
06.08.2003, 09:52
    #32228238
Albert Gor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO 3.6 - гадина
Использовал в одном из полей запроса на выборку пользовательскую функцию, вычисляющую возраст из даты рождения. Все было хорошо, пока не подключил DAO 3.6. Во всех записях в поле одно и тоже - Error#. Удалил ссылку на DAO 3.6 и подцепил DAO 2.5/3.51. Все работает нормально.
...
Рейтинг: 0 / 0
06.08.2003, 10:02
    #32228254
sasha_1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO 3.6 - гадина
экстрасексов ждешь?
может код покажешь?
...
Рейтинг: 0 / 0
06.08.2003, 10:03
    #32228258
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO 3.6 - гадина
Заодно и версию акеса назвать не помешало, ну про код уже было сказано
...
Рейтинг: 0 / 0
06.08.2003, 10:42
    #32228331
Albert Gor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO 3.6 - гадина
Access 2000 SR1, MDAC 2.7

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Public Function CalculateAge(varDob As Variant) As Variant
' Return the number of full years'
On Error GoTo Er
  Dim intAge As Integer
  
  If IsDate(varDob) Then
    intAge = Year(Date) - Year(varDob)
    Select Case Month(Date) - Month(varDob)
      Case  0 
        If Day(Date) < Day(varDob) Then
          intAge = intAge -  1 
        End If
      Case Is <  0 
        intAge = intAge -  1 
    End Select
    CalculateAge = intAge
  Else
    CalculateAge = Null
  End If
Ex:
Exit Function
Er:
  'ErrorLog "modDate", "CalculateAge", Err.number, Err.Description'
GoTo Ex
End Function
...
Рейтинг: 0 / 0
06.08.2003, 10:53
    #32228344
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO 3.6 - гадина
2Albert Gor

Нормальная функция - ты бы проект откомпилировал - посмотрел на ошибки.
Поставь точку остановки в свою функцию - посмотри что там происходит.

>Во всех записях в поле одно и тоже - Error#.

Записи где? В запросе? Тогда и его текст гони
...
Рейтинг: 0 / 0
06.08.2003, 10:58
    #32228352
sasha_1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO 3.6 - гадина
на самом деле может дело в синтаксисе.
мелкомягкие могли в 3,6 поменять синтаксис какой-то из используемых
функций и привет.
Согласен с Senin Viktor поставь брекпоинт и посмотри на какой строке
затыкается.
...
Рейтинг: 0 / 0
06.08.2003, 10:58
    #32228353
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO 3.6 - гадина
А почему не DateDiff???
...
Рейтинг: 0 / 0
06.08.2003, 11:04
    #32228362
VIG
VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO 3.6 - гадина
А так не проще ?
age=Year(date - birthdate) - 1900
...
Рейтинг: 0 / 0
06.08.2003, 11:05
    #32228365
sasha_1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO 3.6 - гадина
Саныч как всегда в самую точку
Голова
...
Рейтинг: 0 / 0
06.08.2003, 11:09
    #32228373
DAO 3.6 - гадина
Можно проще:Date()-[ДатаРождения].
...
Рейтинг: 0 / 0
06.08.2003, 11:11
    #32228376
sasha_1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO 3.6 - гадина
2 Вадим (Львов):
не, ну это уж слишком.
сам-то пробовал.

2 VIG
и вам наше с кисточкой
...
Рейтинг: 0 / 0
06.08.2003, 11:17
    #32228387
VIG
VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO 3.6 - гадина
2 Вадим
1.Ему же нужен возраст
2. Посмотри что выводит Debug.Print CDate(Date - #любая_дата#)
...
Рейтинг: 0 / 0
06.08.2003, 11:17
    #32228388
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO 3.6 - гадина
Строго говоря, я не прав. DateDiff, если надо в полных годах, округляет неправильно. Но все равно можно короче:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Public Function CalculateAge(varDob As Variant) As Variant
' Return the number of full years'
On Error GoTo Er
  Dim intAge As Integer
  
  If IsDate(varDob) Then
    intAge = Year(Date) - Year(varDob)
    If Date < DateSerial(Year(Date), Month(varDob), Day(varDob)) Then intAge = intAge -  1 
    CalculateAge = intAge
  Else
    CalculateAge = Null
  End If
Ex:
Exit Function
Er:
  'ErrorLog "modDate", "CalculateAge", Err.number, Err.Description'
GoTo Ex
End Function
...
Рейтинг: 0 / 0
06.08.2003, 11:32
    #32228415
Albert Gor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO 3.6 - гадина
Код: plaintext
SELECT CalculateAge([Ind_DoB]) AS Age FROM tblInd


Проект компилится. Функция сама по себе работает корректно. ERROR# вылезает только в полях запроса. И только при ссылке на DAO 3.6 :(

2 Владимир Саныч

Спасибо. А ей (DateSerial) можно доверять? :)
...
Рейтинг: 0 / 0
06.08.2003, 11:40
    #32228444
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO 3.6 - гадина
> Спасибо.

Это частное спасибо, потому что основной вопрос еще не решен.

> А ей (DateSerial) можно доверять?

Абсолютно. Более того, если ей дать несуществующую дату, например 29 февраля невисокосного года, то она это съест и переведет в существующую.
...
Рейтинг: 0 / 0
06.08.2003, 11:42
    #32228447
DAO 3.6 - гадина
To VIG:возраст из даты рождения (это цитата)
To sasha_1:
Использую в форме "сотрудники". В одном поле ввожу дату рождения, в другом - =Date()-[ДатаРождения].
Я конечно дико извиняюсь, но в поле аккуратно выводится возраст.
...
Рейтинг: 0 / 0
06.08.2003, 11:44
    #32228451
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO 3.6 - гадина
2 Вадим:

Но это получается в днях. А нужно в годах.
...
Рейтинг: 0 / 0
06.08.2003, 11:52
    #32228473
Albert Gor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO 3.6 - гадина
Поделить на 365.25 - и всех делов :)
...
Рейтинг: 0 / 0
06.08.2003, 11:54
    #32228478
DAO 3.6 - гадина
То Владимир Саныч:
Именно в годах. На свойство "формат поля" - уу.
...
Рейтинг: 0 / 0
06.08.2003, 11:58
    #32228492
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO 3.6 - гадина
> Поделить на 365.25 - и всех делов :)

Ну, плюс-минус...

> На свойство "формат поля" - уу.

Ух ты!!! И правда. 8^)
...
Рейтинг: 0 / 0
06.08.2003, 12:02
    #32228506
VIG
VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO 3.6 - гадина
> На свойство "формат поля" - уу
И чем это проще чем
Year(date - birthdate) - 1900 ?
Кроме того это универсальное выражение которую можно использовать в запросах без предварительного/последующего форматирования.
...
Рейтинг: 0 / 0
06.08.2003, 12:12
    #32228524
Albert Gor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO 3.6 - гадина
Код: plaintext
1.
2.
3.
4.
5.
?# 01 / 01 / 2003 # - # 12 / 31 / 2002 #
  1  
? Year(# 01 / 01 / 2003 # - # 12 / 31 / 2002 #) 
  1899  
? Year(# 01 / 01 / 2003 # - # 12 / 31 / 2002 #) -  1900  
- 1  
...
Рейтинг: 0 / 0
06.08.2003, 12:24
    #32228549
Albert Gor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO 3.6 - гадина
Вопрос снимается. На другом компе все работает и с DAO 3.6. Попробую переустановить офис.
...
Рейтинг: 0 / 0
06.08.2003, 12:37
    #32228573
Хам трамвайный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO 3.6 - гадина
если тебе
нужжен возраст
посчитать
то табе
DateDiff("yyyy",dtmBD, date())+(date()<dateserial(year(date()),month(dtmBD),day(dtmBD)))
...
Рейтинг: 0 / 0
06.08.2003, 12:54
    #32228611
Albert Gor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO 3.6 - гадина
Работает! Спасибо, Хам Трамвайный.
Код: plaintext
DateDiff( "yyyy" ,dtmBD, date())+(date()<dateserial(year(dtmBD),month(dtmBD),day(dtmBD)))
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / DAO 3.6 - гадина / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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