Электронный документооборот в системе учета выдачи и возврата книг в библиотеке - Курсовая работа

бесплатно 0
4.5 148
Исследование особенностей разработки программы на основе Microsoft Aсcess 2003. Создание главной формы проекта и механизма экспорта данных в приложение Microsoft Word на основе компонентов OLE Automation. Описания реализации задачи при помощи Delphi.


Аннотация к работе
Появляется таблица - по умолчанию имя таблицы «Таблица1», а в нашем случае «Список студентов», изображенная на рисунке 2 приложения 1 с полями: «FAMILYA», «NAME», «OTCH.», «NUMBER», «ADR», «NAME_BOOK», «DATA_REG», «NUMB_BOOK». Аналогично описанному выше создаем еще одну таблицу с именем «Номер», в которой будут содержаться данные об изучаемых предметах с полями «NUMBER» - тип поля «Счетчик», «NAME» - тип поля «Текстовый». Создаем еще одну таблицу «Учет Выдачи», которая изображена на рисунке 4 приложения 1, в которой будут содержаться с полями «Номер» - тип поля «Счетчик», «ID_BOOK» - тип поля «Текстовый», размер поля 50, «PICATEL» - тип поля «Текстовый», размер поля 50, «REITING» - тип поля «Текстовый», размер поля 50. WORDDOCUMENT1.Tables.Item(1).cell(i,j).Borders.Enable:=1; //рисуем границы ячейки таблицы if i <COLROWS then WORDDOCUMENT1.Tables.Item(1).cell(i 1,j).Range.INSERTAFTER(Query1.Fields[j-1].ASSTRING); //Вводи данные из БД end; //Пример применения диапазона "Range" для выравнивания двух абзацев из четырех ранее введенных--------------Start1:=WORDDOCUMENT1.Paragraphs.Item(1).Range.start; //начальный абзацВ проекте были получены навыки создания базы данных в Microsoft Access.Абонент _________________, проживающий по адресу: ________, зарегистрированный _____ числа, получил на руки книгу ___________ Зарегистрированный : __________ числа, выдать след книгу________________________ Абонент Иванов Петр Петрович, проживающий по адресу: Халтурина 8, кв 58 зарегистрированный 03.05.2006 числа, Получил на руки книгу Мертвые души Зарегистрированный : 03.05.

Введение
Электронный документ в целом в нынешнее время приобретает все более важное значение, как один из важнейших компонентов современного фонда библиотеки. Это обусловлено тем, что информационные технологии все глубже проникают во все сферы жизнедеятельности человека. И для библиотеки, как организации, осуществляющей хранение и передачу информации во времени и пространстве, электронный документ является очень важным компонентом, как носитель информации. И очень важно определить место электронного документа в структуре библиотеки в целом, и в библиотечном фонде в частности.

Одной из главных проблем, стоящей перед библиотечными фондами, является трудность определения сущности понятия "электронный документ" и применимость данного определения в сфере фонда библиотек. Очень часто сотрудники библиотеки испытывают трудности при определении того какой именно формой электронных документов следует комплектовать фонд, для последующего учета, хранения и передачи.

В настоящее время человечество активно осваивает новую коммуникативную среду, в которой формируются цифровые аналоги информационных массивов, сохраняемых в традиционной среде отлаженной системой библиотек и архивов. На данный момент приходится признать отсутствие хоть какой-то системности в представлении электронных документов, их источниках, легитимности, описании, качестве. Нестабильность этих коллекций имеет множество негативных сторон, одна из которых - невозможность точной ссылки, что делает научные ресурсы, например, пригодными только для ознакомления. Считается, что система поисковых машин достаточно надежна, но они работают только по распознанным текстам. И совсем никто не несет ответственности за сохранность текстов на более или менее серьезный промежуток времени.

Поскольку в электронной среде мы должны вновь создавать механизмы стандартизации, сохранения и трансляции тех электронных документов, которые по своим характеристикам могут быть отнесены к объектам национального научного и культурного наследия, то для этого требуется система с совершенно определенными качествами, все аналоги которой уже заложены в библиотечной системе. И ее принципы должны быть перенесены и Интернет и адаптированы под новые коммуникации.

В “доэлектронную эру" библиотеки выполняли роль “второго контура" в документном пространстве, поскольку сам документный поток формируется издательствами, которые определяют и все стандарты того, что рассматривается в качестве книги или периодического издания. Библиотеки, опираясь на социальную значимость документов, принимали решение только о том, какие из них должны включаться в фонды. Сейчас библиотеки не только сами формируют электронные документы (в рамках создания электронных библиотек, но и должны определиться, какова их зона ответственности за кумуляцию, сохранение и предоставление пользователям электронных ресурсов, создаваемых другими организациями. На решение этой проблемы направлены усилия специалистов в различных странах.

Для сохранения единства документно-информационного пространства в основу комплектования фондов электронных библиотек, должен быть положен принцип преемственности подходов, правил и методик, принятых в библиотечной практике. Поэтому необходимо выделить из всего множества электронных ресурсов те объекты, которые по своим существенным признакам могут быть отнесены к объектам библиотечного хранения.

Несмотря на то, что уже есть большое количество определений понятия “электронный документ”, “электронная книга”, “электронный ресурс” ни одно из них не позволяет подойти к выстраиванию типологических характеристик, без которых невозможно сформулировать подходы к их собиранию, государственному библиографическому учету, каталогизации и длительному сохранению.

Очевидно, что из всего многообразия в библиотеках собираются документы, имеющие характер портативных, неаутентичных, информационно значимых самодостаточных, прошедших процедуру обнародования (опубликования, издания). Если в дальнейшем в Интернет возобладают другие подходы, то решения могут быть скорректированы, так же как не остается неизменной практика архивного и библиотечного дела.

Рассмотрим, что стоит понимать под терминами электронный и машиночитаемый документ.

В профессиональной печати (как библиотечной, так и отражающей проблемы информатики) часто встречается термин "машиночитаемый документ", что означает, документ, пригодный для автоматического считывания содержащейся на нем информации. При этом имеется в виду именно ЭВМ. Однако машиночитаемый по логике самого слова означает, что он читается при помощи машины и совсем не обязательно электронной. Микрофиша с большим сжатием - тоже машиночитаемый документ, поскольку ее невозможно прочесть без помощи аппарата.

Кроме того, история свидетельствует, что счетно-перфорационная машина создана в США во второй половине XIX в. и впервые использована для подсчета результатов переписи населения в 1890 г. В России машиночитаемые документы появились также в связи с необходимостью обработки данных всеобщей переписи населения 1897 г. На основе листов первичного учета было заполнено около 126 млн 22-колонных перфокарт, которые поступили в специальный архив Центрального статистического комитета, а затем после опубликования итогов переписи в 1905 г. Уничтожены.

Земсков А.И. пишет в своем научном труде.

Проводившаяся в нашей стране в 1920-х гг. рационализация делопроизводства во многом основывалась на использовании перфокарт. Они применялись на машиносчетных станциях и машиносчетных установках и имели справочный аппарат в виде таблиц кодирования и контрольных табуляграмм.

Таким образом, определения терминов электронный документ и машиночитаемый документ в современной трактовке нельзя признать вполне удовлетворительными. Помимо собственно уточнения эти понятия нуждаются и в разработке типологии, без которой очень трудно решать вопросы формирования библиотечных фондов.

Но пока специалисты не выработали систему понятий, описывающих электронные ресурсы, будем условно считать оптические компакт-диски электронными изданиями, а говоря об электронных документах, будем иметь в виду те, которые существуют только на жестком диске компьютера и серверах, т.е. не имеют отдельно взятого материального носителя.

Этапы разработки программы.

Выражение "написать программу" отражает только один из этапов создания компьютерной программы, когда разработчик программы (программист) действительно пишет команды (инструкции) на бумаге или при помощи текстового редактора.

Программирование - это процесс создания (разработки) программы, который может быть представлен последовательностью следующих шагов: 1. Спецификация (определение, формулирование требований к программе).

2. Разработка алгоритма.

3. Кодирование (запись алгоритма на языке программирования).

4. Отладка.

5. Тестирование.

6. Создание справочной системы.

7. Создание установочного диска (CD-ROM).

С точки зрения пользователя, база данных - это программа, которая обеспечивает работу с информацией. При запуске такой программы на экране, как правило, появляется таблица, просматривая которую пользователь может найти интересующие его сведения. Если система позволяет, то он может внести изменения в базу данных: добавить новую информацию или удалить ненужную.

С точки зрения программиста, база данных - это набор файлов, содержащих информацию. Разрабатывая базу данных для пользователя, программист создает программу, которая обеспечивает работу с файлами данных.

В настоящее время существует достаточно большое количество программных систем, позволяющих создавать и использовать локальные (DBASE, FOXPRO, Access, Paradox) и удаленные (Interbase, Oracle, Sysbase, Infomix, Microsoft SQL Server) базы данных.

В состав Delphi входят компоненты, позволяющие создавать программы работы с файлами данных, созданными различными системами: от DBASE до Infomix и Oracle. Delphi также позволяет программисту, используя утилиту Borland Database Desktop, создавать файлы баз данных в различных форматах.

Классификация баз данных

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

Задание

Создать программу по электронному документообороту в системе учета выдачи и возврата книг в библиотеке.

Необходимо создать таблицы базы данных в Microsoft Access, описать структуру созданных таблиц. В Delphi необходимо создать главную форму проекта и механизма экспорта данных в приложения Microsoft Word, Microsoft Excel на основе компонентов OLE Automation - WORDAPPLICATION, WORDDOCUMENT, EXCELAPPLICATION, EXCELWORKBOOK, EXCELWORKSHEET, EXCELCHART.

Реализация задачи при помощи программы Microsoft Acess 2003

Создание необходимых таблиц

Запускаем программу. Справа откроется меню «Создание файла». Выбираем из списка «Новая база данных» при этом программа предложит сохранить файл самой базы *.mdb на диск в соответствующем окне. Необходимо указать путь для сохранения этого файла и нажать кнопку «Сохранить». В окне *.mdb, изображенном на рисунке 1 в приложении 1 выбираем в объектах «Таблицы», затем «Создание таблицы в режиме констурктора». Появляется таблица - по умолчанию имя таблицы «Таблица1», а в нашем случае «Список студентов», изображенная на рисунке 2 приложения 1 с полями: «FAMILYA», «NAME», «OTCH.», «NUMBER», «ADR», «NAME_BOOK», «DATA_REG», «NUMB_BOOK». В нашем случае таблица называется «Список абонентов», в которой будут содержаться данные по абонентам. Далее заполняем поля. В поле «Имя поля» вводим «FAMILYA», в поле «Тип данных» выбираем «Текстовый». В свойствах поля выбираем размер поля 50, индексированное поле. Аналогично заполняем поля таблицы для имен «NAME» - текстовое, «OTCH.» - текстовое, «NUMBER» - текстовое, «ADR» - текстовое, «NAME_BOOK» - текстовое, «DATA_REG ET» и «NUMB_BOOK» - тип данных «Числовой», длинное целое.

Аналогично описанному выше создаем еще одну таблицу с именем «Номер», в которой будут содержаться данные об изучаемых предметах с полями «NUMBER» - тип поля «Счетчик», «NAME» - тип поля «Текстовый».

Создаем еще одну таблицу «Учет Выдачи», которая изображена на рисунке 4 приложения 1, в которой будут содержаться с полями «Номер» - тип поля «Счетчик», «ID_BOOK» - тип поля «Текстовый», размер поля 50, «PICATEL» - тип поля «Текстовый», размер поля 50, «REITING» - тип поля «Текстовый», размер поля 50.

Шаблоны формируемых документов приведены на рисунках 5 и 6 приложения.

Образцы заполненных формируемых документов приведены на рисунках 7 и 8 приложения.

Схемы данных с информацией о формировании документов приведены на рисунках 9 и 10 приложения.

Реализация задачи при помощи Delphi

Для реализации в среде Delphi создаем пустой проект, изображенный на рисунке 11 приложения 1. Далее с панели инструментов BDE перетаскиваем на форму компонент Query(DBTABLES). Для того чтобы из таблицы, ранее созданной в СУБД Microsoft Access можно было использовать данные в приложении на Delphi нам необходимо их экспортировать. В данном случае формат экспорта DBF.

У компонента Query(DBTABLES) в Object Insperctor, устанавливаем свойства DATABASENAME в папку с экпортированным файлом DBF=C:\project1, свойство SQL, устанавливаем select * from абоненты.dbf, для запроса данных их таблицы.

Затем добавляем на форму компоненты: С панели управления Servers: MS Word MS Excel

WORDAPPLICATION - работа с приложением MS Word EXCELAPPLICATION - работа с приложением MS Excel

EXCELWORKBOOK - работа с книгой MS Excel

WORDDOCUMENT - работа с документом MS Word EXCELWORKSHEET - работа с листом книги MS Excel

EXCELCHART - работа с диаграммой

Они служат для взаимодействия Delphi c Excel и Word и используются для построения документов справочной информации и типичных документов.

С панели управления Data Acces добавляем компонент DATASOURCE(DB)

У компонента DATASOURCE(DB) в Object Insperctor, устанавливаем свойства DATASET равным Query1.

С панели управления Data Controls добавляем компонент Dbgrid(Dbgrids)

У компонента Dbgrid(Dbgrids) в Object Insperctor, устанавливаем свойства DATASOURCE равным DATASOURCE1.

С панели управления Standart добавляем компоненты: 3 компонента Button

1 компонент GROUPBOX в него добавляем 2 компонента Label и 2 компонента STATICTEXT с панели Additional.

Результат проектирования и размещения компонентов на форме приведен на рисунке 12 приложения 1.

Для подключения запроса используется Button1, для нее создаем событие по клику: procedure TFORM1.Button1Click(Sender: TOBJECT);

begin

Query1.Active:=true;

end;

Создаем событие для Dbgrid DBGRID1CELLCLICK: procedure TFORM1.DBGRID1CELLCLICK(Column: TCOLUMN);

begin

STATICTEXT2.Caption:= Query1.fieldbyname("FAMILYA").ASSTRING; //Показываем краткое содержание текущей записи

STATICTEXT3.Caption:= Query1.fieldbyname("NUMBER").ASSTRING; //Показываем краткое содержание текущей записи

NOMCLIENT:=Query1.RECNO; //фиксируем номер текущей записи для последующей работы end;

Button3 формирует файлы Excel и Word.

Подключаемся к Word и делаем базовую настройку листа: WORDAPPLICATION1.Connect;

//Загрузка существующего файла Word doc1:="C:\project1\pr1.doc"; //открыть существующий документ

WORDAPPLICATION1.Documents.Open(doc1,EMPTYPARAM, EMPTYPARAM, EMPTYPARAM,EMPTYPARAM, EMPTYPARAM, EMPTYPARAM, EMPTYPARAM, EMPTYPARAM, EMPTYPARAM,EMPTYPARAM, EMPTYPARAM, EMPTYPARAM,EMPTYPARAM,EMPTYPARAM);

WORDDOCUMENT1.CONNECTTO(WORDAPPLICATION1.ACTIVEDOCUMENT);//Соединяемся с активным документом

//Настроим исходные параметры документа WORDDOCUMENT1.PAGESETUP.Orientation:=0; //ориентация страницы

WORDDOCUMENT1.PAGESETUP.PAPERSIZE:=7; //формат А4

//Поля (2,54 см - 72 точки)

WORDDOCUMENT1.PAGESETUP.LEFTMARGIN:=25; //левое

WORDDOCUMENT1.PAGESETUP.RIGHTMARGIN:=70; //правое

WORDDOCUMENT1.PAGESETUP.TOPMARGIN:=70; //верхнее

WORDDOCUMENT1.PAGESETUP.BOTTOMMARGIN:=70;//нижнее

WORDDOCUMENT1.PAGESETUP.TEXTCOLUMNS.SETCOUNT(1); //колво колонок в тексте - 1

Формируем первую страницу, на которой расположена таблица со справочными данными: Query1.Active:=true;//обращаемся к БД

Query1.First; //БД - на 1 запись

COLROWS:=Query1.RECORDCOUNT 1;//задаем колво строк будущей таблицы Word по таблице БД

COLCOLUMNS:=Query1.FIELDCOUNT; //задаем колво столбцов будущей таблицы Word по таблице БД

//Вставляем таблицу

Range1:=WORDDOCUMENT1.Paragraphs.Last.Range; //задаем местоположение в документе - после последнего параграфа

WORDDOCUMENT1.Paragraphs.Item(WORDDOCUMENT1.Paragraphs.Count).Alignment:=1; //выравнивание

WORDDOCUMENT1.Tables.Add(Range1,COLROWS,COLCOLUMNS,EMPTYPARAM, EMPTYPARAM);//задаем размеры таблицы

WORDDOCUMENT1.Tables.Item(1).ALLOWAUTOFIT:=true;//разрешение автонастройки таблицы

WORDDOCUMENT1.Tables.Item(1).AUTOFITBEHAVIOR(2); //автоподбор размера по ширине окна (1-по содержимому)

//Рисуем границы таблицы по ячейкам и заполняем их из БД for i:=1 to COLROWS do //строки begin for j:=1 to COLCOLUMNS do //столбцы begin

WORDDOCUMENT1.Tables.Item(1).cell(i,j).Range.Font.Color:=CLGRAY; //форматируем цвет шрифта

WORDDOCUMENT1.Tables.Item(1).cell(i,j).Borders.Enable:=1; //рисуем границы ячейки таблицы if i < COLROWS then WORDDOCUMENT1.Tables.Item(1).cell(i 1,j).Range.INSERTAFTER(Query1.Fields[j-1].ASSTRING); //Вводи данные из БД end;

Query1.Next; //следующая запись БД end;

//Заполняем строку заголовков for j:=1 to COLCOLUMNS do begin with WORDDOCUMENT1.Tables.Item(1).cell(1,j).Range.Font do //Форматируем шрифт для названий колонок таблицы begin

Size:=10;

Name:="ARIALCYR";

Color:=CLBLUE;

Bold:=1;

Italic:=1;

end;

WORDDOCUMENT1.Tables.Item(1).cell(1,j).Range.INSERTAFTER(Query1.Fields[j-1].DISPLAYNAME); //Вводим названия полей БД

//WORDDOCUMENT1.Tables.Item(1).cell(1,j).Range.AUTOFORMAT;

end;

Создаем вторую страницу, на которой располагается справка о том, что человек является абонентом библиотеки и номером книг: Razd:=WDSECTIONNEWPAGE;

Range1:=WORDDOCUMENT1.Paragraphs.Last.Range;

WORDDOCUMENT1.Sections.Add(EMPTYPARAM,Razd); // текущая секция документа отделена разрывом

//Вставка текста - создание типового документа

//Вставка 3 пустых абзацев, курсор в позиции последнего WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

//-----------------------------------------------------------

//Пример применения диапазона "Range" для выравнивания двух абзацев из четырех ранее введенных -------------- Start1:=WORDDOCUMENT1.Paragraphs.Item(1).Range.start; //начальный абзац

End1:=WORDDOCUMENT1.Paragraphs.Item(2).Range.end_; //конечный абзац

WORDDOCUMENT1.Range(Start1,End1).Paragraphs.Alignment:=2; //выравнивание вправо

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM); //добавить абзац, курсор в его позиции

