13.05.2011, 05:09
|
| »»» |
#31
|
Опытный пользователь
Регистрация: 22.12.2010
Сообщений: 2,121
|
Значит начнемс:
1. Из предыдущего моего поста вам нужно скопировать весь код целиком и вставить все в шаблон вашего отчета, предварительно удалив оттуда то, что там раньше было
2. так как вы используете непройденные контрольные точки, то для них естественно нет времени нахождения(так как машина в них не была ни разу), то вам нужно тогда немного изменить текст, вместо [SumCont(<Dataset1."REAL_CONT">)] вам нужно вставить [IIF(<Dataset1."REAL_CONT"> > '', SumCont(<Dataset1."REAL_CONT">), '0')]
Т.е делаем проверку, что время задано, если нет, то выводим 0
как-то так, если еще что-то будет не понятно - пишите
г. Челябинск
Ахмедьянов Алексей Адлерович
|
|
|
|
13.05.2011, 05:12
|
| »»» |
#32
|
Пользователь
Регистрация: 16.03.2011
Сообщений: 178
|
Сообщение от Дмитрий 22
|
Storm, я так понимаю проблема у меня вот в этом. Можете подробнее написать эти действия.
|
Дима, куда подробней? Может тебя сразу научить программировать? Учи азы или позови за пиво друга программиста
|
|
|
|
13.05.2011, 05:54
|
| »»» |
#33
|
Пользователь
Барнаул
Регистрация: 11.05.2011
Сообщений: 97
|
|
|
|
|
13.05.2011, 05:59
|
| »»» |
#34
|
Опытный пользователь
Регистрация: 22.12.2010
Сообщений: 2,121
|
скриншот пожалуйста, как сейчас выглядит и как должно быть, вобщем, что где не так подробно опишите
г. Челябинск
Ахмедьянов Алексей Адлерович
|
|
|
|
13.05.2011, 06:37
|
| »»» |
#35
|
Опытный пользователь
Регистрация: 19.12.2010
Сообщений: 6,307
|
Сообщение от Дмитрий 22
|
Тогда смысл вашего форума в чем? Отписываться о том что нам некогда вашими проблемами заниматься? Диллеру тоже некогда - бабки собирают за абонентскую плату, а остальное е....сь как хотите. Думаю не одному мне хотелось бы что нибудь изменить. Собрать хотя бы статистику по "желаниям" потребителей. Думаю найдутся примерные задачи. А удалить проще чем написать.
|
Матом ругаться мы все мастаки. Так, что давайте по-аккуратней на поворотах!
Что касается абонентки, то тут еще посмотреть надо: где и кто решил съэкономить.
Как-что сразу дилер, деньги берет ничего не делает. А потом выясняется, что клиент в целях экономии от всего отказался. Дык какие претензии в таком случае.
Учить в данном форуме азам программирования мы не будем, не наш профиль (для этого есть http://fast-report.com/ru/forum/ ), мы можем только поправить какие-то специфические вещи.
|
|
|
|
13.05.2011, 07:29
|
| »»» |
#36
|
Пользователь
Барнаул
Регистрация: 11.05.2011
Сообщений: 97
|
Сообщение от storm
|
скриншот пожалуйста, как сейчас выглядит и как должно быть, вобщем, что где не так подробно опишите
|
Код вставил без проблем. Интересует:
1. Первые два скрина отображают Время нахождения. Что то оно не сходится.
2. Интересует это предложение - "в MasterData2 вызываете первую функцию, в нее параметром передаете время для суммирования
в вашем случае как-то так [SumCont(<Dataset1."REAL_CONT">)], ее можно засунуть в невидимую ячейку или в любую ячейку в MasterData2" . Может я неправильно как то это сделал? и поэтому так время отображает в отчете?
Думаю для Вас, Storm, не много займет времени отредактировать данный шаблон. Если можно, тож хотелось бы увидеть скрины ну или готовый шаблон такого плана.
Последний раз редактировалось Дмитрий 22; 25.08.2011 в 05:58.
|
|
|
|
13.05.2011, 08:43
|
| »»» |
#37
|
Опытный пользователь
Регистрация: 22.12.2010
Сообщений: 2,121
|
у вас идет накопление продолжительностей, замените код на следующий, в нем добавлено обнуление переменной
Код:
|
var
Days: array[1..7] of string;
CurrCont: TDateTime = 0;
Str: String;
procedure SumCont(Cont: String);
begin
if Length(Cont) > 8 then CurrCont := CurrCont + StrToDateTime(Copy(Cont, Length(Cont) - 7, 8)) + StrToFloat(Copy(Cont, 0, Length(Cont) - 9))
else CurrCont := CurrCont + StrToDateTime(Copy(Cont, Length(Cont) - 7, 8));
end;
function GetSumCont(): String;
begin
if CurrCont >= 1 then
begin
Str := DateTimeToStr(CurrCont);
Str := IntToStr(Trunc(CurrCont)) + 'сут. ' + Copy(Str, Length(Str) - 7, 8);
//Str := IntToStr(Trunc(CurrCont) * 24 + StrToInt(Copy(Str, Length(Str) - 7, 2))) + Copy(Str, Length(Str) - 5, 6);
end
else
begin
Str := DateTimeToStr(CurrCont);
Str := Copy(Str, Length(Str) - 7, 8);
end;
CurrCont := 0;
result := Str;
end;
begin
Days[1] := 'Воскресенье';
Days[2] := 'Понедельник';
Days[3] := 'Вторник';
Days[4] := 'Среда';
Days[5] := 'Четверг';
Days[6] := 'Пятница';
Days[7] := 'Суббота';
end. |
насчет второго пункта, вам нужно вставить ячейку с текстом
[IIF(<Dataset1."REAL_CONT"> > '', SumCont(<Dataset1."REAL_CONT">), '')]
не в GroupFooter1, а в MasterData2, для этого вам нужно выбрать MasterData2, и растянуть его немного вниз, потом поместить в него ячейку с текстом, высоту этой ячейки сделать равной нулю, те выделяете ячейку и за нижнюю границу тянете вверх, пока у ячейки высота не станет нулевой, после этого саму мастердату тоже делаете нулевой высоты, таким образом мы получаем спрятанную(невидимую ячейку)
г. Челябинск
Ахмедьянов Алексей Адлерович
|
|
|
|
13.05.2011, 09:23
|
| »»» |
#38
|
Пользователь
Барнаул
Регистрация: 11.05.2011
Сообщений: 97
|
Огромное спасибо, Storm, что все-таки хватило нервов разжевать. Почти все работает, только вот проблемка небольшая - При установки галочки "Включая непройденные" происходит следующие:
Последний раз редактировалось Дмитрий 22; 25.08.2011 в 05:58.
|
|
|
|
13.05.2011, 11:19
|
| »»» |
#39
|
Дилер
г.Волгоград, ООО "РСМ"
Регистрация: 20.12.2010
Сообщений: 565
|
ООО "РСМониторинг" (ООО "РСМ"), г. Волгоград, Волгоградская область, Россия
Денисов Валерий Игоревич, зам. директора
|
|
|
|
13.05.2011, 12:30
|
| »»» |
#40
|
Опытный пользователь
Регистрация: 22.12.2010
Сообщений: 2,121
|
угу, понял
замените код на следующий и все будет ок
Код:
|
var
CurrCont: TDateTime = 0;
Str: String;
Days: array[1..7] of string;
procedure SumCont(Cont: String);
begin
if Length(Cont) > 8 then CurrCont := CurrCont + StrToDateTime(Copy(Cont, Length(Cont) - 7, 8)) + StrToFloat(Copy(Cont, 0, Length(Cont) - 9))
else CurrCont := CurrCont + StrToDateTime(Copy(Cont, Length(Cont) - 7, 8));
end;
function GetSumCont(): String;
begin
if CurrCont >= 1 then
begin
Str := DateTimeToStr(CurrCont);
Str := IntToStr(Trunc(CurrCont)) + 'сут. ' + Copy(Str, Length(Str) - 7, 8);
//Str := IntToStr(Trunc(CurrCont) * 24 + StrToInt(Copy(Str, Length(Str) - 7, 2))) + Copy(Str, Length(Str) - 5, 6);
end
else
begin
Str := DateTimeToStr(CurrCont);
Str := Copy(Str, Length(Str) - 7, 8);
end;
if CurrCont = 0 then
begin
Str := '';
end;
CurrCont := 0;
result := Str;
end;
begin
Days[1] := 'Воскресенье';
Days[2] := 'Понедельник';
Days[3] := 'Вторник';
Days[4] := 'Среда';
Days[5] := 'Четверг';
Days[6] := 'Пятница';
Days[7] := 'Суббота';
end. |
г. Челябинск
Ахмедьянов Алексей Адлерович
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Текущее время: 14:42. Часовой пояс GMT.
|
|