Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Библиотека 10 2

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 10.11.2024

СОДЕРЖАНИЕ

Введение

3

1

Среда разработки программного продукта

4

1.1

Работа с базами данных в Delphi 

4

1.2

Компоненты доступа к данным

5

1.3

Доступ к данным

7

2

Разработка базы данных «Библиотека»

10

2.1

Структура  и интерфейс программы

11

Заключение

16

Список использованных источников

17

Приложение А «Листинг программы»

18


ВВЕДЕНИЕ

Основные идеи современной информационной технологии базируются на концепции, согласно которой данные должны быть организованы в базы данных с целью адекватного отображения изменяющегося реального мира и удовлетворения информационных потребностей пользователей. Эти базы данных создаются и функционируют под управлением специальных программных комплексов, называемых системами управления базами данных (СУБД). [1]

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

База данных – это поименованная совокупность структурированных данных предметной области.

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

Целью курсовой работы является создание программы «Библиотека», которая упрощает работу сотрудников библиотеки, что приводит к экономии большого количества времени.

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


1. Среда разработки программного продукта

Для разработки  был выбран язык программирования Delphi. Язык программирования Delphi - это комбинация нескольких важнейших технологий:

  •  Высокопроизводительный компилятор в машинный код;
  •  Объектно-ориентированная модель компонент;
  •  Визуальное (а, следовательно, и скоростное) построение приложений из программных прототипов;
  •  Масштабируемые средства для построения баз данных.

Компилятор, встроенный в Delphi, обеспечивает высокую производительность, необходимую для построения приложений в архитектуре «клиент-сервер». Он предлагает легкость разработки и быстрое время проверки готового программного блока, характерного для языков четвертого поколения (4GL) и в то же время обеспечивает качество кода, характерного для компилятора 3GL. Кроме того, Delphi обеспечивает быструю разработку без необходимости писать вставки на С или ручного написания кода (хотя это возможно).

Delphi использует структурный объектно-ориентированный язык (Object Pascal), который сочетает с выразительную мощь и простоту программирования, характерную для языков 4GL, и эффективность языка 3GL. Программисты немедленно могут начать производить работающие приложения, и им не придется для этого изучать особенности программирования событий в Windows. Delphi полностью поддерживает передовые программные концепции включая инкапсуляцию, наследование, полиморфизм и управление событиями.

1.1 Работа с базами данных в Delphi

Технология ADO обеспечивает для приложений единый способ доступа к источникам данных различных типов. Согласно терминологии ADO, любой источник данных (база данных, электронная таблица, файл) называется хранилищем данных, с которым при помощи провайдера данных взаимодействует приложение. Минимальный набор компонентов приложения может включать объект соединения, объект набора данных, объект процессора запросов. Технология ADO в целом включает в себя не только сами объекты, но и механизмы, обеспечивающие взаимодействие объектов с данными и приложениями. Механизм доступа к данным через ADO и многочисленные объекты, и интерфейсы реализованы в Delphi в виде набора компонентов, расположенных на странице ADO. Такая архитектура позволяет сделать набор объектов и интерфейсов открытым и расширяемым.

На закладке ADO расположены компоненты:

  1.  Компоненты соединения:
    •  ADOConnection -
    •  ADOCommand -
  2.  Стандартные компоненты:
    •  ADODataSet - универсальный набор данных -
    •  ADOTable - таблица БД -
    •  ADOQuery - запрос SQL -
    •  ADOStoredProc - хранимая процедура -

На странице ADO Палитры компонентов Delphi, кроме компонентов соединения есть стандартные компоненты, обозначающие набор данных и адаптированные для работы с хранилищем данных ADO.

На вкладке Connection (см. рисунок 1) необходимо указать путь к базе данных или сервер.

Рисунок 1 – Окно подключения

Компонент TADOTable - используется для доступа к хранилищам данных ADO и представления информации из них в табличном виде. Компонент предоставляет прямой доступ к каждой записи и ее полям, наследуя свойства и методы. Компонент связывается с базой данных через свойства Connection или ConnectionString.

Имя таблицы указывается в свойстве TableName. Используя свойство Readonly, можно установить ограничение «только для чтения» на данную таблицу, запретив, таким образом, возможность изменять данные. В свойстве MasterSource указывается компонент TDataSource, используемый для создания отношения ссылочной целостности.

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

Свойство AutoEdit-автоматически переводит набор данных в состояние редактирования, если имеет значение True, когда связанный элемент ввода получает фокус.

Метод Edit-переводит связанный набор данных в состояние редактирования.

Метод-обработчик OnDataChange-вызывается при редактировании данных в связанном визуальном компоненте.

Метод-обработчик события OnUpdateData-вызывается перед тем, как измененные данные будут сохранены в наборе данных. Обработчик вызывается перед выполнением метода Post.

  1.  Компоненты доступа к данным

Компоненты доступа к данным являются не визуальными компонентами. Таблицы БД располагаются на диске и являются физическими объектами. Для операций с данными, содержащимися в таблицах, используются наборы данных. В терминах системы Delphi набор данных представляет собой совокупность записей, взятых из одной или нескольких таблиц БД. Записи, входящие в набор данных, отбираются по определенным правилам, при этом в частных случаях набор данных может включать в себя все записи из связанной с ним таблицы или не содержать ни одной записи. Набор данных является логической таблицей, с которой можно работать при выполнении приложения. Взаимодействие таблицы и набора данных напоминает взаимодействие физического файла и файловой переменной.

В Delphi для работы с наборами данных служат компоненты DBTable и ADOTable, ADOQuery, DataAccess, DataControl.

Базовые возможности доступа к БД обеспечивает класс DataSet, представляющий наборы данных в виде совокупности строк и столбцов (записей и полей). Этот класс предоставляет основные средства навигации и редактирования наборов данных.

Компонент Table -представляет собой набор данных, который в некоторый момент времени может быть связан только с одной таблицей БД. Этот набор данных формируется на базе навигационного способа доступа к данным, поэтому компонент Table рекомендуется использовать для локальных БД. При работе с удаленными БД следует использовать компонент Query. Связь между таблицей и компонентом Table устанавливается через его свойства TableName, которое задает имя таблицы.

Компоненты для работы с данными расположенные на странице DataControls (см.рисунок 2) палитры компонентов и предназначены для построения интерфейсной части приложения.

Рисунок 2 – Палитра компонентов

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

Другие компоненты служат для отображения и редактирования сразу нескольких записей. Примерами таких компонентов являются сетки DBGrid  и DBCtrlGrid, выводящие записи набора данных в табличном виде. Визуальные компоненты для работы с данными похожи на соответствующие компоненты страниц Standard и Additional и отличаются, в основном, тем, что ориентированны на работу с БД и имеют дополнительные свойства DataSource и Datafield. Первое из них указывает на источник данных, а второе - на поле набора данных, с которым связан визуальный компонент. Например, Edit отображает строковое значение, позволяя пользователю изменять его.

При программном изменении содержимого эти визуальных компонентов набор данных автоматически в режим редактирования не переводится. Для этой цели в коде должен предварительно вызываться метод Edit набора. Чтобы сохранить изменения в поле (полях) текущей записи, мы должны также предусмотреть соответствующие действия, например, вызов метода Post или переход к другой записи набора данных. В библиотеке визуальных компонентов для всех компонентов, в том числе и предназначенных для работы с данными, базовым является классу Control. Он обеспечивает основные функциональные атрибуты такие, как положение и размеры элемента, его заголовок, цвет и другие параметры. Класс Control включает в себя общие для визуальных компонентов свойства, события и методы.

Оконный элемент управления представляет собой специализированное окно, предназначенное для решения конкретной задачи. К таким элементам относятся, например, поля редактирования, командные кнопки, полосы прокрутки.

Такие компоненты, как Edit, DBEdit, Memo или DBMemo при получении фокуса ввода отображают в своей области курсор редактирования. Компоненты, не связанные с редактированием информации, получение фокуса ввода обычно отображают с помощью с помощью пунктирного черного прямоугольника.

Свойство Name указывает на имя компонента, которое используется для управления компонентов во время выполнения приложения.

Свойство Caption содержит строку для надписи заголовка компонента. Отдельные символы в заголовке могут быть подчеркнуты, они означают комбинации клавиш быстрого доступа.

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

- Выбор управляющего элемента;

- Перемещение указателя мыши;

- Нажатие клавиш клавиатуры;

- Получение и потеря управляющим элементом фокуса ввода;

- Перемещение объектов методом drag-and-drop.

1.3 Доступ к данным

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

Навигационный способ доступа даёт возможность осуществлять следующие операции:

- сортировка записей;

- навигация по набору данных;

- редактирование записей;

- вставка и удаление записей;

- фильтрация записей;

- поиск записей.

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

- перевести набор данных в редактирование;

- изменить значение полей записи;

- подтвердить изменения или отказаться от них.

Метод Insert переводит набор данных в режим вставки и добавляет к нему новую пустую запись.

Для добавления записи нужно:

- перевести набор данных в режим записи;

- задать значение полей новой записи;

- подтвердить изменения или отказаться от них.

  Удаление текущей записи выполняет метод Delete, который работает только с модифицируемым набором данных. В случае успешного удаления записи текущей становится следующая запись, если же удалялась последняя запись, то курсор перемещается на предыдущую запись, которая после удаления становится последней. В отличие от некоторых СУБД, в Delphi удаляемая запись действительно удаляется из набора данных.

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

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

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

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

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

Фильтрация записей – это задание ограничений для записей, отбираемых в набор данных. Набор данных представляет собой записи, набранные из одной или нескольких таблиц. Состав записей в наборе данных в данный момент времени зависит от установленных ограничений, в том числе и от фильтров.

Система Delphi дает возможность осуществлять фильтрацию записей:

- по выражению;

- по диапазону.

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

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

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

- имена полей таблицы;

- литералы;

- операции сравнения;

- арифметические операции;

- логические операции;

- круглые и квадратные скобки.

Если имя поля содержит пробелы, то его заключают в квадратные скобки. Имена переменных в выражении фильтра использовать нельзя. Если в выражении фильтра требуется включить значение переменной или свойства какого-либо компонента, то это значение должно быть преобразовано в строковый тип. Операции сравнения представляют собой обычные отношения <,>,=,<=,>=,<>. Арифметическими являются операции +, -,* и /. В качестве логических операций можно использовать AND, OR и NOT. Круглые скобки применяются для изменения порядка выполнения арифметических и логических операций.

Набор данных Table допускается два способа задания условии фильтрации: су помощью выражения фильтра Filter и в обработчике события OnFilterRecord.

При фильтрации по диапазону в набор данных включаются записи, значения полей которых попадают в заданный диапазон, т.е. условием фильтрации является выражение вида «значение>нижняя граница AND значение < верхней границы». Такая фильтрация применяется к наборам данных Table.

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

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

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

Для поиска записей по полям служат методы Locate и Lookup, причем поля могут быть не индексированными. Функция Locate ищет запись с заданными значениями полей. Если удовлетворяющие условиям поиска записи существует, то указатель текущей записи устанавливается на первую из них. Если запись найдена, функция возвращает значение True, в противном случае значение False. Обычно при разработки приложения пользователю предоставляется возможность влиять на процесс поиска су помощью управляющих элементов, расположенных на форме. Функция Lookup так же осуществляет поиску записи, удовлетворяющей определённым условиям, но, в отличие от метода Locate, не перемещает указатель текущей записи, а считывает информацию из полей записи. Еще одно отличие между двумя методами заключается в том, что метод Lookup осуществляет поиск на точное соответствие значений для поиска и значений в полях записей с учетом регистра букв.


2. Разработка базы данных «Библиотека»

Для разработки программы «База данных «Библиотека» »выбрана объектно-ориентированная интерактивная среда Delphi 7.

База состоит из одной таблицы которая имеет современный тип «Access» с расширенными типами полей. Доступ к данным будет происходить через ADO-подсистему Delphi.

В таблице «Библиотека» будут содержаться все необходимые данные для работы , описание полей БД находится в таблице 1.

Таблица 1 - Таблица «frukt»

Имя поля

Тип

Описание

Sifr

Текстовый

Содержит шифр книги или издания

razdel

Текстовый

Наименование раздела

avtor

Текстовый

Фамилия и инициалы автора книги

nazvanie

Текстовый

Название книги

god_izdania

Текстовый

Указывается год издания

izdatelstvo

Текстовый

Наименование издательства выпустившего книгу

fam_chitatel

Текстовый

Фамилия и инициалы читателя

nomer_bileta

Текстовый

Номер читательского билета

datavidachi

Дата время

Дата выдачи книги на руки

otmetca_vozvrat

Текстовый

Содержится отметка о возврате или нахождению экземпляра кникги на руках

2.1  Интерфейс программы

Для запуска программы необходимо запустить фаил biblioteka.exe двойным щелчкоммыши. После запуска появляется главная форма для работы. (см. рисунок 3)

Рисунок 3 – Главная форма приложения

Форма содержит несколько разделов:

  1.  кнопки меню;
  2.  панель поиска и фильтации информации;
  3.  раздел просмота содержимого базы;
  4.  кнопки навигации иредактиования данных.

Изначально кнопки редактиования данных не активны, для их активации необходимо ажать кнопку «Редактировать». Далее таблица переходит в ежим редактирования. Необходимо отметить, что при добавлении данных в таблицу некоторые поля содержат вложенные списки, так например при добавлении данных в поле «Раздел » таблица выглядит так как показано на рисунке 4

Рисунок 4 – Добавление данных в таблицу

На рисунке 5 показан результат применения фильтра

Рисунок 5 – Результат фильтрации данных

Для отображения всех записей нужно щелкнуть по кнопке «Все записи».

Для вывода данных на печать необходимо выбрать кнопку «Печать». Отчет выводится в MS Excel. Вид отчета показан на рисунке 6

Рисунок 6 - Вывод данных

При выходе из системы появляется окно показанное на рисунке 7.

Рисунок 7 - Запрос на выход из программы


Заключение

В ходе выполнения курсовой работы была разработана программа «Бибдиотека», обладающая следующим функционалом:

1) просмотр и редактирование данных;

2) поиск информаци

3) фильтрация данных;

5) вывод данных на печать;

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

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


СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1) Дарахвелидзе П. Г., Марков Е. П. Delphi 2005 для Win32. - СПб.: БХВ-Петербург, 2005. - 1136 с.

2) Боровский А. Н. Программирование в Delphi 2005. — СПб.: БХВ-Петербург, 2005. - 448 с.

3)  Гофман В. Э., Хомоненко А. Д. Работа с базами данных в Delphi. — СПб.: БХВ-Петербург, 2011. — 656 с.

4)  Романчик В.С., А. Е. Люлькин, «Программирование в Delphi 7: пособие для студентов». Минск: БГУ, 2007. – 128 с.;

5) Гофман В. Э., Хомоненко А. Д. Delphi. Быстрый старт. — СПб.: БХВ-Петербург, 2003. — 288 с.


ПРИЛОЖЕНИЕ А

(обязательное)

Листинг программы

unit Unit1;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, DB, ADODB, Grids, DBGrids, StdCtrls, Buttons, ExtCtrls, DBCtrls,OleServer,ComObj,

 ExcelXP, jpeg;

type

 TForm1 = class(TForm)

   ControlBar1: TControlBar;

   BitBtn1: TBitBtn;

   BitBtn2: TBitBtn;

   BitBtn3: TBitBtn;

   BitBtn4: TBitBtn;

   GroupBox1: TGroupBox;

   Label1: TLabel;

   Edit1: TEdit;

   BitBtn5: TBitBtn;

   DBGrid1: TDBGrid;

   ADOTable1: TADOTable;

   DataSource1: TDataSource;

   RadioButton1: TRadioButton;

   RadioButton2: TRadioButton;

   DBNavigator1: TDBNavigator;

   ExcelApplication1: TExcelApplication;

   BitBtn6: TBitBtn;

   BitBtn7: TBitBtn;

   BitBtn8: TBitBtn;

   Image1: TImage;

   procedure BitBtn3Click(Sender: TObject);

   procedure BitBtn4Click(Sender: TObject);

   procedure FormClose(Sender: TObject; var Action: TCloseAction);

   procedure BitBtn2Click(Sender: TObject);

   procedure BitBtn5Click(Sender: TObject);

   procedure RadioButton1Click(Sender: TObject);

   procedure RadioButton2Click(Sender: TObject);

   procedure BitBtn1Click(Sender: TObject);

   procedure BitBtn6Click(Sender: TObject);

   procedure BitBtn8Click(Sender: TObject);

   procedure BitBtn7Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form1: TForm1;

 Exl: OleVariant;

// MyDir:String;

  MyDir:String;

   pole: string;

implementation

{$R *.dfm}

procedure TForm1.BitBtn3Click(Sender: TObject);

begin

ADOTable1.Filtered:=false;

end;

procedure TForm1.BitBtn4Click(Sender: TObject);

begin

if MessageDlg('Вы действительно хотите закрыть приложение?',mtConfirmation,[mbOK,mbCancel],0)=mrCancel then Abort  ;

Application.Terminate;

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

if MessageDlg('Вы действительно хотите закрыть приложение?',mtConfirmation,[mbOK,mbCancel],0)=mrCancel then Abort  ;

Application.Terminate;

end;

procedure TForm1.BitBtn2Click(Sender: TObject);

var

x1:Variant;

 //bm: TBookmark;

col, row,i: Integer;

sline: string;

mem: TMemo;

Size         : cardinal;

   PRes         : PChar;

   BRes         : boolean;

ExcelApp,Workbook,Colum,Sheet: OLEVariant;

TemplateFile,cn,un:String;

 begin

 Size := MAX_COMPUTERNAME_LENGTH + 1;

 PRes := StrAlloc(Size);

 BRes := GetComputerName(PRes, Size);

 if BRes then cn:= StrPas(PRes);

 Size := MAX_COMPUTERNAME_LENGTH + 1;

 PRes := StrAlloc(Size);

 BRes := GetUserName(PRes, Size);

 if BRes then un := StrPas(PRes);

Screen.Cursor := crArrow;

DBGrid1.DataSource.DataSet.DisableControls;

DBGrid1.DataSource.DataSet.First;

i:=1;

// создаём объект Excel

          begin

ExcelApp:=CreateOleObject('excel.application');

Excelapp.Application.EnableEvents:=false;

ExcelApp.WorkBooks.Add(xlWBatWorkSheet);

ExcelApp.WorkBooks[1].WorkSheets[1].name := 'Отчёт';

ExcelApp.Visible := false;

Colum:=ExcelApp.Workbooks[1].WorkSheets['Отчёт'].Columns;

for col := 0 to DBGrid1.FieldCount-1 do

  if  DBGrid1.Columns[col].Visible then begin

 Colum.Columns[i].ColumnWidth:=25;Inc(i);

  end;

  Colum:=ExcelApp.Workbooks[1].WorkSheets['Отчёт'].Rows;

   Colum.Rows[2].Font.Bold:=true;

   Colum.Rows[2].Font.Size:=8;

   Colum.Rows[1].Font.Bold:=true;

    Colum.Rows[1].Font.Color:=0;

    Colum.Rows[1].Font.Size:=10;

 ExcelApp.Visible := false;

                  begin

mem := TMemo.Create(Self);

mem.Visible := false;

mem.Parent := Form1;

mem.Clear;

sline := '';

sline :=('Данные по библиотеке'+#9+DateToStr(date)+#9+TimeToStr(Time));

mem.Lines.Add(sline);

sline := '';

for col := 0 to DBGrid1.FieldCount-1 do

  if  DBGrid1.Columns[col].Visible then

sline := sline + form1.DBGrid1.Columns[col].Title.Caption + #9;

mem.Lines.Add(sline);

       mem.Lines.Add('');

for row := 0 to form1.DBGrid1.DataSource.DataSet.RecordCount-1 do

           begin

sline := '';

for col := 0 to form1.DBGrid1.FieldCount-1 do

if  form1.DBGrid1.Columns[col].Visible then

sline := sline + form1.DBGrid1.Fields[col].AsString + #9;

mem.Lines.Add(sline);

form1.DBGrid1.DataSource.DataSet.Next;

if form1.DBGrid1.DataSource.DataSet.Eof then Break;

                end;

mem.SelectAll;

mem.CopyToClipboard;

begin

ExcelApp.Visible := true;

ExcelApp.Workbooks[1].WorkSheets['Отчёт'].Paste;

end;

ExcelApplication1.Free;

form1.DBGrid1.DataSource.DataSet.EnableControls;

Screen.Cursor := crArrow;

    end;

end; end;

procedure TForm1.BitBtn5Click(Sender: TObject);

begin

if ADOTable1.Locate('avtor',Edit1.Text,[loCaseInsensitive,loPartialKey]) then DBGrid1.SetFocus else

MessageDlg('ПОИСК НЕ ДАЛ РЕЗУЛЬТАТОВ',mtConfirmation,[mbOK],0);

end;

procedure TForm1.RadioButton1Click(Sender: TObject);

begin

ADOTable1.Filter:='izdatelstvo='+''''+Edit1.Text+'''';

ADOTable1.Filtered:=true;

end;

procedure TForm1.RadioButton2Click(Sender: TObject);

begin

ADOTable1.Filter:='razdel='+''''+Edit1.Text+'''';

ADOTable1.Filtered:=true;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

BitBtn6.Enabled:=true;

BitBtn7.Enabled:=true;

BitBtn8.Enabled:=true;

end;

procedure TForm1.BitBtn6Click(Sender: TObject);

begin

ADOTable1.Insert;

end;

procedure TForm1.BitBtn8Click(Sender: TObject);

begin

ADOTable1.Post;

end;

procedure TForm1.BitBtn7Click(Sender: TObject);

begin

if MessageDlg('Вы действительно хотите удалить запись?',mtConfirmation,[mbOK,mbCancel],0)=mrCancel then Abort  ;

ADOTable1.Delete;

end;

end.




1. Зимняя школа Академпарка 2014 заполните пожалуйста форму заявки и отправьте ее по адресу school@cdemprk
2. это деловое общение между субъектом и объектом управления в социальных организациях осуществляемое знаков
3.  Характерные черты и этапы философии Возрождения Философия Возрождения направление в европейской филос
4. Контрольная работа по Статистике 2 ч Выбор варианта зависит от начальной буквы фамилии студента-
5. геологические разработки эрозия почв применение удобрений пестицидов мелиорации загрязнение почв водоё
6. Солнечные пятна, динамика и механизм их образования, способы их учета в экологии и астрофизике
7. Электронные компоненты
8. вступали в бой. не имея списков личного состава
9. Реферат- Функциональная организация мозга
10. Изобразительное искусство (ИЗО) Шпаргалка
11. Не с деепричастиями
12. 055 факс- 8 862 2595262 Должность на которую
13. Лекция 1 050912 1Понятие антикризисного управления Считается что антикризисное управление достаточно нов
14. Прочитать и законспектировать из электронных лекций следующие разделы- Роль и значение человека в раз
15. по теме Оборотные средства фирмы.html
16. на тему- ПЛАНИРОВАНИЕ ПРИБЫЛИ И РЕНТАБЕЛЬНОСТИ ПРЕДПРИЯТИЯ В УСЛОВИЯХ КОНКУРЕНЦИИ на примере ОАО ЛАТО Ц
17. монополистов присваивающих ренту при добыче и экспорте полезных ископаемых решающим образом влияют на бюд
18. тема WebMoney WebMoney или WebMoney Trnsfer международная электронная платёжная система
19. Социосфера РоссийскоАрмянский Славянский государственный университет Высшая школа политически
20. Уголовная ответственность за незаконный оборот наркотических средств1