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

Откуда:
Сообщений: 146
Здравие желаю!!:)
Помогите мне в работе с датами.
Например имею дату 10.10.2002
Мне надо узнать какая дата получится минус 3 года, минус 10 месяцев, минус 21 день.
20 окт 05, 15:52    [1988906]     Ответить | Цитировать Сообщить модератору
 Re: Дата  [new]
adv
Member

Откуда:
Сообщений: 3333
f1 dateadd
20 окт 05, 15:55    [1988934]     Ответить | Цитировать Сообщить модератору
 Re: Дата  [new]
NNNata:)
Member

Откуда:
Сообщений: 146
Желательно ответ дайте в VBA, т.к. количество лет,месяцев,дней я должна получить, обработав текстовое поле. Это текстовое поля у меня выглядит так:
..-..-..
Первые 2 цифры кол-во лет, следующие 2 цифры кол-во месяцев, и последние 2 цифры кол-во дней. Если можете помогите обработать этот формат, чтобы получить все необходимые данные.
20 окт 05, 16:02    [1988985]     Ответить | Цитировать Сообщить модератору
 Re: Дата  [new]
NNNata:)
Member

Откуда:
Сообщений: 146
adv
f1 dateadd

Я такую функцию не нахожу в help-e
20 окт 05, 16:04    [1989001]     Ответить | Цитировать Сообщить модератору
 Re: Дата  [new]
ЛП
Guest
DateAdd Function


Returns a Variant (Date) containing a date to which a specified time interval has been added.

Syntax

DateAdd(interval, number, date)

The DateAdd function syntax has these named arguments:

Part Description
interval Required. String expression that is the interval of time you want to add.
number Required. Numeric expression that is the number of intervals you want to add. It can be positive (to get dates in the future) or negative (to get dates in the past).
date Required. Variant (Date) or literal representing date to which the interval is added.



Settings

The interval argument has these settings:

Setting Description
yyyy Year
q Quarter
m Month
y Day of year
d Day
w Weekday
ww Week
h Hour
n Minute
s Second



Remarks

You can use the DateAdd function to add or subtract a specified time interval from a date. For example, you can use DateAdd to calculate a date 30 days from today or a time 45 minutes from now.

To add days to date, you can use Day of Year ("y"), Day ("d"), or Weekday ("w").

The DateAdd function won't return an invalid date. The following example adds one month to January 31:

DateAdd("m", 1, "31-Jan-95")

In this case, DateAdd returns 28-Feb-95, not 31-Feb-95. If date is 31-Jan-96, it returns 29-Feb-96 because 1996 is a leap year.

If the calculated date would precede the year 100 (that is, you subtract more years than are in date), an error occurs.

If number isn't a Long value, it is rounded to the nearest whole number before being evaluated.

Note The format of the return value for DateAdd is determined by Control Panel settings, not by the format that is passed in date argument.

Note For date, if the Calendar property setting is Gregorian, the supplied date must be Gregorian. If the calendar is Hijri, the supplied date must be Hijri. If month values are names, the name must be consistent with the current Calendar property setting. To minimize the possibility of month names conflicting with the current Calendar property setting, enter numeric month values (Short Date format).
20 окт 05, 16:10    [1989048]     Ответить | Цитировать Сообщить модератору
 Re: Дата  [new]
funddd
Member

Откуда: Алма-Ата, Казахстан
Сообщений: 1369
NNNata:)
Желательно ответ дайте в VBA, т.к. количество лет,месяцев,дней я должна получить, обработав текстовое поле. Это текстовое поля у меня выглядит так:
..-..-..
Первые 2 цифры кол-во лет, следующие 2 цифры кол-во месяцев, и последние 2 цифры кол-во дней. Если можете помогите обработать этот формат, чтобы получить все необходимые данные.

а тут F1 DateSerial
20 окт 05, 16:13    [1989066]     Ответить | Цитировать Сообщить модератору
 Re: Дата  [new]
funddd
Member

Откуда: Алма-Ата, Казахстан
Сообщений: 1369
но, естественно, ее придется сначал раскроить на составляющие при помощи InStr
20 окт 05, 16:14    [1989073]     Ответить | Цитировать Сообщить модератору
 Re: Дата  [new]
NNNata:)
Member

Откуда:
Сообщений: 146
ЛП
DateAdd Function


Returns a Variant (Date) containing a date to which a specified time interval has been added.

Syntax

DateAdd(interval, number, date)

