Проверка датасета на наличие записей

OrmuzOrmuz Самара
отредактировано January 2017 Раздел: FastScript
Приветствую.
Использую следующий код:
procedure DetailData1OnBeforePrint(Sender: TfrxComponent);
begin
  if <Request."GroupCode"> = 77 then
    begin                         
    DetailData1.Visible := True;
    end            
  else
    begin              
    //Showmessage ('В данной заявке нет нужных данных');           
    DetailData1.Visible := False;  
    end;                
end;
Код отлично работает: если условие проходит, то он выводит нужные записи на печать, и наоборот.
Но мне еще необходимо следующее: если, вдруг, в датасете вообще нет нужных записей (нужные, у которых <Request."GroupCode"> = 77) , то выводить сообщение для пользователя об этом
procedure frxReportOnStartReport(Sender: TfrxComponent);
var
  DS: TfrxDataSet;
begin
  DS := Report.GetDataSet('Request_SamplesContainers');
  DS.First;
  while not DS.Eof do
  begin
  showmessage (1);
  if <Request."GroupCode"> <> 77 then
    begin                         
    Showmessage ('В данной заявке нет нужных данных');           
    DetailData1.Visible := False;
    end    
  else
    begin
    Showmessage (3);           
    DetailData1.Visible := True;
    end;              
  DS.Next;
  end;
end;
Пытался реализовать так, но он не работает даже как предыдущий, в ДетайлДата1 выводит все подряд. Толком в циклах не разбираюсь и не могу нагуглить: как проверить Датасет на наличие записей и по итогу вывести сообщение.
Спасибо.

Комментарии

  • OrmuzOrmuz Самара
    отредактировано January 2017
    Решил сам. Если кому-то интересно: использовал оба кода
    procedure DetailData1OnBeforePrint(Sender: TfrxComponent);
    begin
      if <Request"GroupCode"> = 77 then
        begin                         
        DetailData1.Visible := True;
        end            
      else
        begin              
        DetailData1.Visible := False;  
        end;                
    end;    
    procedure frxReportOnStartReport(Sender: TfrxComponent);
    var
      DS: TfrxDataSet;
      Text: string;
    begin
      Text := '';
      DS := Report.GetDataSet('Request');
      DS.First;
      while not DS.Eof do
      begin
      if <Request"GroupCode"> = 77 then
      Text := Text + '1'                         
      else
        begin                                         
          Text := Text + ''
        end;              
      DS.Next;
      end;
      if Text = '' then
        begin                         
          Showmessage ('В данной заявке нет нужных данных');  
          Page1.Visible := False;
        end;                
    end;
    
    Буду рад увидеть предложения по улучшению кода, если он какой-то не такой :)

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

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