Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Как распечатать на принтере таблицу DBGrid1


Автор: Sett 20.12.2004, 12:01
Друзья мои помогите, как можно распечатать базу базу данных т.е. DBGrid1-таблицу. Ни как не пойму. Если можно подскажите как можно оформить распечаку на листе т.е. клеточки раставить ну чтоб красиво было. Помогите буду очень благодарен!


Это пример, как хотелось чтоб так выгладело на листе примерно,
ну там можно было чтоб изменить форму линий.

| Ф.И.О | пол | возраст | размер головы |
|---------------------------------------------------------------------------
| Петечкин В.В | муж. | 23 | 61 |
|--------------------------------------------------------------------------|
| Селёдкин Р.Р | муж | 21 | 12 |
| | жен | 97 | 76 |

Если можно дайте пример по проще, я самоучка, боюсь в сложном
коде не разбирусь.

СПАСИБО ДРУЗЬЯ МОИ!!!

Автор: Akella 20.12.2004, 14:05
Ставишь библиотеку EhLib, там есть компонента для печати DBGrid`а
в противном случае пиши цикл по БД
типа DBGrid1.DataSource.DataSet - в текстовый файл, можно в TRichEdit или TMemo

что-то типа этого, только поменяй TStringGrid на таблицу БД
Код

procedure TfmMain.StringGridToText(sg:TStringGrid);
var
u,iCol,iRow:integer;
s:string;
begin
For iRow:=1 to sg.RowCount-1 do begin
  For iCol:=0 to sg.ColCount-1 do begin
    sg.Cells[iCol,iRow]:=TrimRight(sg.Cells[iCol,iRow]);
    sg.Cells[iCol,iRow]:=TrimLeft(sg.Cells[iCol,iRow]);
    if (iCol=sg.ColCount-1)  then//чтобы не добавлять последний tab
      s:=s+sg.Cells[iCol,iRow]
    else begin
      if iCol=0 then s:=s+sg.Cells[iCol,iRow]+' ' else
        s:=s+sg.Cells[iCol,iRow]+#9;
    end;//else
  end;//For o:=0 to sg.RowCount-1 do begin
  re1.Lines.Add(s);
  s:='';
end;//For i:=0 to sg.ColCount-1 do begin
  re1.Lines.Add('----------------------------------------------');
//очистка StringGrid
For u:=0 to sg.RowCount-1 do
 sg.Rows[u].Clear;
end;//proc



попробуй
Код

procedure TfmMain.DBGridToText(dbg:TDBGrid,re:TRichEdit);
var
u,iCol,iRow:integer;
s:string;
begin
For u:=0 to dbg.DataSource.DataSet.RecordCount-1 do begin
 s:=dbg.DataSource.DataSet.Fiels[0].AsString+#9+//+Tab для выравнивания
       dbg.DataSource.DataSet.Fiels[1].AsString+#9+
       dbg.DataSource.DataSet.Fiels[2].AsString+#9+
 re.Lines.Add(s);
 s:='';
end;//for
re.Print(DateTimeToStr(now));
end;//proc



можно ставить генераторы отчетов, Rave слишком сложный,
а вот родной QReport - в самый раз, можно FastReport, да их много

Автор: Sett 20.12.2004, 16:39
dsergey.Спасибо дружище, сегодня же после работы попробую как ты говоришь.

Автор: Sett 24.12.2004, 20:59
Друзья мои, а есть ещё какие нибудь способы?

Автор: Akella 30.12.2004, 15:58
Цитата
Друзья мои, а есть ещё какие нибудь способы?

Конечно есть smile

Автор: Make 6.1.2005, 22:36
dsergey мож сорс кинешь, очень прошу, я пробовал, что-то у меня не получается !
или на мыло hasan23сабакаrambler.ru
Спасибо !

Автор: Akella 8.1.2005, 11:18
Ставишь EhLib 3.5 (бесплатные компоненты для жителей бывшего ЧиЧиЧиПи, как сказал М.Задорнов)

Там есть компонента PrintGrid - больше тебе ничего не нужно. Она все сама делает, и печать и предпросмотр. Библиотека из разряда "must have" smile
Главное подключить ее к сетке DBGrid. Как изменяешь сетку и будет распечатан отчет, т.е. шрифты, ширина столбцов, заголовки. У этой компоненты еще есть свойсва типа текст до таблицы и после таблицы, текст до отчета и после отчета (TRichEdit), так, что даже на цветном принтере можно выкру smile тасы делать.

Автор: Bes 7.4.2005, 09:40
По-моему с помощью обычного квикрепорта можно вывести таблицу, тем более из базы данных и никаких циклов не надо.

Автор: Петрович 7.4.2005, 23:37
Можно конечно и EhLib. Сам им пользуюсь smile. Но, считаю что надо все-таки освоить хоть какой нибудь репортер. Думаю Вам в последствии захочется не только грид выводить. Все-таки репортеры для вывода более приспособлены чем PrintGrid. PrintGrid это так, побыстренькому вывести.
Лично я уже давно пользуюсь FastReport, но, есть и много других хороших.

Автор: DimW 8.4.2005, 07:59
FastReport- рулит!!!!

Автор: Marriage 11.4.2005, 22:14
поставь DxDbGrid. Там по-моему есть SaveToHTML, exel и пр.
А потом открываешь в ворде и печатаешь.

Автор: zЫrka 19.4.2005, 05:15
А мне нужно что-то вроде Report-компонента (т.е. для вывода таблицы с данными), но не из базы данных, а моей собственной таблицы - генерируемой на лету из двухмерного массива строк.
С базами данных работать не умею. Мне нужно просто чтобы столбики и строки были красиво автоматически отформатированы на листе. Есть такие компоненты?

Автор: Петрович 19.4.2005, 06:15
to zЫrka
Цитата(DimW @ 8.4.2005, 08:59)
FastReport- рулит!!!!


Автор: DimW 19.4.2005, 07:42
Могу дать url где можно скачать FastReport, но т.к. он скорей всего ворованный ссылку в форум не выложу...

вот мыло: [email protected] (в теме укажите "FastReport")

надеюсь правила я не нарушил.... smile

Автор: zЫrka 19.4.2005, 21:37
А у меня на cd-диске есть .-)

Спасибо, бум смотреть

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)