Это всё хорошо, во-первых мне надо вычитание. И во-вторых как-то замтить в VBA:)
20 окт 05, 16:18    [1989087]     Ответить | Цитировать Сообщить модератору
 Re: Дата  [new]
adv
Member

Откуда:
Сообщений: 3333
даю подсказку:
1) -1 - вычитание
2) вам дали в вба
20 окт 05, 16:20    [1989105]     Ответить | Цитировать Сообщить модератору
 Re: Дата  [new]
ЛП
Guest
NNNata:)
ЛП
DateAdd Function


Returns a Variant (Date) containing a date to which a specified time interval has been added.

Syntax

DateAdd(interval, number, date)

Это всё хорошо, во-первых мне надо вычитание.

- Operator


Used to find the difference between two numbers or to indicate the negative value of a numeric expression.

Syntax 1

result = number1–number2

Syntax 2

–number


The – operator syntax has these parts:

Part Description
result Required; any numeric variable.
number Required; any numeric expression.
number1 Required; any numeric expression.
number2 Required; any numeric expression.



Remarks

In Syntax 1, the – operator is the arithmetic subtraction operator used to find the difference between two numbers. In Syntax 2, the – operator is used as the unary negation operator to indicate the negative value of an expression.

The data type of result is usually the same as that of the most precise expression. The order of precision, from least to most precise, is Byte, Integer, Long, Single, Double, Currency, and Decimal. The following are exceptions to this order:

If Then result is
Subtraction involves a Single and a Long, converted to a Double.
The data type of result is a Long, Single, or Date variant that overflows its legal range, converted to a Variant containing a Double.
The data type of result is a Byte variant that overflows its legal range, converted to an Integer variant.
The data type of result is an Integer variant that overflows its legal range, converted to a Long variant.
Subtraction involves a Date and any other data type, a Date.
Subtraction involves two Date expressions, a Double.



One or both expressions are Null expressions, result is Null. If an expression is Empty, it is treated as 0.

Note The order of precision used by addition and subtraction is not the same as the order of precision used by multiplication.
20 окт 05, 16:21    [1989116]     Ответить | Цитировать Сообщить модератору
 Re: Дата  [new]
NNNata:)
Member

Откуда:
Сообщений: 146
funddd
но, естественно, ее придется сначал раскроить на составляющие при помощи InStr

А можно по-подробнее. У меня help какой-то глюченный-ничего не находит
20 окт 05, 16:21    [1989117]     Ответить | Цитировать Сообщить модератору
 Re: Дата  [new]
ЛП
Guest
NNNata:)
funddd
но, естественно, ее придется сначал раскроить на составляющие при помощи InStr

А можно по-подробнее. У меня help какой-то глюченный-ничего не находит

InStr Function


Returns a Variant (Long) specifying the position of the first occurrence of one string within another.

Syntax

InStr([start, ]string1, string2[, compare])

The InStr function syntax has these arguments:

Part Description
start Optional. Numeric expression that sets the starting position for each search. If omitted, search begins at the first character position. If start contains Null, an error occurs. The start argument is required if compare is specified.
string1 Required. String expression being searched.
string2 Required. String expression sought.
compare Optional. Specifies the type of string comparison. If compare is Null, an error occurs. If compare is omitted, the Option Compare setting determines the type of comparison. Specify a valid LCID (LocaleID) to use locale-specific rules in the comparison.



Settings

The compare argument settings are:

Constant Value Description
vbUseCompareOption -1 Performs a comparison using the setting of the Option Compare statement.
vbBinaryCompare 0 Performs a binary comparison.
vbTextCompare 1 Performs a textual comparison.
vbDatabaseCompare 2 Microsoft Access only. Performs a comparison based on information in your database.



Return Values

If InStr returns
string1 is zero-length 0
string1 is Null Null
string2 is zero-length start
string2 is Null Null
string2 is not found 0
string2 is found within string1 Position at which match is found
start > string2 0



Remarks

The InStrB function is used with byte data contained in a string. Instead of returning the character position of the first occurrence of one string within another, InStrB returns the byte position.
20 окт 05, 16:22    [1989121]     Ответить | Цитировать Сообщить модератору
 Re: Дата  [new]
ЛП
Guest
однако попробуйте все-таки установить хелп по VBA
20 окт 05, 16:23    [1989125]     Ответить | Цитировать Сообщить модератору
 сомнение  [new]
adv
Member

Откуда:
Сообщений: 3333
закралось сомнение: не проще разделить left, right, mid или split
?
20 окт 05, 16:30    [1989179]     Ответить | Цитировать Сообщить модератору
 Re: сомнение  [new]
