ОФИЦИАЛЬНЫЙ ФОРУМ ГРУППЫ КОМПАНИЙ «ТЕХНОКОМ»

ОФИЦИАЛЬНЫЙ ФОРУМ ГРУППЫ КОМПАНИЙ «ТЕХНОКОМ» (https://forum.tk-chel.ru/index.php)
-   Система «АвтоГРАФ»: Программное обеспечение (https://forum.tk-chel.ru/forumdisplay.php?f=4)
-   -   Доработка: Отчеты (https://forum.tk-chel.ru/showthread.php?t=278)

Llirik81 03.03.2011 09:41

Цитата:

Сообщение от Keine-engel (Сообщение 4572)
когда смотрим отчет рейсы, там есть графа "Пробег, км" он не сходиться с спидометром. Где 50км, где на 100км меньше, чем у спидометра.

А ещё - водитель может спидометр подкрутить... А для "окончательной" уверенности - следует уточнить, что в отчётах и в программе отображается фактическое перемещение транспортного средства.

Дмитрий 22 11.05.2011 08:11

Редактирование шаблона отчета.
 
Доброго времени суток! Столкнулся с такой проблемой: Руководитель хочет видеть в отчете "Число прибытий в контрольные точки" столбец где указывается общее время нахождения в данной КТ. Редактирую шаблон путем удаления столбца "Пробег" и вставляю [Dataset1."REAL_CONT"]. При формировании вижу следующее: если "Число прибытий" 1 то время нахождения правильно, а если более 2 х посещений КТ то абсолютно неправильно, т. е. не суммируется. Также не могу создать "составной" отчет чтоб итог был тот же. В самой программе есть примерный отчет с колонкой "Время нахождения", но нет строки "Включая не пройденные" и не подлежит экспорту в другие форматы. Сам я не программист, поэтому помогите решить данную проблему.

storm 11.05.2011 11:29

Цитата:

Сообщение от Дмитрий 22 (Сообщение 8818)
При формировании вижу следующее: если "Число прибытий" 1 то время нахождения правильно, а если более 2 х посещений КТ то абсолютно неправильно, т. е. не суммируется

вы в отчет добавили просто поле [Dataset1."REAL_CONT", которое означает просто продолжительность нахождения в контрольной точке, а вам надо все эти продолжительности просуммировать примерно так

вопрос:
Как просуммировать общее время и вывести его в итог


Код:

var                               
  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; 

  result := Str;
end;

во вкладку код в редакторе шаблонов вставляете этот текст
в MasterData2 вызываете первую функцию, в нее параметром передаете время для суммирования
в вашем случае как-то так [SumCont(<Dataset1."REAL_CONT">)], ее можно засунуть в невидимую ячейку или в любую ячейку в MasterData2

а затем, там где идет итог по времени вставить ячейку с текстом [GetSumCont()]

Дмитрий 22 12.05.2011 04:02

Цитата:

Сообщение от storm (Сообщение 8835)
Цитата:

Сообщение от Дмитрий 22 (Сообщение 8818)
При формировании вижу следующее: если "Число прибытий" 1 то время нахождения правильно, а если более 2 х посещений КТ то абсолютно неправильно, т. е. не суммируется

вы в отчет добавили просто поле [Dataset1."REAL_CONT", которое означает просто продолжительность нахождения в контрольной точке, а вам надо все эти продолжительности просуммировать примерно так

вопрос:
Как просуммировать общее время и вывести его в итог


Код:

var                               
  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; 

  result := Str;
end;

во вкладку код в редакторе шаблонов вставляете этот текст
в MasterData2 вызываете первую функцию, в нее параметром передаете время для суммирования
в вашем случае как-то так [SumCont(<Dataset1."REAL_CONT">)], ее можно засунуть в невидимую ячейку или в любую ячейку в MasterData2

а затем, там где идет итог по времени вставить ячейку с текстом [GetSumCont()]


Вопрос напрашивается сам за себя- Параметр CONT не описан. Вроде так. Если можно ответьте скринами.

storm 12.05.2011 05:17

в вашем случае вкладка код должна содержать код, который я скинул и в конец добавляете то, что у вас уже было

должно получиться так

Код:

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;

result := Str;
end;

begin
  Days[1] := 'Воскресенье';
  Days[2] := 'Понедельник';
  Days[3] := 'Вторник';
  Days[4] := 'Среда';
  Days[5] := 'Четверг';
  Days[6] := 'Пятница';
  Days[7] := 'Суббота'; 
end.

вы же часть кода, которая у вас была
Код:

begin
  Days[1] := 'Воскресенье';
  Days[2] := 'Понедельник';
  Days[3] := 'Вторник';
  Days[4] := 'Среда';
  Days[5] := 'Четверг';
  Days[6] := 'Пятница';
  Days[7] := 'Суббота'; 
end.

почему то засунули в середину того, что прислал вам я

ФОРУМ ТК 12.05.2011 05:45

Цитата:

Сообщение от storm (Сообщение 8852)
почему то засунули в середину того, что прислал вам я

storm это провокация не поддавайтесь на это!!!:Laie_16:

Дмитрий 22 12.05.2011 07:59

Цитата:

Сообщение от rukav (Сообщение 8855)
Цитата:

Сообщение от storm (Сообщение 8852)
почему то засунули в середину того, что прислал вам я

storm это провокация не поддавайтесь на это!!!:Laie_16:

Я же говорю что я НЕ ПРОГРАММИСТ и для меня это темный лес и помоч мне некому! сижу туплю второй день. По другому не можете помоч? Более чтоб понятно было для меня или выслать например уже готовый шаблон???
На первом скрине видно что когда ставлю галку "Включая непройденные" - ошибка.
Второй скрин показывает что при выборе периода за день все правильно отображается, а при выборе за 2 и более суток неправильно.

ФОРУМ ТК 12.05.2011 16:44

Цитата:

Сообщение от Дмитрий 22 (Сообщение 8863)
Я же говорю что я НЕ ПРОГРАММИСТ и для меня это темный лес и помоч мне некому!

Очень жаль! Я так понимаю, что вам это вменили в обязанность. Поэтому придется медленно и терпеливо грызть гранит программирования.
Сделать готовый шаблон, мы конечно можем, это не проблема, НО нам это абсолютно некогда делать и если предположить, что у нас очень много пользователей, дилеров и каждому сделать отчет, то время работы наших программеров расписано как минимум до 2099 года... Дальше не загадываю.
Поэтому, поймите, если вы один раз разберетесь, то в последующем вам уже будет гораздо проще все реализовывать.:muscle:

Дмитрий 22 13.05.2011 02:15

Тогда смысл вашего форума в чем? Отписываться о том что нам некогда вашими проблемами заниматься? Диллеру тоже некогда - бабки собирают за абонентскую плату, а остальное е....сь как хотите. Думаю не одному мне хотелось бы что нибудь изменить. Собрать хотя бы статистику по "желаниям" потребителей. Думаю найдутся примерные задачи. А удалить проще чем написать.

Дмитрий 22 13.05.2011 04:17

в MasterData2 вызываете первую функцию, в нее параметром передаете время для суммирования
в вашем случае как-то так [SumCont(<Dataset1."REAL_CONT">)], ее можно засунуть в невидимую ячейку или в любую ячейку в MasterData2

Storm, я так понимаю проблема у меня вот в этом. Можете подробнее написать эти действия.


Текущее время: 21:21. Часовой пояс GMT.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot