Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Снова о дате. / 15 сообщений из 15, страница 1 из 1
27.01.2004, 20:19
    #32389789
ThuG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова о дате.
Скажите, пожалуйста, как, вводя в InputBox дату в виде "dd.mm.yyyy", получить из нее дату в виде "mm/dd/yy"?

Format почему-то выводит дату в том же виде. Может, как-то нужно задать вводимый в InputBox формат даты, а потом уже форматировать под свои нужды? InputBox - не текстовое поле, свойства не выставишь.

----
Dim D1 As Date
Dim D2 As Date
D1 = InputBox("Дата:")
MsgBox D1
D2 = Format(D1, "mm\/dd\/yy")
MsgBox D2
----
...
Рейтинг: 0 / 0
27.01.2004, 20:24
    #32389798
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова о дате.
авторD1 = InputBox("Дата:")
D2 = Format(D1, "mm\/dd\/yy")
Обе строки нехороши, потому что нельзя заносить строковое значение в переменную типа Date. Я бы вводил дату по частям и обращался к DateSerial.
...
Рейтинг: 0 / 0
27.01.2004, 20:24
    #32389799
Гостья
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова о дате.
Dim D1 As Date
Dim D2 As String
D1 = InputBox("Дата:")
MsgBox D1

D2 = DatePart("d", D1) & "/" & DatePart("m", D1) & "/" & DatePart("yyyy", D1)
MsgBox D2
...
Рейтинг: 0 / 0
27.01.2004, 20:27
    #32389806
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова о дате.
2 Гостья:
В этом случае могут перепутаться день и месяц.
...
Рейтинг: 0 / 0
27.01.2004, 20:32
    #32389810
ThuG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова о дате.
Владимир Саныч, а как тогда правильно?
...
Рейтинг: 0 / 0
27.01.2004, 20:34
    #32389813
ThuG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова о дате.
Владимир Саныч, сорри, проглядел ответ. А пример можно?
...
Рейтинг: 0 / 0
27.01.2004, 20:36
    #32389815
Гостья
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова о дате.
D2 = day(D1) & "/" & month(D1) & "/" & year(D1)
...
Рейтинг: 0 / 0
27.01.2004, 20:39
    #32389818
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова о дате.
D2 = dateserial(y,m,d)

2 Гостья:
А так они и подавно перепутаются.
...
Рейтинг: 0 / 0
27.01.2004, 20:40
    #32389820
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова о дате.
D2=dateserial(val(inputbox("year")),val(inputbox("month")),val(inputbox("day")))
...
Рейтинг: 0 / 0
27.01.2004, 20:43
    #32389823
Гостья
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова о дате.
авторА так они и подавно перепутаются.

А у меня не путаются...
Ни так, ни так.

Вот...
...
Рейтинг: 0 / 0
27.01.2004, 20:46
    #32389827
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова о дате.
А если у кого-то другие настройки Windows?
...
Рейтинг: 0 / 0
27.01.2004, 20:50
    #32389830
Гостья
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова о дате.
авторА если у кого-то другие настройки Windows?

Семён Семёныч!... ;))

Кстати, по крайней мере в моих настройках, если всё так и оставить, как в первоначальном коде, только D2 исправить String, то получается как раз такой формат, какой нужен...
...
Рейтинг: 0 / 0
27.01.2004, 20:52
    #32389832
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова о дате.
ВС, ничего, если я побуду твоим "голосом"? :)

Владимир Саныч имел в виду, что cdate и ей подобные, воспримут, к примеру, строку "1,13,3", полученную от инпутбокса, как 13 января 2003 года, тогда как пользователь мог банально ошибиться при вводе.

Чтобы избежать подобных казусов, можно
- вводить дату тремя инпутбоксами для дня, месяца и года соответственно;
- вводить дату через предназначенную для этого форму с полем с "маской ввода";
- самостоятельно программно вычленять из строки соответстующие подстроки в нужном порядке
и т.д., вариантов много.

А для преобразования даты в формате date в строку вида "mm/dd/yy" (очевидно, для запроса), действительно, подойдет Format(MyDateVar, "mm\/dd\/yy"). Кстати, акцессы "кушают" и Format(MyDateVar, "mm-dd-yy") - писать чуть короче и не перепутаешь \/ c /\
...
Рейтинг: 0 / 0
27.01.2004, 20:58
    #32389837
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова о дате.
Тьфу ты, не понял я вопроса.

2Автор

dim d as date
d = чтото
msgbox d

Что бы ты не положил в d, будет предварительно преобразовано к типу date. Или даст ошибку, если это невозможно. Когда ты передаешь переменной типа date (в памяти она предстваляет собой число с плавающей запятой) строку, она (строка) преобразовывается согласно региональным настройкам и погодным условиям.

Когда ты делаешь msgbox, его аргумент, опять же по погоде, преобразуется в строку или генерит ошибку при этом преобразовании, как в случае, например с

dim r as recorset
set r = чтото
msgbox r

dim d as date
- это число с плавающей запятой, вне зависимости от того, в каком городе ты находишься, и с какой ноги встаешь.

Читай faq по запросам.
...
Рейтинг: 0 / 0
27.01.2004, 21:08
    #32389846
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова о дате.
Geo, у тебя хорошо получается мой голос!!!
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Снова о дате. / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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