|
|
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
Почему, когда я навешиваю на кнопку формы через VBA следующий код: Msgbox Nz(DLookup("[Остатки (хранение)]![Остаток (кг)]", "[Остатки (хранение)]", "Дата = DateAdd('m', 1, DateSerial(Year(Forms!Отчеты![Конец периода]), Month(Forms!Отчеты![Конец периода]), 1)) - 1"), "0") , то при нажатии получаю значение 150 (правильное), а если навешиваю через построитель выражений следующий код: =Nz(DLookUp("[Остатки (хранение)]![Остаток (кг)]";"[Остатки (хранение)]";Дата=DateAdd("m";1;DateSerial(Year(Forms!Отчеты![Конец периода]);Month(Forms!Отчеты![Конец периода]);1))-1);"0") , получаю значение 0? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 20:18:34 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
ThuGесли навешиваю через построитель выражений следующий код: Код: plaintext , получаю значение 0?На что ты навешиваешь через построитель? У тебя форма-то при поиске этого значения открыта? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 20:21:04 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
Первая форма, собственно, "Отчеты", она открыта и заполнены нужные поля (в частности, "Конец периода". На второй (тестовой) форме просто кнопка... когда через VBA на нее код вешаю, работает, когда через построитель - нет. Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 20:28:03 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
ThuGПервая форма, собственно, "Отчеты", она открыта и заполнены нужные поля (в частности, "Конец периода". На второй (тестовой) форме просто кнопка... когда через VBA на нее код вешаю, работает, когда через построитель - нет. Почему?Что значит "вешаю код через построитель"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 20:32:45 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
Правой кнопкой мыши на кнопке при редактировании формы -> обработка событий -> выражения. Открывается построитель выражений, ввожу код. :-/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 20:48:59 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
[Остатки (хранение)]![Остаток (кг)] - это неверно. [Остаток (кг)] - лучше, а то и вообще без квадратных скобок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 20:56:26 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
ThuGПравой кнопкой мыши на кнопке при редактировании формы -> обработка событий -> выражения. Открывается построитель выражений, ввожу код.И чего же ты после этого хочешь? Делай нормальным VBA, не выпендривайся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 20:56:46 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
2 Саныч автор[Остатки (хранение)]![Остаток (кг)] - это неверно. я бы иначе высказался - неожиданно. автор[Остаток (кг)] - лучше, а то и вообще без квадратных скобок Вряд ли лучше. Тема, видимо, в том, что при работе через построитель придется писать Код: plaintext Хотя в поле [Остаток (кг)] формы [Остатки (хранение)] я бы скорее число килограммов ожидал увидеть, чем выражение выбора для Dlookup Поэтому и говорю - неожиданно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 21:02:17 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
2 Владими Саныч, проверл, дело не в этом. При том такие вещи работали на более простых конструкциях. В чем еще может быть дело? 2 маяк, есть предложения? Из одной таблицы запросом надо взять данные для отчета (сделано), из другой - как раз итоги для того же отчета... С VBA понятно, но хочется проще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 21:03:19 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
А это на форме??? Я думал, что это в таблице... Да и Аксесс подумал бы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 21:03:25 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
А еще в условии пропали кавычки: ...;Дата=DateAdd("m";1;... а надо ... ;"[Дата]=DateAdd('m';1;... ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 21:04:20 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
Нашел!!! Код: plaintext Вот эти кавычки все сбивают. Почему в первом примере они не такие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 21:05:00 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
2 Victosha, это не форма, а таблица. Потому и DLookUp. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 21:05:06 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
:^) Опоздал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 21:05:22 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
акцессу деваться некуда. а ты наверно, прав - похоже - таблица это. так что твой совет правильный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 21:06:44 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
Он действительно неправильный, но не поэтому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 21:07:28 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
Заключил в кавычки условие в DLookUp в построителе... Надо что-то делать с вложенными кавычками "m", апострофы не подходят: #Ошибка К слову, от кнопки в тестовой форме перешел к полю в отчете - через построитель на него навесил тот же код. Ибо это и есть конечная цель. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 21:12:56 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
авторНадо что-то делать с вложенными кавычками "m", удвоить: ""m"" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 21:14:43 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
ThuGесть предложения? Из одной таблицы запросом надо взять данные для отчета (сделано), из другой - как раз итоги для того же отчета... С VBA понятно, но хочется проще.Ctrl+G, debug.print [выражение]. Если это даст нужное значение, а привязывание той же фигни с точностью до ";/," к контролу в отчёте не даст - сигнализируй. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 21:36:47 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
авторНадо что-то делать с вложенными кавычками "m"", апострофы не подходят Дело не в апострофах, с ними все нормально. Проблема в точках с запятой в выражении в кавычках, надо просто запятые ... ;"Дата=DateAdd('m',1,DateSerial(Year(Forms!Отчеты![Конец периода]),Month(Forms!Отчеты![Конец периода]),1))-1")... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 21:44:22 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
Удвоение кавычек не помогло. Если делаю =DLookUp("[Остаток (кг)]";"[Остатки (хранение)]";"[Дата]=#06/30/04# And [Предприятие]=Forms!Отчеты!Предприятие And [Вид топлива]='АИ-80'") , работает. Теперь вместо 06/30/04 надо ЛЮБЫМ СПОСОБОМ вставить последнее число месяца, указанного (разумеется, как дата целиком) в поле [Конец периода] на форме [Отчеты]. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 21:48:16 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
Кажется, есть мысль. Только сначала вопрос: никак не могу понять, к чему относится -1. Это добавить месяц и отнять день? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 21:52:42 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
2 Serge Gavrilov, точки с запятой вместо запятых - это дурацкие требования построителя, в VBA, конечно, запятые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 21:54:10 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
Точно. Собственно, с этого форума такую идею и почерпнул. /topic/99421&hl= ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 21:56:00 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
автор2 Serge Gavrilov, точки с запятой вместо запятых - это дурацкие требования построителя, в VBA, конечно, запятые. Причем тут требование посроителя и VBA? Я говорю о тех точках с запятых, которые в строке, вместо них должны быть запятые, проверить трудно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 21:57:55 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
Тогда так: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 21:59:56 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
автор)]";Дата=#" & Владимир Саныч, но ты допускаешь ту же ожибку - условие не в строке... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 22:03:53 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
2 Serge Gavrilov, пять баллов, большое спасибо! Недопонял тебя сначала 2 Владимир Саныч, я так пробовал... даже просто с DateSerial(2004,06,30) не заработало. Ну, вопрос снят, тем не менее. Спасибо за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 22:04:46 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
Serge GavrilovВладимир Саныч, но ты допускаешь ту же ожибку - условие не в строке... Это не ошибка, это и есть замысел. Сначала посчитать дату, а потом включить ее в строку. А не наоборот, как было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 22:07:54 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
А. Таки понял. =Nz(DLookUp("[Остатки (хранение)]![Остаток (кг)]";"[Остатки (хранение)]"; " Дата=#" & format(DateAdd("m";1;DateSerial(Year(Forms!Отчеты![Конец периода]);Month(Forms!Отчеты![Конец периода]);1))-1; "mm\/dd\/yyyy") & "# " );"0") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 22:09:09 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
Так не будет проще? Nz(DLookup("[Остаток (кг)]", "[Остатки (хранение)]", "Дата = CDate('" & _ DateAdd("m", 1, CDate("01/" & Format(Forms!Отчеты![Конец периода], "mm/yyyy"))) & "'"), "0") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 22:40:36 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
Еденичку и скобку потерял Nz(DLookup("[Остаток (кг)]", "[Остатки (хранение)]", "Дата = CDate('" & _ DateAdd("m", 1, CDate("01/" & Format(Forms!Отчеты![Конец периода], "mm/yyyy"))) & "') - 1"), "0") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 22:42:21 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
Если я не ошибаюсь, CDate трактует подсунутый ему стринг в соответствии с региональными настройками. То есть CDate("1/2/2004") может оказаться и первым февраля, и вторым января. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 22:44:04 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
Владимир СанычЕсли я не ошибаюсь, CDate трактует подсунутый ему стринг в соответствии с региональными настройками. То есть CDate("1/2/2004") может оказаться и первым февраля, и вторым января. Правильно! Но тем же и хорошо - в текстбоксе - тот же формат! И приклейка с помощью # тоже опасна по этой причине, а может быть даже еще опаснее, т.к. Акс переворачивает дату как он ее понимает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 22:52:33 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
Rivkin DmitryПравильно! Но тем же и хорошо - в текстбоксе - тот же формат! Понял. Действительно. Rivkin Dmitry И приклейка с помощью # тоже опасна по этой причине, а может быть даже еще опаснее, т.к. Акс переворачивает дату как он ее понимает Но я ведь приклеиваю после форматирования по MMDDYYYY. А форматирую это значение как дату, а не как стринг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 22:56:19 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
Стоп!!! Нет!!! Дмитрий, почитай, что ты написал. CDate("01/" & Format(Forms!Отчеты![Конец периода], "mm/yyyy") То есть ты заведомо подкладываешь в CDate стринг по формату DDMMYYYY, а не из текстбокса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 22:58:22 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
Но я же дважды пользуюсь CDate !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 23:04:59 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
Но внешний срабатывает правильно (его параметр либо дата, либо целое число), а внутренний неправильно. Так что взаимно нейтрализоваться они не могут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 23:06:23 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
Почему? Если наружный верно работает, так и внутренний отработает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 23:08:30 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
Но сначала-то работает внутренний! И если его результат неправильный, то ошибка так и пойдет дальше, вплоть до конечного результата всего выражения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2004, 23:09:31 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
Извиняюсь за перерыв - спать ходил... CDate("01/" & Format(Forms!Отчеты![Конец периода], "mm/yyyy")) возвращает date без проблем. DateAdd продлжает возвращать date и Дата = CDate только корректно передает критерий ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2004, 10:09:51 |
|
||
|
VBA & Построитель выражений
|
|||
|---|---|---|---|
|
#18+
Rivkin DmitryCDate("01/" & Format(Forms!Отчеты![Конец периода], "mm/yyyy")) возвращает date без проблем. Если в настройках указано mm/dd/yyyy, то CDate("01/" & ...) вернет какое-нибудь число месяца января, тогда как по замыслу автора программы должно быть первое число какого-нибудь месяца. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 20:45:30 |
|
||
|
|

start [/forum/topic.php?all=1&fid=45&tid=1673791]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
189ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
79ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 559ms |

| 0 / 0 |