NNNata:)
Member

Откуда:
Сообщений: 146
adv
закралось сомнение: не проще разделить left, right, mid или split
?

Если не трудно помогите с куском кода , а то я с этим делом(VBA) впервые сталкиваюсь
20 окт 05, 16:32    [1989188]     Ответить | Цитировать Сообщить модератору
 Re: Дата  [new]
adv
Member

Откуда:
Сообщений: 3333
dateserial(split(поле, "-")(0), split(поле, "-")(1), split(поле, "-")(2)) - в дату
потом dateadd
20 окт 05, 16:39    [1989250]     Ответить | Цитировать Сообщить модератору
 Re: Дата  [new]
NNNata:)
Member

Откуда:
Сообщений: 146
И вот еще в Accesse 97 какие из этих функций имеются?
20 окт 05, 16:40    [1989258]     Ответить | Цитировать Сообщить модератору
 Re: Дата  [new]
NNNata:)
Member

Откуда:
Сообщений: 146
adv
dateserial(split(поле, "-")(0), split(поле, "-")(1), split(поле, "-")(2)) - в дату
потом dateadd

Спасибо!!!
20 окт 05, 16:41    [1989267]     Ответить | Цитировать Сообщить модератору
 Re: сомнение  [new]
Думающий
Guest
NNNata:)

Если не трудно помогите с куском кода , а то я с этим делом(VBA) впервые сталкиваюсь

Зачем столько трудностей?
Пишите в топике сразу "Ничего не хочу делать , сделайте мне все , чтоб все работало, я так и быть скопирую ваше творение в программу"

А то все хелп вам советуют, так было бы все понятнее и не нужно было бы столько ответов
20 окт 05, 16:45    [1989290]     Ответить | Цитировать Сообщить модератору
 Re: сомнение  [new]
NNNata:)
Member

Откуда:
Сообщений: 146
Думающий
Зачем столько трудностей?
Пишите в топике сразу "Ничего не хочу делать , сделайте мне все , чтоб все работало, я так и быть скопирую ваше творение в программу"

А то все хелп вам советуют, так было бы все понятнее и не нужно было бы столько ответов

Да я бы с удовольствием в help-e покопалась, если бы он был!!!!!1
20 окт 05, 17:03    [1989408]     Ответить | Цитировать Сообщить модератору
 Re: сомнение  [new]
adv
Member

Откуда:
Сообщений: 3333
NNNata:)
Да я бы с удовольствием в help-e покопалась, если бы он был!!!!!1
его, кстати, ставить очень недолго, намного быстрее, чем ждать ответы.
20 окт 05, 17:06    [1989424]     Ответить | Цитировать Сообщить модератору
 Re: Дата  [new]
funddd
Member

Откуда: Алма-Ата, Казахстан
Сообщений: 1369
насчет InStr - был неправ.
Split гораздо удобнее.

в свое оправдание могу сказать, что еще можно забабхать RegExp

Function Oj (InputString)
Dim regEx
Set regEx = New RegExp
regEx.Pattern = "(\d{1,2}):(\d{1,2}):(\d{1,2})"
regEx.IgnoreCase = True
Oj = Cdate (regEx.Replace(InputString, "$3.$2.$1") )
End Function


Если конечно, разделитель в системе - точка

но это так, шутка :)
20 окт 05, 18:02    [1989716]     Ответить | Цитировать Сообщить модератору
 Re: Дата  [new]
NNNata:)
Member

Откуда:
Сообщений: 146
Спасибо всем!! В этом вопросе уже разобралась сама, установила help:), написала функцию. Кстати DateSerial -прикольная функция оказалась.
21 окт 05, 09:53    [1990873]     Ответить | Цитировать Сообщить модератору
 Re: Дата  [new]
@Lenin
Member

Откуда:
Сообщений: 55
funddd
насчет InStr - был неправ.
Split гораздо удобнее.

в свое оправдание могу сказать, что еще можно забабхать RegExp

Function Oj (InputString)
Dim regEx
Set regEx = New RegExp
regEx.Pattern = "(\d{1,2}):(\d{1,2}):(\d{1,2})"
regEx.IgnoreCase = True
Oj = Cdate (regEx.Replace(InputString, "$3.$2.$1") )
End Function


Если конечно, разделитель в системе - точка

но это так, шутка :)

единственное что split(если я не ошибаюсь) появился в vb6.0 т.е в 97 он работать не будет. По крайней мере у меня отказывается напрочь :-)
21 окт 05, 10:20    [1990972]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить