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

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

TOOP 25.03.2013 02:24

FastReport .NET
 
подскажите пожалуйста где ошибка в этой строке. В FastReport не нашел как компилировать по шагам программу.

[IIf(ToDateTime([DS_trip.REG_CONT])>=ToDateTime("00:30:00"),DS_trip.REG_CONT],0)]

Хочу создать условие чтобы простои выводились от получаса.

plex 25.03.2013 04:28

Потерто,

storm 25.03.2013 05:58

TOOP,
в шаблонах(в папке templates) есть пример отчета с фильтрацией остановок по продолжительности
создайте новый отчет и в качестве шаблона укажите parks-pointsext.frx
этот отчет был сделан с дополнительной формой, на которой можно указать необходимую продолжительность, если вам не нужна форма, то можно взять только код фильтрации из этого шаблона

TOOP 25.03.2013 09:56

Вложений: 1
plex, Вот что пишет(во вложении), у меня тоже также писал.


storm, А где там код фильтрации, что-то не нашел.

storm 25.03.2013 10:02

Цитата:

Сообщение от TOOP (Сообщение 53080)
storm, А где там код фильтрации, что-то не нашел.

во вкладке "код" прописана функция
Код:

    private bool FFilter()
    {
      return TimeSpan.Compare(StrToTimeSpan((string)Report.GetColumnValue("DS_parks.REAL_CONT")), TimeSpan.FromMinutes((int)FilterUPDOWN.Value)) == 1;
    }

и эта функция подставлена в качестве условия фильтра в данных

storm 25.03.2013 10:04

TOOP,
в вашем случае, если вас жестко надо более 30 минут, нужно сделать так
Код:

    private bool FFilter()
    {
      return TimeSpan.Compare(StrToTimeSpan((string)Report.GetColumnValue("DS_parks.REAL_CONT")), TimeSpan.FromMinutes(30)) == 1;
    }


TOOP 25.03.2013 11:22

storm,
Вот что у меня в коде.
Цитата:

using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Forms;
using System.Drawing;
using System.Data;
using FastReport;
using FastReport.Data;
using FastReport.Dialog;
using FastReport.Barcode;
using FastReport.Table;
using FastReport.Utils;

namespace FastReport
{
public class ReportScript
{
}
}
отчет формируется только выдает так же, сумму всех простоев за рейс.

только у меня не DS_parks.REAL_CONT а DS_trip.REG_CONT. Конечно в коде это я изменил.
Если я ставлю DS_parks.REAL_CONT то у меня выводит первый простой более 30 минут даже без условия. а нужна сумма за рейс.
Цитата:

Код:
private bool FFilter()
{
return TimeSpan.Compare(StrToTimeSpan((string)Report.GetC olumnValue("DS_parks.REAL_CONT")), TimeSpan.FromMinutes(30)) == 1;
}

storm 25.03.2013 11:36

TOOP,
в общем я не понял, что вам нужно, но приведенная выше функция позволяет сравнить два промежутка времени

storm 25.03.2013 12:43

Цитата:

Сообщение от TOOP (Сообщение 53113)
DS_trip.REG_CONT

чисто ради интереса спрошу: по вашему мнению - как это поле связано с простоями?

TOOP 29.03.2013 09:04

storm,

Ошибся, DS_trip.REAL_CONT

storm 29.03.2013 09:22

Цитата:

Сообщение от TOOP (Сообщение 53555)
Ошибся, DS_trip.REAL_CONT

а это поле - просто продолжительность рейса)
может быть вам нужно все таки поле
1.4.12. -»- простоя PARK_CONT

TOOP 29.03.2013 10:04

Вложений: 1
Если в DataBand в параметре datasource выбрать ds_parks то DS_parks.REAL_CONT отлично считает простои, но все остальное перестает работать.

plex 29.03.2013 10:09

А вам только простои надо? Сумма стоянок же просто [DS_trip.PARK_CONT]

storm 29.03.2013 10:14

Цитата:

Сообщение от TOOP (Сообщение 53573)
Если в DataBand в параметре datasource выбрать ds_parks то DS_parks.REAL_CONT отлично считает простои, но все остальное перестает работать.

для датасета по остановкам да - считает простои, для рейсов- продолжительность рейса
DS_trip.REAL_CONT - продолжительность рейса
DS_parks.REAL_CONT - продолжительность остановки
DS_trip.PARK_CONT - суммарная продолжительность всех остановок за рейс

TOOP 29.03.2013 11:04

Цитата:

Сообщение от storm (Сообщение 53576)
DS_trip.PARK_CONT - суммарная продолжительность всех остановок за рейс

Вот, он считает сумму всех остановок за рейс, а как сделать чтобы только сумму остановок от получаса.

storm 29.03.2013 11:14

Цитата:

Сообщение от TOOP (Сообщение 53588)
Вот, он считает сумму всех остановок за рейс, а как сделать чтобы только сумму остановок от получаса.

он не считает, он выводит, а считает АвтоГРАФ и сразу выводит сумму
если вам нужна сумма остановок от получаса, то вам поможет только датасет DS_parks и в нем уже высчитывайте сумму с учетом фильтрации

TOOP 29.03.2013 11:26

Цитата:

если вам нужна сумма остановок от получаса, то вам поможет только датасет DS_parks и в нем уже высчитывайте сумму с учетом фильтрации
Тогда вопрос. Как это сделать чтобы все было на одной строке?

storm 29.03.2013 11:30

Цитата:

Сообщение от TOOP (Сообщение 53591)
Тогда вопрос. Как это сделать чтобы все было на одной строке?

добавить сверху еще один бенд с привязкой данных к датасету DS_parks, в нем самом ничего не выводить, но в событии BeforePrint посчитать сумму тех продолжительностей, которые больше заданной и запомнить ее в какую-нибудь переменную, а потом в таблице ниже вывести значение этой переменной


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

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