Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Лабораторная работа № 5.
Создание отчетов к БД в Delphi
Отчеты БД – это бумажные документы, формируемые программой работы с БД. Отчет является конечным результатом работы с БД. Данные, содержащиеся в отчете, являются выходной информацией информационной системы. Как правило, эти данные отформатированы в соответствии с требованиями международных, государственных, межотраслевых и отраслевых стандартов, стандартов предприятия и т.п.
Для создания отчетов в Delphi традиционно использовались либо стандартные компоненты Delphi, расположенные на странице QReport, либо компоненты сторонних производителей – компоненты семейств RaveReport и FastReport. Стандартные компоненты имеют один существенный недостаток: отчеты, формируемые с их помощью, имеют свой собственный формат, который «не понимают» программы Microsoft Word и Excel. Отчеты такого типа можно экспортировать во внешние файлы типов *.txt (при этом, разумеется, почти все форматирования теряются) и *.html (качество html –кода также оставляет желать лучшего). Компоненты семейств RaveReport и FastReport способны экспортировать отчет в файл типа *.rtf , распознаваемый подавляющим большинством текстовых процессоров. К сожалению, лицензионные ограничения Turbo Delphi не допускают установки этих компонентов (через IDE!), а страница Qreport отсутствует.
С приемами создания отчетов средствами компонентов FastReport можно познакомиться ниже, сейчас же рассмотрим полностью ручное создание отчета.
5.1 Формирование отчетов «вручную»
Здесь же мы рассмотрим радикально отличающийся способ создания отчетов – генерация *.doc, *.rtf, *.html файлов вручную. Для первых двух форматов требуется использовать компоненты TWordApplication и TWordDocument закладки Servers палитры компонентов (главный недостаток, в том, что надо знать не меньше чем десятка полтора свойств этих компонентов и их методов). Для ручного формирования *.html документа достаточно знать только три-четыре функции работы с файлами, одну API функцию Windows и, разумеется, основные тэги языка разметки гипертекста - html. При примерно одинаковых затратах времени на написание программного кода по этим двум вариантам, вариант с html выполняется на порядок быстрее, чем формирование *.doc или *.rtf файла. Рассмотрим программный код, формирующий такой отчет как «Экзаменационная ведомость» в формате *.html.
Добавим на главной форме кнопку «Экзаменационная ведомость», два компонента CheckBox для управления настройками отчета при распечатке. В обработчике нажатия кнопки напишем следующий код:
procedureTSDIAppForm.Button1Click(Sender: TObject);
varF: textFile;
h: hwnd; //переменная описывающая динамически открываемое окно
s, ball,chislo: string;
i:integer;
begin
assignFile(f,'C:\temp\vedom1.html'); // {*} создадим временный html-файл
rewrite(f); //Откроем его на запись
With DataModule1 do
begin
TempSQL.Close;
TempSQL.SQL.Clear;
TempSQL.SQL.Add('Select * from Session_Result ');
TempSQL.SQL.Add(' where (Dis_shifr =' + chr($27)+ Disc_table.FieldByName ('Dis_Shifr').value +chr($27)+')');
TempSQL.SQL.Add(' and (forma_otchetnosti ='+chr($27)+ SDIAppForm.Otchetnost.Text +chr($27)+')');
TempSQL.SQL.Add(' and (st_bilet in ');
TempSQL.SQL.Add('(Select Student.st_bilet from student where gruppa='+chr($27) +SDIAppForm.GrName.Text +chr($27)+'));');
// SDIAppForm.Memo1.lines.Assign(TempSQL.SQL);
TempSQL.Open;
TempSQL.First;
//строки ниже формируют заголовок html-документа.
// т.е. шапку ведомости
Write(f,'<html><title> экзаменационная ведомость </title>');
write(f,'<body><h2> <center>Федеральное агентство по образованию<br> ');
write(f,'Московский государственный университет <br> ');
write(f,'Приборостроения и информатики. <br> ');
write(f,'');
write(f,' </h2> ');
write(f,' <h3> Ведомость ('+otchetnost.Text+')<br>');
write(f,' по дисциплине: '+dm1.Disc_table.FieldByName('Dis_name').Value+ '<br>');
write(f,' преподаватель: '+TempSQL.FieldByName('teacher').value +'<br> </h3>');
write(f,'</center><br>');
//рисуем шапку таблицы
if NoGrid.Checked then //без прорисовки сетки
s:='<table border="0"> <tr><td width="5%"> №</td>'
else // и с таковой
s:='<table border="1"> <tr><td width="5%"> №</td>';
s:=s+'<td width="40%"> ФИО</td>';
s:=s+'<td width="10%"> № ст. билета</td>';
s:=s+'<td width="15%"> Оценка</td>';
s:=s+'<td width="15%"> Подпись</td>';
s:=s+'<td width="15%"> Дата</td></tr>';
write (f,s);
i:=1; // первый студент в списке
whilenotTempSQL.Eofdo // пока не закончилось содержимое запроса
begin
if empty.Checked then
Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.