WORDDOCUMENT1.Paragraphs.Item(WORDDOCUMENT1.Paragraphs.Count).Alignment:=2; //выравнивание текущего абзаца вправо

WORDDOCUMENT1.Range.INSERTAFTER("Для представления"); //вводим текст

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM); //добавить абзац, курсор в его позиции

WORDDOCUMENT1.Paragraphs.Item(WORDDOCUMENT1.Paragraphs.Count).Alignment:=2; //выравнивание текущего абзаца вправо

WORDDOCUMENT1.Range.INSERTAFTER("Для внутреннего использования); //вводим текст

//Вставка 3 пустых абзацев, курсор в позиции последнего------ WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Item(WORDDOCUMENT1.Paragraphs.Count).Alignment:=1; //выравнивание по центру

WORDDOCUMENT1.Range.INSERTAFTER("СПРАВКА"); //вводим текст

//Вставка 4 пустых абзацев, курсор в позиции последнего ----- WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

//Вводим текст после слова "СПРАВКА"

Query1.Active:=true;//обращаемся к базе данных

Query1.First; //БД - на первую запись

Query1.MOVEBY(NOMCLIENT-1); //формируем документ для выбранной записи

WORDDOCUMENT1.Paragraphs.Item(WORDDOCUMENT1.Paragraphs.Count).Alignment:=3; //выравнивание по ширине

WORDDOCUMENT1.Paragraphs.Item(WORDDOCUMENT1.Paragraphs.Count).LINESPACINGRULE:=2; //межстрочный интервал - двойной

STRKOMB:="Абонент " Query1.FIELDBYNAME("FAMILYA").Asstring " " Query1.FIELDBYNAME("NAME").Asstring " " Query1.FIELDBYNAME("OTCH.").Asstring ", проживающий по адрессу " Query1.FIELDBYNAME("ADR").Asstring ;

WORDDOCUMENT1.Range.INSERTAFTER(STRKOMB); //вводим текст

STRKOMB:=" зарегистрированный " Query1.FIELDBYNAME(" DATA_REG ").Asstring " числа, Получил на руки книгу " Query1.FIELDBYNAME(" NAME_BOOK").Asstring " ";

WORDDOCUMENT1.Range.INSERTAFTER(STRKOMB);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM); //добавить абзац, курсор в его позиции

