Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 09.12.2009, 23:23   #1
Irina_87
Пользователь
 
Регистрация: 16.11.2009
Сообщений: 42
По умолчанию Создание отчётов на печать с DBGrid в QuickReport

Нашла в Интернете код программы, которая делает такие действия, только мне выдает полно ошибок((( Пожалуйста подскажите, как сделать отчёт???
Irina_87 вне форума
Старый 09.12.2009, 23:38   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

http://www.qusoft.com/WebInfoPage.aspx?WebInfoID=623
mihali4 вне форума
Старый 10.12.2009, 00:27   #3
Irina_87
Пользователь
 
Регистрация: 16.11.2009
Сообщений: 42
По умолчанию

Что-то мне эта ссылка не очень помогла)) Может есть другая литература или источники???
Irina_87 вне форума
Старый 10.12.2009, 00:28   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Вы только "разжеванный" материал потребляете?
Думать - голова болит?
mihali4 вне форума
Старый 10.12.2009, 00:33   #5
Irina_87
Пользователь
 
Регистрация: 16.11.2009
Сообщений: 42
По умолчанию

Я как начинающий программист, точнее программист-лузер, думаю сначала над разжеванным материалом и понимаю, что делать.. А тогда можно над более сложным материалом подумать...)))
Irina_87 вне форума
Старый 10.12.2009, 00:37   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Не обижайтесь.
Давайте конкретно по справке КвикРепорта. Что для решения вашей проблемы непонятно?
Только давайте так - по-простому...
Вы вообще "банды" ставить умеете?
Если да, то в чем вопрос?
Ваша формулировка
Цитата:
Нашла в Интернете код программы, которая делает такие действия, только мне выдает полно ошибок((( Пожалуйста подскажите, как сделать отчёт???
не выдерживает никакой критики, ибо не несет смысла...
Весьма похоже на "пойди туда - не знаю куда, сделай то - не знаю что..."
Единственное понятное слово - DBGrid.
mihali4 вне форума
Старый 10.12.2009, 00:40   #7
Irina_87
Пользователь
 
Регистрация: 16.11.2009
Сообщений: 42
По умолчанию

Мне всё не понятно)))
В Интернете нашла следующий код:

Для начала создайте новую форму, назвав её TGridReport, и
поместите на неё TQuickRep. Переименуйте QuickRep в GridRep. Затем сделайте
следующию процедуру, которая получает в качестве параметра DBGrid:

Код:
procedure TGridReport.Preview(Grid: TDBGrid);
var
  i, CurrentLeft, CurrentTop : integer;
  BMark: TBookmark;
begin
  GridRep.Dataset:=Grid.DataSource.DataSet;

  if not GridRep.Bands.HasColumnHeader then
    GridRep.Bands.HasColumnHeader:=true;

  if not GridRep.Bands.HasDetail then
    GridRep.Bands.HasDetail:=true;

  GridRep.Bands.ColumnHeaderBand.Height:=Abs(Grid.TitleFont.Height) + 10;
  GridRep.Bands.DetailBand.Height:=Abs(Grid.Font.Height) + 10;
  CurrentLeft := 12;
  CurrentTop := 6;

  {Запись, на которой пользователь останавливается в DBGrid}
  BMark:=Grid.DataSource.DataSet.GetBookmark;
  {Запретим мерцание грида в процессе работы отчёта}
  Grid.DataSource.DataSet.DisableControls;
  try
    for i:=0 to Grid.FieldCount - 1 do
    begin
      if (CurrentLeft + Canvas.TextWidth(Grid.Columns[i].Title.Caption)) >
      (GridRep.Bands.ColumnHeaderBand.Width) then
      begin
        CurrentLeft := 12;
        CurrentTop := CurrentTop + Canvas.TextHeight('A') + 6;
        GridRep.Bands.ColumnHeaderBand.Height :=
        GridRep.Bands.ColumnHeaderBand.Height + (Canvas.TextHeight('A') + 10);
        GridRep.Bands.DetailBand.Height :=
        GridRep.Bands.DetailBand.Height + (Canvas.TextHeight('A') + 10);
      end;
      {Создадим заголовок отчёта при помощи QRLabels}
      with TQRLabel.Create(GridRep.Bands.ColumnHeaderBand) do
      begin
        Parent := GridRep.Bands.ColumnHeaderBand;
        Color := GridRep.Bands.ColumnHeaderBand.Color;
        Left := CurrentLeft;
        Top := CurrentTop;
        Caption:=Grid.Columns[i].Title.Caption;
      end;
      {Создадим тело отчёта при помощи QRDBText}
      with TQRDbText.Create(GridRep.Bands.DetailBand) do
      begin
        Parent := GridRep.Bands.DetailBand;
        Color := GridRep.Bands.DetailBand.Color;
        Left := CurrentLeft;
        Top := CurrentTop;
        Alignment:=Grid.Columns[i].Alignment;
        AutoSize:=false;
        AutoStretch:=true;
        Width:=Grid.Columns[i].Width;
        Dataset:=GridRep.Dataset;
        DataField:=Grid.Fields[i].FieldName;
        CurrentLeft:=CurrentLeft + (Grid.Columns[i].Width) + 15;
      end;
    end;

    lblPage.Left := bdTitle.Width - lblPage.Width - 10;
    lblDate.Left := bdTitle.Width - lblDate.Width - 10;

    {Далее вызовем метод предварительного просмотра из QuickRep}
    GridRep.PreviewModal; {либо, если желаете, то PreviewModal}

  finally
    with Grid.DataSource.DataSet do
    begin
      GotoBookmark(BMark);
      FreeBookmark(BMark);
      EnableControls;
    end;
  end;
end;
Причём он везде пишет мне ошибки.. Как переделать этот код под мою базу, под мои данные в DBGrid???
Или может есть другой код или описание действий по созданию отчётов??

Последний раз редактировалось mihali4; 10.12.2009 в 01:01.
Irina_87 вне форума
Старый 10.12.2009, 01:04   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Причём он везде пишет мне ошибки
Хотел отделаться привычным "экстрасенсы в отпуске"...
Но... Давайте по-порядку. Какие ошибки? Приведите их.
Потихоньку, конкретненько...
Разберемся. И доставим вам удовольствие от того, что и вы тоже разберетесь...
mihali4 вне форума
Старый 10.12.2009, 01:14   #9
Irina_87
Пользователь
 
Регистрация: 16.11.2009
Сообщений: 42
По умолчанию

ну во-первых, он пишет, что незнакомый идентификатор - Grid: TDBGrid
Irina_87 вне форума
Старый 10.12.2009, 01:47   #10
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Irina_87 Посмотреть сообщение
ну во-первых, он пишет, что незнакомый идентификатор - Grid: TDBGrid
Кто "он" ?
Поймите, трудно разбираться в коде, не имея его перед собой...
mihali4 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
печать содержимого dbgrid-? Evgenii БД в Delphi 4 07.05.2010 14:03
Печать DBGrid bbk_serg БД в Delphi 4 01.03.2009 12:09
DBGrid печать martik БД в Delphi 5 02.11.2008 10:11
Создание отчётов из (Oracle/SQL) LIBRA БД в Delphi 17 21.02.2008 11:34
DBGrid-печать... Дамир БД в Delphi 8 08.04.2007 23:24