"Живой" отчет

отредактировано 03:33 Раздел: FastReport 2.xx VCL
Делаю отчет и застрял на простой вещи! В отчете данные получаются из запросов Мастер-Детейл, которые находятся на формах программы:
qRashS.SQL.Clear;
qRashS.SQL.Add('SELECT R.DATER, R.NAKL, SK.KONTR, RS.IDPS, SUM (RS.KOL) AS KOLS, RS.NDSOPT, RS.CENAOPT, RS.SUMOPT');
qRashS.SQL.Add('FROM RASH R, RASHSOD RS, SPR_KONTR SK');
qRashS.SQL.Add(Format('WHERE (RS.IDR = R.ID) AND (R.DATER BETWEEN ''%1s'' AND ''%1s'') AND (RS.IDPREP = :ID) AND (SK.ID = R.IDKONTR))', [DateToStr(d1), DateToStr(d2)]));

Часть данных из запроса передаются в отчет (точнее сказать все, кроме RS.IDPS). RS.IDPS - уникальный идентификатор строки, используемой в БД InterBase. Данный идентификатор как раз и нужен, чтобы по нему находились данные из других таблиц БД по кликанью мышьки пользователем на любое Memo, находящееся в DetailData, которая находится в отчете. В процедуре frReport1ObjectClick(View: TfrView) должен выполниться динамический запрос, который находит данные, где используется указанный идентификатор строки RS.IDPS.
Так вот - НИЧЕГО НЕ РАБОТАЕТ!!!
Подскажите кто может каким образом "оживить" отчет, чтобы пользователь по нажатию правой клавиши мыши выдел перед собой набор данных, где фигурирует данная строка отчета.
ЗАРАНЕЕ БОЛЬШОЕ СПАСИБО!

Комментарии

  • отредактировано 03:33
    Как "оживить" не знаю, но могу дать пару советов как найтить почему не работает:
    1) Чтобы не было такой каши из строк советую писать так:
    s:='SELECT '+
    'Field1, '+
    'Field2 '+
    'FROM Table1 '+
    'WHERE Table1.Field1='+SomeParameter;
    Query.SQL.Clear;
    Query.SQL.Add(s);
    Так выглядит намного читабельнее.

    2) Если у тебя чегото что-то не возвращает сначала выполни запрос в другом софте, например, QueryAnalyzer.
    Чтобы вытащить запрос в таком виде, в каком он будет выполняться можно написать так:
    s:='SELECT '+
    'Field1, '+
    'Field2 '+
    'FROM Table1 '+
    'WHERE Table1.Field1='+SomeParameter;
    [INPUT('',s)];
    Query.SQL.Clear;
    Query.SQL.Add(s);

    или так:
    s:='SELECT '+
    'Field1, '+
    'Field2 '+
    'FROM Table1 '+
    'WHERE Table1.Field1='+SomeParameter;
    Query.SQL.Clear;
    Query.SQL.Add(s);
    [INPUT('',Query.SQL)];

    После того как выяснил что запрос работает как нада можно разбираться почему не работает все остальное.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.