"Живой" отчет
Делаю отчет и застрял на простой вещи! В отчете данные получаются из запросов Мастер-Детейл, которые находятся на формах программы:
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.
Так вот - НИЧЕГО НЕ РАБОТАЕТ!!!
Подскажите кто может каким образом "оживить" отчет, чтобы пользователь по нажатию правой клавиши мыши выдел перед собой набор данных, где фигурирует данная строка отчета.
ЗАРАНЕЕ БОЛЬШОЕ СПАСИБО!
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.
Так вот - НИЧЕГО НЕ РАБОТАЕТ!!!
Подскажите кто может каким образом "оживить" отчет, чтобы пользователь по нажатию правой клавиши мыши выдел перед собой набор данных, где фигурирует данная строка отчета.
ЗАРАНЕЕ БОЛЬШОЕ СПАСИБО!
Комментарии
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)];
После того как выяснил что запрос работает как нада можно разбираться почему не работает все остальное.