STRKOMB:= " Книга под индексом: " Query1.FIELDBYNAME(" NUMB_BOOK").Asstring " ";

//вводим текст

WORDDOCUMENT1.Range.INSERTAFTER(STRKOMB);

//Вставка 4 пустых абзацев, курсор в позиции последнего ----- WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

//------------------------------------------------------------ WORDDOCUMENT1.Paragraphs.Item(WORDDOCUMENT1.Paragraphs.Count).Alignment:=2; //выравнивание текущего абзаца вправо

WORDDOCUMENT1.Paragraphs.Item(WORDDOCUMENT1.Paragraphs.Count).LINESPACINGRULE:=0; //межстрочный интервал - снова одинарный

STRKOMB:= "Администратор зала ________________ ";

WORDDOCUMENT1.Range.INSERTAFTER(STRKOMB); //вводим текст

//Вставка 4 пустых абзацев, курсор в позиции последнего ----- WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

Создаем 3 страницу на которой находиться направление на выдачу книг: Razd:=WDSECTIONNEWPAGE;

Range1:=WORDDOCUMENT1.Paragraphs.Last.Range;

WORDDOCUMENT1.Sections.Add(EMPTYPARAM,Razd); // текущая секция документа отделена разрывом

//Вставка текста - создание типового документа

//Вставка 3 пустых абзацев, курсор в позиции последнего ----- WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

//Пример применения диапазона "Range" для выравнивания двух абзацев из четырех ранее введенных -------------- Start1:=WORDDOCUMENT1.Paragraphs.Item(1).Range.start; //начальный абзац

End1:=WORDDOCUMENT1.Paragraphs.Item(2).Range.end_; //конечный абзац

WORDDOCUMENT1.Range(Start1,End1).Paragraphs.Alignment:=2; //выравнивание вправо

//Вставка 3 пустых абзацев, курсор в позиции последнего------ WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Item(WORDDOCUMENT1.Paragraphs.Count).Alignment:=1; //выравнивание по центру

WORDDOCUMENT1.Range.INSERTAFTER(" НАПРАВЛЕНИЕ НА ВЫДАЧУ КНИГИ "); //вводим текст

//Вставка 4 пустых абзацев, курсор в позиции последнего ----- WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

//Вводим текст после слова "НАПРАВЛЕНИЕ НА ВЫДАЧУ КНИГИ"

Query1.Active:=true;//обращаемся к базе данных

Query1.First; //БД - на первую запись

Query1.MOVEBY(NOMCLIENT-1); //формируем документ для выбранной записи

WORDDOCUMENT1.Paragraphs.Item(WORDDOCUMENT1.Paragraphs.Count).Alignment:=3; //выравнивание по ширине

WORDDOCUMENT1.Paragraphs.Item(WORDDOCUMENT1.Paragraphs.Count).LINESPACINGRULE:=2; //межстрочный интервал - двойной

STRKOMB:=" Абонент " Query1.FIELDBYNAME("FAMILYA").Asstring " " Query1.FIELDBYNAME("NAME").Asstring " " Query1.FIELDBYNAME("OTCH.").Asstring ";

WORDDOCUMENT1.Range.INSERTAFTER(STRKOMB); //вводим текст

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

