2015-05-01 6 views
0

Я столкнулся с проблемой с кристальным отчетом.хранить значение на отчете кристалла C#

Я создал пользовательскую формулу для расчета общего количества часов посещаемости. формула код:

if({Atendances.Status} = "OUT") then 
DateDiff("h",Previous({Atendances.Time}),{Atendances.Time}); 

и результат я получаю

1/5/2015 ___________________________ 

Time     || Status 
1/5/2015 11:06:00AM || IN 
1/5/2015 3:06:00PM || OUT 
1/5/2015 4:06:00PM || IN 
1/5/2015 7:06:00PM || OUT 

Total Hours : 3.00 

числа 3,00 является результатом формулы и она должна быть 7.00 часов проблемы нет суммирования или сохранение значения результата.

я попытался определить переменные, но результат будет 0.0

какие-либо предложения?

ответ

0

Ваша формула сбрасывается каждый раз, когда записываются новые записи, поэтому единственным значением является последнее.

Вам нужно создать переменную, а затем увеличить его это создать переменную:

Shared NumberVar TotalTime; 

, то вам нужно положить, что в формуле и поместите его в заголовке отчета, так что объявить его в начале ,

Теперь вам нужна формула, которую вы сейчас имеете, и вам нужно сделать ссылку на эту переменную и использовать ее. Вы делаете подобные ему так:

Shared NumberVar TotalTime; // this refers to the variable 
TotalTime:= TotalTime + 1 // this increment whatever value of it by 1 

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

Shared NumberVar TotalTime; // this refers to the variable 
TotalTime; // this simply return the value as a normal formula 
+0

Хорошо, но все равно получаю 0.0 на нижнем колонтитуле группы, я создал в заголовке группы: [total_time_variable] с кодом: Shared NumberVar TotalTime; , а также в группе [total_time_calc] с кодом: NumberVar TotalTime; if ({Atendances.Status} = "OUT") затем TotalTime: = TotalTime + DateDiff ("h", Previous ({Atendances.Time}), {Atendances.Time}) и в нижнем колонтитуле группы [total_time_result] с код: NumberVar TotalTime; TotalTime; , результат получается 0,0 на нижнем колонтитуле группы? спасибо за вашу поддержку –

+0

извините мою ошибку, они должны быть объявлены как общие. Я никогда не использовал датифик, но в результате этого типа даты нам нужно использовать 'DateVar' вместо – Franck

+0

, также используя группу, вам нужна другая формула. вам необходимо включить в заголовок группы, чтобы установить значение общего времени на 0 для сброса, поскольку переменная существует для длины отчета.так что 'Shared NumberVar TotalTime; TotalTime: = 0' и формулу, отображающую его в нижнем колонтитуле группы, и она будет работать отлично. – Franck

0

Я уверен, что я что-то не хватает, но мне кажется, было бы проще использовать сводки, которые уже Кристалл. Удостоверьтесь, что ваши записи отсортированы по времени по возрастанию, который, вероятно, уже есть. Похоже, что ваш отчет сгруппирован по дате? или, может быть, сначала со стороны Attendant? Так создать одну формулу

if {Atendances.Status} = "OUT" 
then DateDiff("h",Previous({Atendances.Time}),{Atendances.Time}) 
else 0 

Капля это в разделе детали и создать аннотацию к сноске группы 1 или 2, или везде, где вы хотите. Затем удалите его из раздела сведений.

Смежные вопросы