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

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

TOOP 16.12.2012 04:53

Внешний отчет
 
Подскажите как можно сделать в данном отсчете так, чтобы выводились строчки только с отрицательным объемом топлива.

SK 16.12.2012 10:11

Использовать обработчик OnBeforePrint и не выводить строки, которые не соответствуют Вашему условию.

Нажмите для просмотра содержимого...



TOOP 17.12.2012 06:31

Вложений: 1
При двойном по пустому полю onbeforeprint выскакивает ошибка. Скриншот во вложении.

SK 17.12.2012 07:21

Цитата:

Сообщение от TOOP (Сообщение 45615)
При двойном по пустому полю onbeforeprint выскакивает ошибка. Скриншот во вложении.

Проверьте вкладку "Код", там должно быть следующее (если никто не лазил):
Код:

var
  Days: array[1..7] of string;
                   
procedure FastReportOnStartReport(Sender: TfrxComponent);
begin
  BDEQuery2.Sql.Clear();
    BDEQuery2.Sql.Add('SELECT t1.S_LATITUDE as LAT, t1.S_LONGITUDE as LON, t1.S_ADDRESS as ADDR, ' +     
    't1.S_REAL_TIME as S_TIME, t1.E_REAL_TIME as E_TIME, t1.REAL_CONT as CONT, t1.T1_E_LEVEL as E_LEVEL, t1.T1_S_LEVEL as S_LEVEL, ' +                 
    ' t2.NUMBER as Number1, t2.id as id1 FROM ''temp0.dbf'' t1 LEFT JOIN ''Соответствие.dbf'' t2 on t1.DRIVER_ID = t2.id order by S_TIME');
  BDEQuery2.Open();                       
end;
 
begin
  Days[1] := 'Воскресенье';
  Days[2] := 'Понедельник';
  Days[3] := 'Вторник';
  Days[4] := 'Среда';
  Days[5] := 'Четверг';
  Days[6] := 'Пятница';
  Days[7] := 'Суббота'; 
end.

После двойного клика, вкладка "Код" должна выглядеть так:
Код:

var
  Days: array[1..7] of string;
                   
procedure FastReportOnStartReport(Sender: TfrxComponent);
begin
  BDEQuery2.Sql.Clear();
    BDEQuery2.Sql.Add('SELECT t1.S_LATITUDE as LAT, t1.S_LONGITUDE as LON, t1.S_ADDRESS as ADDR, ' +     
    't1.S_REAL_TIME as S_TIME, t1.E_REAL_TIME as E_TIME, t1.REAL_CONT as CONT, t1.T1_E_LEVEL as E_LEVEL, t1.T1_S_LEVEL as S_LEVEL, ' +                 
    ' t2.NUMBER as Number1, t2.id as id1 FROM ''temp0.dbf'' t1 LEFT JOIN ''Соответствие.dbf'' t2 on t1.DRIVER_ID = t2.id order by S_TIME');
  BDEQuery2.Open();                       
end;
 
procedure MasterData3OnBeforePrint(Sender: TfrxComponent);
begin

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


TOOP 17.12.2012 11:54

Все правильно была ошибка в коде исправил, заработало. Но конечный результат так и не достигнут.
procedure MasterData3OnBeforePrint(Sender: TfrxComponent);
begin
if Copy(<Memo22>) >0 then
MasterData3.Visible := True else
MasterData3.Visible := False;
end;
Посмотрите пожалуйста тут наверно явно где-то я ошибся.

SK 17.12.2012 12:17

TOOP, функция Copy (string, x, y) - возвращает y символов строки string начиная с символа номер x
Она не подходит для Вашей задачи.

Скорее это:
Код:


procedure MasterData3OnBeforePrint(Sender: TfrxComponent);
begin
  if StrToFloat(Memo22.Text) > 0 then
    begin
      MasterData3.Visible := True;
    end;
  else
    begin
      MasterData3.Visible := False;
    end;
end;

Если значение в ячейке целое число, можно использовать StrToInt(Memo22.Text)

Отпишитесь по результату.

TOOP 19.12.2012 04:38

Так и не работает, что то с типом чисел. Числа там дробные с 1 знаком после запятой целое часть не превышает 4 символов.
Выводилась ошибка убрал после первого END точку с запятой.

стала выводится вот эта

SK 19.12.2012 06:55

Не видим, что выводится.

TOOP 19.12.2012 07:41

Вложений: 2
Ошибки по порядку

SK 19.12.2012 10:00

TOOP, отчет какой ?


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

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