STRKOMB:=" Зарегистрированный " Query1.FIELDBYNAME(" DATA_REG ‘).Asstring " числа, выдать следующую книгу " Query1.FIELDBYNAME("GROUP").Asstring " ";

WORDDOCUMENT1.Range.INSERTAFTER(STRKOMB);

//добавить абзац, курсор в его позиции

//вводим текст

//Вставка 4 пустых абзацев, курсор в позиции последнего ----- WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Item(WORDDOCUMENT1.Paragraphs.Count).Alignment:=2; //выравнивание текущего абзаца вправо

WORDDOCUMENT1.Paragraphs.Item(WORDDOCUMENT1.Paragraphs.Count).LINESPACINGRULE:=0; //межстрочный интервал - снова одинарный

STRKOMB:= "Администратор зала ________________ ";

WORDDOCUMENT1.Range.INSERTAFTER(STRKOMB); //вводим текст

//Вставка 4 пустых абзацев, курсор в позиции последнего ----- WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

WORDDOCUMENT1.Paragraphs.Add(EMPTYPARAM);

Затем активируем приложение Word и делаем все видимым: WORDAPPLICATION1.Documents.Item(doc1).Activate;//активирум документ Word

WORDAPPLICATION1.Visible:=true; //Показываем все на экране

Переходим к формированию файла Excel: //Загрузка существующего файла Excel doc1:="C:\project1\pr1.xls"; //открыть существующий документ 1

EXCELAPPLICATION1.Workbooks.Open(doc1,EMPTYPARAM,EMPTYPARAM,EMPTYPARAM,EMPTYPARAM,EMPTYPARAM,EMPTYPARAM, EMPTYPARAM,EMPTYPARAM,EMPTYPARAM,EMPTYPARAM,EMPTYPARAM,EMPTYPARAM,EMPTYPARAM,EMPTYPARAM,Lcid); //открыть существующий документ 1

EXCELWORKBOOK1.CONNECTTO(EXCELAPPLICATION1.ACTIVEWORKBOOK); //соединяем компонет EXCELWORKBOOK1 с активной книгой

EXCELWORKSHEET1.CONNECTTO(EXCELAPPLICATION1.Worksheets.Item["Лист1"] as _Worksheet); //выбираем лист№3 книги

EXCELWORKSHEET1.Activate;//активируем лист

EXCELAPPLICATION1.Visible[Lcid]:=true; //показываем приложение полностью

Заполняем Лист1 на который выводится таблица «Справочная таблица» COLROWS:=Query1.RECORDCOUNT 1;//задаем колво строк будущей таблицы Word

COLCOLUMNS:=Query1.FIELDCOUNT; //задаем колво столбцов будущей таблицы Word

//Сдвиг позиции отображения по отношению к началу координат

SROWS:=2;

SCOLUMNS:=3;

//Имена полей - на лист Excel for j:=0 to COLCOLUMNS-1 do begin

EXCELWORKSHEET1.Cells.Item[1 SROWS,j SCOLUMNS].value:=Query1.Fields[j].DISPLAYNAME;

end;

//Авторазмер столбцов по ширине значений яеек (колво символов в строке Length) --- max:=0;

for j:=0 to COLCOLUMNS-1 do begin

Query1.First; //Выборка - на первую запись max:=Length(Query1.Fields[j].ASSTRING);

for i:=1 to COLROWS do begin if (max<=Length(Query1.Fields[j].ASSTRING)) then max:=Length(Query1.Fields[j].ASSTRING);

Query1.Next; //Выборка - на одну запись вниз end;

//сравниваем ширину не только по домену данных но и по заголовку таблицы if (max<=Length(Query1.Fields[j].DISPLAYNAME)) then max:=Length(Query1.Fields[j].DISPLAYNAME);

EXCELWORKSHEET1.Cells.Item[i SROWS,j SCOLUMNS].COLUMNWIDTH:=max;

end;

Query1.First; //Выборка - на первую запись

//Значения домена - на лист Excel for i:=1 to COLROWS do begin for j:=0 to COLCOLUMNS-1 do begin if i < COLROWS then EXCELWORKSHEET1.Cells.Item[i SROWS 1,j SCOLUMNS].value:=Query1.Fields[j].ASSTRING;//вставляем значения не с первой позиции end;

Query1.Next; //Выборка - на следующую запись end;

//Заголовок таблицы -----------------------------------------------------------------

//объединяем ячейки --------------------------------------------------- EXCELWORKSHEET1.Cells.Range[EXCELWORKSHEET1.Cells.Item[SROWS-1,SCOLUMNS], EXCELWORKSHEET1.Cells.Item[SROWS-1,COLCOLUMNS 2]].MERGECELLS:=true;

//Форматируем шрифт --------------------------------------------------- EXCELWORKSHEET1.Cells.Item[SROWS-1,SCOLUMNS].font.color:=CLGREEN; //цвет

EXCELWORKSHEET1.Cells.Item[SROWS-1,SCOLUMNS].font.Bold:=1; //стиль

EXCELWORKSHEET1.Cells.Item[SROWS-1,SCOLUMNS].font.Italic:=1; //стиль

//--------------------------------------------------------------------- EXCELWORKSHEET1.Cells.Item[SROWS-1,SCOLUMNS].HORIZONTALALIGNMENT:=XLVALIGNCENTER; //выравнивание по горизонтали - центр

EXCELWORKSHEET1.Cells.Item[SROWS-1,SCOLUMNS].VERTICALALIGNMENT:=XLHALIGNCENTER; //выравнивание по вертикали - центр

EXCELWORKSHEET1.Cells.Item[SROWS-1,SCOLUMNS].value:="СПРАВОЧНАЯ ТАБЛИЦА"; //пишем заголовок

//Размечаем границы таблицы

//Внешняя граница - толще

EXCELWORKSHEET1.Cells.Range[EXCELWORKSHEET1.Cells.Item[1 SROWS,SCOLUMNS], EXCELWORKSHEET1.Cells.Item[COLROWS SROWS,COLCOLUMNS SCOLUMNS-1]].BORDERAROUND(1,4,1,EMPTYPARAM);

//Вертикальная граница

//Цвет линий - базовый красный

EXCELWORKSHEET1.Cells.Range[EXCELWORKSHEET1.Cells.Item[1 SROWS,SCOLUMNS], EXCELWORKSHEET1.Cells.Item[COLROWS SROWS,COLCOLUMNS SCOLUMNS-1]].Borders.Item[11].color:=CLRED;

EXCELWORKSHEET1.Cells.Range[EXCELWORKSHEET1.Cells.Item[1 SROWS,SCOLUMNS], EXCELWORKSHEET1.Cells.Item[COLROWS SROWS,COLCOLUMNS SCOLUMNS-1]].Borders.Item[11].LINESTYLE:=1;

//Горизонтальная граница

EXCELWORKSHEET1.Cells.Range[EXCELWORKSHEET1.Cells.Item[1 SROWS,SCOLUMNS], EXCELWORKSHEET1.Cells.Item[COLROWS SROWS,COLCOLUMNS SCOLUMNS-1]].Borders.Item[12].color:=CLRED;

EXCELWORKSHEET1.Cells.Range[EXCELWORKSHEET1.Cells.Item[1 SROWS,SCOLUMNS], EXCELWORKSHEET1.Cells.Item[COLROWS SROWS,COLCOLUMNS SCOLUMNS-1]].Borders.Item[12].LINESTYLE:=1;

Заполняем Лист 2 на котором располагается направление на выдачу: Query1.First; //Выборка - на первую запись

Query1.MOVEBY(NOMCLIENT-1); //формируем документ для выбранной записи

EXCELWORKSHEET1.CONNECTTO(EXCELAPPLICATION1.Worksheets.Item["Лист2"] as _Worksheet);

EXCELWORKSHEET1.Activate;//активируем лист

// Вводим текст документа ----------------------------------------------------

//Первое предложение "шапки" ----------- with EXCELWORKSHEET1.Range["G1","J1"] do begin

VERTICALALIGNMENT:=XLVALIGNCENTER; //выравнивание вертикальное - по центру

HORIZONTALALIGNMENT:=XLHALIGNRIGHT; //выравнивание горизонтальное - по центру

MERGECELLS:=true; //объединение ячеек

Value[EMPTYPARAM]:="Для внутреннего пользования"; //пишем текст end;

//Второе предложение "шапки" ----------- with EXCELWORKSHEET1.Range["G2","J2"] do begin

VERTICALALIGNMENT:=XLVALIGNCENTER; //выравнивание вертикальное - по центру

HORIZONTALALIGNMENT:=XLHALIGNRIGHT; //выравнивание горизонтальное - по центру

MERGECELLS:=true; //объединение ячеек

Value[EMPTYPARAM]:="по месту требования"; //пишем текст end;

//Печатаем текст - Справка --- with EXCELWORKSHEET1.Range["D6","G6"] do begin

VERTICALALIGNMENT:=XLVALIGNCENTER; //выравнивание вертикальное - по центру

HORIZONTALALIGNMENT:=XLHALIGNRIGHT; //выравнивание горизонтальное - по центру

MERGECELLS:=true; //объединение ячеек font.Bold:=1; //шрифт - стиль font.Italic:=1; //шрифт - стиль

Value[EMPTYPARAM]:="НАПРАВЛЕНИЕ НА ВЫДАЧУ"; //пишем текст end;

STRKOMB:="Абонент " Query1.FIELDBYNAME("FAMILYA").Asstring " " Query1.FIELDBYNAME("NAME").Asstring " " Query1.FIELDBYNAME("OTCH.").Asstring ";

EXCELWORKSHEET1.Cells.Item[10,1].value:= STRKOMB;

STRKOMB:="Зарегистрированный" Query1.FIELDBYNAME("DATA_REG’).Asstring "числа, выдать след книгу " Query1.FIELDBYNAME("GROUP").Asstring " ";

EXCELWORKSHEET1.Cells.Item[13,1].value:= STRKOMB;

STRKOMB:= "Администратор зала ________________ ";

with EXCELWORKSHEET1.Range["E17","J17"] do begin

VERTICALALIGNMENT:=XLVALIGNCENTER; //выравнивание вертикальное - по центру

HORIZONTALALIGNMENT:=XLHALIGNRIGHT; //выравнивание горизонтальное - по центру

MERGECELLS:=true; //объединение ячеек font.Bold:=1; //шрифт - стиль font.Italic:=1; //шрифт - стиль

Value[EMPTYPARAM]:=STRKOMB;; //пишем текст end;

EXCELWORKSHEET1.Range["A1","J18"].BORDERAROUND(2,4,1,EMPTYPARAM);// рамка - граница сформированного документа

//Форматируем лист Excel ---------------------------------------- with EXCELWORKSHEET1.PAGESETUP do begin

EXCELWORKSHEET1.PAGESETUP.PAPERSIZE:=DMPAPER_А4;//формат - А4

EXCELWORKSHEET1.PAGESETUP.LEFTMARGIN:=20; //поле левое

EXCELWORKSHEET1.PAGESETUP.RIGHTMARGIN:=20; //поле правое

EXCELWORKSHEET1.PAGESETUP.TOPMARGIN:=20; //поле верхнее

EXCELWORKSHEET1.PAGESETUP.BOTTOMMARGIN:=20; //поле нижнее end;

Заполняем Лист 3, на котором располагается справка о том, что человек является абонентом библиотеки и номере его книг

//Работаем на листе № 3

Query1.First; //Выборка - на первую запись

Query1.MOVEBY(NOMCLIENT-1); //формируем документ для выбранной записи

EXCELWORKSHEET1.CONNECTTO(EXCELAPPLICATION1.Worksheets.Item["Лист3"] as _Worksheet); //выбираем лист№2 книги

EXCELWORKSHEET1.Activate;//активируем лист

EXCELAPPLICATION1.Visible[Lcid]:=true; //показываем приложение полностью

//Первое предложение "шапки" ----------- with EXCELWORKSHEET1.Range["G1","J1"] do begin

VERTICALALIGNMENT:=XLVALIGNCENTER; //выравнивание вертикальное - по центру

HORIZONTALALIGNMENT:=XLHALIGNRIGHT; //выравнивание горизонтальное - по центру

MERGECELLS:=true; //объединение ячеек

Value[EMPTYPARAM]:="Для внутреннего пользования"; //пишем текст end;

//Второе предложение "шапки" ----------- with EXCELWORKSHEET1.Range["G2","J2"] do begin

VERTICALALIGNMENT:=XLVALIGNCENTER; //выравнивание вертикальное - по центру

HORIZONTALALIGNMENT:=XLHALIGNRIGHT; //выравнивание горизонтальное - по центру

MERGECELLS:=true; //объединение ячеек

Value[EMPTYPARAM]:="по месту требования"; //пишем текст end;

//Печатаем текст - Справка --- with EXCELWORKSHEET1.Range["E6","F6"] do begin

VERTICALALIGNMENT:=XLVALIGNCENTER; //выравнивание вертикальное - по центру

HORIZONTALALIGNMENT:=XLHALIGNRIGHT; //выравнивание горизонтальное - по центру

MERGECELLS:=true; //объединение ячеек font.Bold:=1; //шрифт - стиль font.Italic:=1; //шрифт - стиль

Value[EMPTYPARAM]:="С П Р А В К А"; //пишем текст end;

STRKOMB:="Студент " Query1.FIELDBYNAME("FAMILYA").Asstring " " Query1.FIELDBYNAME("NAME").Asstring " " Query1.FIELDBYNAME("OTCH.").Asstring ", проживающий по адрессу " Query1.FIELDBYNAME("ADR").Asstring ;

EXCELWORKSHEET1.Cells.Item[10,1].value:= STRKOMB;

STRKOMB:=" Зарегестрированный " Query1.FIELDBYNAME("DATA_REG’).Asstring " числа, получил на руки книгу " Query1.FIELDBYNAME("NAME_BOOK").Asstring " ";

EXCELWORKSHEET1.Cells.Item[11,1].value:= STRKOMB;

STRKOMB:= "Книга под индексом " Query1.FIELDBYNAME("NUMB_BOOK").Asstring " ";

EXCELWORKSHEET1.Cells.Item[13,1].value:= STRKOMB;

STRKOMB:= "Администратор зала ________________ ";

with EXCELWORKSHEET1.Range["E17","J17"] do begin

VERTICALALIGNMENT:=XLVALIGNCENTER; //выравнивание вертикальное - по центру

HORIZONTALALIGNMENT:=XLHALIGNRIGHT; //выравнивание горизонтальное - по центру

MERGECELLS:=true; //объединение ячеек font.Bold:=1; //шрифт - стиль font.Italic:=1; //шрифт - стиль

Value[EMPTYPARAM]:=STRKOMB;; //пишем текст end;

EXCELWORKSHEET1.Range["A1","J18"].BORDERAROUND(2,4,1,EMPTYPARAM);// рамка - граница сформированного документа

//Форматируем лист Excel ---------------------------------------- with EXCELWORKSHEET1.PAGESETUP do begin

EXCELWORKSHEET1.PAGESETUP.PAPERSIZE:=DMPAPER_А4;//формат - А4

EXCELWORKSHEET1.PAGESETUP.LEFTMARGIN:=20; //поле левое

EXCELWORKSHEET1.PAGESETUP.RIGHTMARGIN:=20; //поле правое

EXCELWORKSHEET1.PAGESETUP.TOPMARGIN:=20; //поле верхнее

EXCELWORKSHEET1.PAGESETUP.BOTTOMMARGIN:=20; //поле нижнее end;

После выполнения приложения, расположенного на рисунке 12 приложения у нас получается один документ Microsoft Word и одна книга Microsoft Excel: В Документе Microsoft Word: На первой странице документа Microsoft Word общая справочная таблица по всем абонентам, которые есть в БД, рисунок 13 приложения 1.

На второй странице располагается справка о клиенте, являющимся абонентом, с указанием его адреса, даты регистрации, книгой для получения и ее индексом, рисунок 14 приложения 1.

На третьей странице располагается Направление на выдачу с указанием даты регистрации и наименованием книги абонента, рисунок 15 приложения 1.

В Книге Microsoft Excel: На первом листе располагается общая справочная таблица по всем абонентам которые есть в БД, рисунок 16 приложения.

На втором листе располагается справка о клиенте, являющимся абонентом, с указанием его адреса, даты регистрации, книгой для получения и ее индексом, рисунок 17 приложения.

На третьем листе располагается Направление на выдачу с указанием даты регистрации и наименованием книги абонента, рисунок 18 приложения 1 . программа приложение экспорт разработка

Вывод
В проекте были получены навыки создания базы данных в Microsoft Access. Просмотр созданных СУБД в Delphi, а так же экспорт данных в приложения Microsoft Word, Microsoft Excel на основе компонентов OLE Automation - WORDAPPLICATION, WORDDOCUMENT, EXCELAPPLICATION, EXCELWORKBOOK, EXCELWORKSHEET, EXCELCHART.

Список литературы
1. «Delphi, язык и среда программирования» Фараонов В.В, Москва: 2009.

2. «Учебник по Delphi 7 для начинающих» Кирилин М.Н

3. Вейскас Д. Эффективная работа с Microsoft Access 2. С.- Петербург: «Питер Пресс», 1996. - 856 стр.

4. Ю. Бекаревич, Н. Пушкина. Самоучитель Microsoft Access 2000. - СПБ.: БХВ - Санкт-Петербург, 1999. - 480 стр.

5. Спирли Э. Корпоративные хранилища данных. Планирование, разработка, реализация. - М.: АСТ, 2001.
Заказать написание новой работы



Дисциплины научных работ



Хотите, перезвоним вам?