В конце месяца

Korban_dv
Дата: 07.03.2008 13:52:36
Есть некоторая переменная X, которая в течении месяца при работе с формой увеличивается. Как сделать, чтобы в конце каждого месяца результат переменной занасился в таблицу Tabl1 и после этого обнулялся и всё начиналось сначала. И ещё, Tabl1 имеет два поля Месяц и Значение X. Можно ли сделать, чтобы при этом поле Месяц заполнялось автоматически.
<>
Дата: 07.03.2008 13:56:37
Korban_dv
в конце каждого месяца

конкретизируйте-в 23:59?
mds_world
Дата: 07.03.2008 14:04:14
Лучше такое делать не в конце месяца, а в начале. Скажем, при включении программы, срабатывает макрос автоэкзек или загрузочная форма и опрашивается дата. Именно дата, а не месяц, поскольку при переходе через год возникнут проблемы с месяцем. А из даты получить месяц не проблема
If Month(dmax("Дата", "Таблица"))<>Month(date) Then
  Currentdb.Execute("Insert Into Таблица Values [Дата]=" & Date & ", [x]=0")
End If

Если же программа работает в режиме 24*7, то должен быть таймер, чтобы отследить перемены
Korban_dv
Дата: 07.03.2008 14:12:51
Можно и вначале. Скажем, человек открыл форму 1 февраля 2008 года, а в Tabl1 уже заполнилось поле Месяц значением январь 2008 и поле Значение X значением X, после чего X обнуляется .
mds_world
Дата: 07.03.2008 14:16:26
Korban_dv
Можно и вначале. Скажем, человек открыл форму 1 февраля 2008 года, а в Tabl1 уже заполнилось поле Месяц значением январь 2008 и поле Значение X значением X, после чего X обнуляется .
Если проанализируете мой ответ, то увидите, что именно это там и делается.

Только замените в таблице поле "Месяц" на поле "Дата" типа Дата/Время
Korban_dv
Дата: 07.03.2008 14:19:04
Спасибо. Буду пробовать)
Korban_dv
Дата: 07.03.2008 14:44:35
mds_world

If Month(dmax("Дата", "Таблица"))<>Month(date) Then
  Currentdb.Execute("Insert Into Таблица Values [Дата]=" & Date & ", [x]=0")
End If


Так ведь здесь дата уже должна быть введене в поле Дата, а хотелось бы, чтобы это делалось автоматически и здесь не прописано, что Insert Into Таблица Values [Значение X]= [x]
mds_world
Дата: 07.03.2008 14:52:38
Korban_dv
Так ведь здесь дата уже должна быть введене в поле Дата, а хотелось бы, чтобы это делалось автоматически и здесь не прописано, что Insert Into Таблица Values [Значение X]= [x]
Введите самую первую дату датированную, скажем, прошлым годом.

А код, с учетом ваших пожеланий переделаем. При выходе из программы, поставьте такой код и он будет постоянно записывать в конце сеанса значение X.
  Currentdb.Execute("Update Таблица Set [Дата]=" & Date & ", [ЗначениеX]=" & X)

Здесь X - ваша переменная. Кстати, в начале работы ее надо будет считывать.
mds_world
Дата: 07.03.2008 14:58:10
Здесь получается некоторая несогласованность. Нужно, либо в обоих случаях Update, либо Insert Into. Вам ведь достаточно одной строки в таблице, не так ли? Тогда в первом выражении замените Insert Into на Update, т.е. так
If Month(dmax("Дата", "Таблица"))<>Month(date) Then
  Currentdb.Execute("Update Таблица Set [Дата]=" & Date & ", [x]=0")
End If
Korban_dv
Дата: 07.03.2008 14:59:22
Спасибо. Попробую...