Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Хотел в отчете сделать красиво
 
 автор: OlegZa   (21.09.2009 в 18:39)   личное сообщение
 
 

Access 2003
Делаю отчет по платежам. Основание отчета - таблица "ДеньгиДвижение". Поля:
[КодДвиж] (счётчик),[ДатаДвиж], [Сумма].
Как сделать с нарастанием по строкам сумму долга в области данных - "допёр" сам. Сделал поле "Сумма с нарастанием" и в данных к ней указал -

=DSum("[Сумма]";"ДеньгиДвижение";"[КодДвиж]<=" & Nz([КодДвиж];0))

А проблема такая: Хочу выводить не весь отчет (с первого дня), а только с определенной даты. Сделал в заголовке группы поле. В нем в данных написал -

=Format(Nz(DSum("[Сумма]";"ДеньгиДвижение";"Val([ДатаДвижения])<" & Val([От какой даты считаем]));0);"Денежный").

Так вот - когда сделал - он (Аccess) у меня эту формулу "на Ура" считал (перед тем, правда, пришлось помучиться с переводом дат в Val([дата]) для вычисления разницы <>).
Отчет сохранил. На следующий день открываю - в области данных всё считает по-прежнему, а в заголовке вместо данных - "Ошибка".
Что не так? Почему сначала считал?
Какая ошибка - ума не дать. Даты он вычитывает - проверял. Val([Дата]) - тоже считает - тоже проверял. DSum() в области данных считает - значит с синтаксисом всё верно.
?!?
Подскажите - может сталкивался с проблемой такой кто.
Или, может, в принципе не тем путём иду???

  Ответить  
 
 автор: Анатолий (Киев)   (21.09.2009 в 18:55)   личное сообщение
 
 


...;"Val([ДатаДвижения])<" & Val([От какой даты считаем])...


Что такое [От какой даты считаем]? Если поле, то какого типа и где находится. Может ошибка из-за того, что там Null?
Попробуйте: Val(NZ([От какой даты считаем];1))

ЗЫ. Не вижу необходимости в Val. Должно работать и так:
...;"[ДатаДвижения]<" & CDate(NZ([От какой даты считаем];1))...

  Ответить  
 
 автор: OlegZa   (21.09.2009 в 19:29)   личное сообщение
 
 

Анатолий, спасибо за быстрый отклик.

[От какой даты считаем] - это в условии отбора в запросе - источнике данных отчета (я когда решил не все данные выводить - источник данных переделал с таблицы на запрос, где в поле [ДатаДвижения] - условие >[От какой даты считаем]). Оно же и здесь в - формуле звучит.
Nz([];1) - ну, наверное да. Почему бы и нет.
У меня сначала просто [Откакой даты считаем] было - так ошибку выдавало - пока Val() не начал вычислять.
А вот насчет CDate() - это не подумал вообще.
Пойду пробовать как-то.

  Ответить  
 
 автор: OlegZa   (21.09.2009 в 19:48)   личное сообщение
 
 

Нифига не понимаю.
Попробовал по-Вашему, Анатолий - (с CDate(), Nz()) - неизменно выдаёт ошибку.
Самое прикольное, что после того, как покопался с формулой - всё переделал как было на Val() - всё опять заработало. Всё считает.
Полтергейст какой-то.
Барабашки.
Надолго заработало - нет - не знаю. Может опять до следующего открытия.
Надо разбираться.

А может Access чего-нить "глючит"?????

  Ответить  
 
 автор: OlegZa   (21.09.2009 в 20:11)   личное сообщение
 
 

Дело оказалось до безобразия простым.
Открывал отчет при разной раскладке клавиатуры (Английкая - Русская).
При вводе даты от которой считаю - соответственно получал или 10/09/09, или 10.09.09.
Так вот, при Английской версии (со слешем) - всё работает. При Русской - фигу.
Вышел из положения Format-ом:

...<" & Val(Nz(Format([От какой даты считаем];"dd""'/""mm""'/""yy");1))...

Во блин - надо отдыхать побольше.....
Анатолий - спасибо большущее - это с Вашей подачи стал вглядываться что из поля ввода параметра при открытии в формулу попадает...

  Ответить  
 
 автор: Анатолий (Киев)   (22.09.2009 в 10:47)   личное сообщение
 
 

Имейте ввиду, что использовать имя параметра запроса в вычисляемых полях, в принципе, можно, но это недокументированное поведение Access, официально не поддерживаемое. В чем вы и убедились. Возможно явное описание параметра в тексте запроса с указанием его типа и исправит ситуацию (это можно сделать в конструкторе запроса через меню "Запрос"-"Параметры" или прямо в тексте запроса, написав в первой строке PARAMETERS [От какой даты считаем] Date;), но вводить параметр при каждом вызове отчета неудобно.
Обычно отчет вызывается из формы, в которой есть поле с форматом и маской ввода даты, а в запросе (и в вычисляемом поле) вместо [От какой даты считаем] пишется:
Forms![Имя формы]![Имя поля]

ЗЫ. С поцелуями вы явно погорячились. Благодарность от мужчин меня вполне устоит в виде или

  Ответить  
 
 автор: OlegZa   (22.09.2009 в 12:48)   личное сообщение
 
 

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList