powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / VBA & Построитель выражений
17 сообщений из 42, страница 2 из 2
VBA & Построитель выражений
    #32560801
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Тогда так:

Код: plaintext
1.
2.
=Nz(DLookUp("[Остатки (хранение)]![Остаток (кг)]";"[Остатки (хранение)]";Дата=#" &
format(DateAdd("m";1;DateSerial(Year(Forms!Отчеты![Конец периода]);Month(Forms!Отчеты![Конец периода]);1))-1; "mm\/dd\/yyyy")
& "#);"0")
...
Рейтинг: 0 / 0
VBA & Построитель выражений
    #32560804
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор)]";Дата=#" &

Владимир Саныч, но ты допускаешь ту же ожибку - условие не в строке...
...
Рейтинг: 0 / 0
VBA & Построитель выражений
    #32560806
ThuG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Serge Gavrilov, пять баллов, большое спасибо! Недопонял тебя сначала

2 Владимир Саныч, я так пробовал... даже просто с DateSerial(2004,06,30) не заработало. Ну, вопрос снят, тем не менее. Спасибо за помощь!
...
Рейтинг: 0 / 0
VBA & Построитель выражений
    #32560809
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Serge GavrilovВладимир Саныч, но ты допускаешь ту же ожибку - условие не в строке...
Это не ошибка, это и есть замысел. Сначала посчитать дату, а потом включить ее в строку. А не наоборот, как было.
...
Рейтинг: 0 / 0
VBA & Построитель выражений
    #32560812
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А. Таки понял.

=Nz(DLookUp("[Остатки (хранение)]![Остаток (кг)]";"[Остатки (хранение)]"; " Дата=#" & format(DateAdd("m";1;DateSerial(Year(Forms!Отчеты![Конец периода]);Month(Forms!Отчеты![Конец периода]);1))-1; "mm\/dd\/yyyy") & "# " );"0")
...
Рейтинг: 0 / 0
VBA & Построитель выражений
    #32560825
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так не будет проще?
Nz(DLookup("[Остаток (кг)]", "[Остатки (хранение)]", "Дата = CDate('" & _
DateAdd("m", 1, CDate("01/" & Format(Forms!Отчеты![Конец периода], "mm/yyyy"))) & "'"), "0")
...
Рейтинг: 0 / 0
VBA & Построитель выражений
    #32560826
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еденичку и скобку потерял

Nz(DLookup("[Остаток (кг)]", "[Остатки (хранение)]", "Дата = CDate('" & _
DateAdd("m", 1, CDate("01/" & Format(Forms!Отчеты![Конец периода], "mm/yyyy"))) & "') - 1"), "0")
...
Рейтинг: 0 / 0
VBA & Построитель выражений
    #32560828
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Если я не ошибаюсь, CDate трактует подсунутый ему стринг в соответствии с региональными настройками. То есть CDate("1/2/2004") может оказаться и первым февраля, и вторым января.
...
Рейтинг: 0 / 0
VBA & Построитель выражений
    #32560834
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир СанычЕсли я не ошибаюсь, CDate трактует подсунутый ему стринг в соответствии с региональными настройками. То есть CDate("1/2/2004") может оказаться и первым февраля, и вторым января.
Правильно! Но тем же и хорошо - в текстбоксе - тот же формат!
И приклейка с помощью # тоже опасна по этой причине, а может быть даже еще опаснее, т.к. Акс переворачивает дату как он ее понимает
...
Рейтинг: 0 / 0
VBA & Построитель выражений
    #32560836
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Rivkin DmitryПравильно! Но тем же и хорошо - в текстбоксе - тот же формат!
Понял. Действительно.

Rivkin Dmitry
И приклейка с помощью # тоже опасна по этой причине, а может быть даже еще опаснее, т.к. Акс переворачивает дату как он ее понимает
Но я ведь приклеиваю после форматирования по MMDDYYYY. А форматирую это значение как дату, а не как стринг.
...
Рейтинг: 0 / 0
VBA & Построитель выражений
    #32560838
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Стоп!!! Нет!!! Дмитрий, почитай, что ты написал.

CDate("01/" & Format(Forms!Отчеты![Конец периода], "mm/yyyy")

То есть ты заведомо подкладываешь в CDate стринг по формату DDMMYYYY, а не из текстбокса.
...
Рейтинг: 0 / 0
VBA & Построитель выражений
    #32560841
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но я же дважды пользуюсь CDate !!!
...
Рейтинг: 0 / 0
VBA & Построитель выражений
    #32560842
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Но внешний срабатывает правильно (его параметр либо дата, либо целое число), а внутренний неправильно. Так что взаимно нейтрализоваться они не могут.
...
Рейтинг: 0 / 0
VBA & Построитель выражений
    #32560843
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему? Если наружный верно работает, так и внутренний отработает
...
Рейтинг: 0 / 0
VBA & Построитель выражений
    #32560844
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Но сначала-то работает внутренний! И если его результат неправильный, то ошибка так и пойдет дальше, вплоть до конечного результата всего выражения.
...
Рейтинг: 0 / 0
VBA & Построитель выражений
    #32561034
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь за перерыв - спать ходил...

CDate("01/" & Format(Forms!Отчеты![Конец периода], "mm/yyyy"))
возвращает date без проблем.
DateAdd продлжает возвращать date
и Дата = CDate только корректно передает критерий
...
Рейтинг: 0 / 0
VBA & Построитель выражений
    #32564473
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Rivkin DmitryCDate("01/" & Format(Forms!Отчеты![Конец периода], "mm/yyyy"))
возвращает date без проблем.
Если в настройках указано mm/dd/yyyy, то CDate("01/" & ...) вернет какое-нибудь число месяца января, тогда как по замыслу автора программы должно быть первое число какого-нибудь месяца.
...
Рейтинг: 0 / 0
17 сообщений из 42, страница 2 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / VBA & Построитель выражений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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