Создание приложения для автоматизация работы расчетно-кассового отдела банка в среде ООП Delphi 6


Содержание
Введение 8
1 Принципы построения баз данных 10
1.1 Таблицы баз данных и индексы 10
1.2 Обзор компонентов, используемых для связи с базами данных 13
2 Создание приложения для автоматизация работы расчетно-кассового отдела
банка в среде ООП Delphi 6 15
2.1 Создание главной формы приложения 15
2.2 Создание справочников 15
2.3 Реквизиты банка 29
2.4 Клиенты 31
2.5 Создание пункта меню Кассовые документы 45
2.6 Документы кассы 45
2.7 Документы кассы на отправку 53
2.8 Программа КассаРКО 56
2.9 Создание титульной формы программы 65
Приложение А. Программные коды модулей РКО (расчетно-кассовый отдел)
66
Приложение В. Программные коды модулей Кассы РКО (касса расчетно-кассового
отдела) 108
Заключение 133
Список литературы 135
АННОТАЦИЯ
Диплом кіріспеден, 2 бөлімнен, қорытындыдан, қосымшадан және қолданылған
әдебиеттер тізімінен тұрады. Диплом көлемі 131 беттен тұрады. Дипломдық
жұмысының тақырыбы “Банктің есеп-кассалық бөлімінің жұмысын
автоматтандырыру”
АННОТАЦИЯ
Диплом состоит из введения, двух разделов заключения, приложения и
списка использованной литературы. Диплом состоит из 131 страницы. Тема
дипломной работы - Автоматизация работы расчетно-кассового отдела банка.
ANNOTATION
The Diploma consists of introduction, two sections, conclusions,
applications and list of the used literature. The Diploma consists of 131
pages. Subject of the degree work - "Aautomation of the work of cass
department of bank ".
Обозначения и сокращения
Объектно-ориентированное программирование – ООП
Программное обеспечение - ПО
Банковская система – БС
Центральный банк – ЦБ
Республика Казахстан – РК
Операционный фонд – ОФ
Расчетно-кассовый отдел - РКО
Visual Component Library - VCL
Расчетный номер налоплательщика – РНН,
Единый код платежного назначения – ЕКПН
Банковский идентификационный код – БИК
Кодов Бюджетной Классификации – КБК
Введение
Использование самых современных компьютерных технологий приносит банкам
крупные прибыли и помогает им победить в конкурентной борьбе. Любая
автоматизированная банковская система представляет собой сложный аппаратно-
программный комплекс, состоящий из множества взаимосвязанных модулей.
Совершенно очевидна роль сетевых технологий и баз данных в таких системах.
В сущности Банковская Система представляет из себя комплекс, состоящий из
множества локальных и глобальных вычислительных сетей. В банках сегодня
применяется самое современное сетевое и телекоммуникационное оборудование.
От правильного использования новых информационных технологий зависит
эффективность и надежность функционирования банка.
Поскольку спрос на Банковские Системы достаточно велик, а цена высока,
многие крупные компании-производители компьютерной техники и ПО предлагают
на рынке свои разработки в данной области. Перед отделом автоматизации
банка встает трудный вопрос выбора оптимального решения. Банковская сфера
определяет два основных требования к БС - обеспечение надежности и
безопасности передачи коммерческой информации. В последнее время для
взаимодействия с клиентами и осуществления расчетов все чаще используются
открытые глобальные сети (например Internet). Последнее обстоятельство еще
более усиливает значимость защиты передаваемых данных от
несанкционированного доступа. Судя по всему, в ближайшее время темпы
развития БС (особенно в нашей стране) будут стремительно расти. Практически
все появляющиеся сетевые технологии будут быстро браться банками на
вооружение. Неизбежны процессы интеграции банков в рамках национальных и
мировых банковских сообществ. Это обеспечит постоянный рост качества
банковских услуг, от которого выиграют в конечном счете все - и банки и их
клиенты.
Существует 4 основные направления автоматизации банковского дела:
1. Автоматизация деятельности - внутрибанковское обслуживание:
-автоматизация учетно-операционной работы;
-автоматизация - ведения договоров;
-автоматизация - экономической работы БС (расчет нормативов,
прогнозно-аналитические работы)
-автоматизация новых банковских операций (лизинг);
-автоматизация работ с ЦБ.
2. Автоматизация внебанковской деятельности (обслуживание клиентуры):
обслуживание в офисе; использование пластиковых карт.
3.Автоматизация межбанковских расчетов; межфилиальные расчеты; между
банками РК; между банками РК и банками стран СНГ; мн расчеты
(использование СВИФТ);
4. Автоматизация внутрибанковских учетных задач: автоматизация учета
труда, зарплаты; учета ОФ, материалов и пр.
Несмотря на то, что существует определенный стандарт ведения банковских
операций, у каждого взятого в отдельности банка имеются свои особенности
ведения банковской документации и не всегда готовое программное обеспечение
способно удовлетворить эти запросы. Кроме того, не стоит забывать об очень
высокой стоимости специализированного банковского программного обеспечения.
В этих условиях отделы автоматизации банков находят компромиссные решения –
частично используется доступное специализированное ПО, а некоторые
отдельные направления автоматизируются самостоятельно.
Целью моего дипломного проекта является автоматизация расчетно-кассовых
операций. Работу по выполнению расчетно-кассовых операций можно разделить
на 2 части. В первой части ведется непосредственная работа с клиентом
банка, создание Досье для клиента, создание счетов для клиента, ведение
приходно-расходных документов, выгрузка кассовых документов по проведенным
операциям. Вторая часть работы представляет собой формирование отчетных
документов по выгруженным кассовым документам для передачи в бухгалтерию.
Для выполнения поставленной задачи была взята интегрированная среда
разработки Delphi6. В этой среде написаны 2 программы. Программа, которая
выполняет задачи, поставленные в первой части, называется RKObank. Она
содержит множество форм и таблиц баз данных. А для второй части задачи
написана программа KassaRKO. Эта программа содержит только одну форму и
работает, не считая двух справочных файлов, практически с одним файлом,
переданным из первой программы. Передача файлов осуществляется по модему.
1 Принципы построения баз данных
1.1 Таблицы баз данных и индексы
Всегда, когда возникает потребность манипулировать большими массивами
данных, используются базы данных. Коротко рассмотрим эти принципы.
База данных – это прежде всего набор таблиц, хотя иногда в базу данных
могут входить также процедуры и ряд других объектов. Таблицу можно
представлять себе как обычную двумерную таблицу с характеристиками
(атрибутами) какого-то множества объектов. Таблица имеет имя –
идентификатор, по которому на нее можно сослаться. В таблице, изображенной
внизу, приведен фрагмент подобной таблицы с именем Pers, содержащей
сведения о сотрудниках некоторой организации.
Таблица 1 – Структура таблицы Pers
Код Фамилия Имя Отчество Дата ... Адрес ХарактериФотограф
рождения стика ия
Kod Name F_name S_name Data_r ... Adres Note Foto
1 Иванова Мария Сергеевна12.10.65 ... ... ...
2 Актаева Алия Нурлановн22.09.50 ... ... ...
а
3 Бокаева Нургуль Кадыровна31.12.68 ... ... ...
Столбцы таблицы соответствуют тем или иным характеристикам объектов –
полям. Каждое поле характеризуется именем и типом хранящихся данных. Имя
поля – это идентификатор, который используется в различных программах для
манипуляции данными. Он строится по тем же правилам, как любой
идентификатор, т.е. пишется латинскими буквами, состоит из одного слова и
т.д. Таким образом, имя – это не то, что отображается на экране или в
отчете в заголовке столбца (это отображение естественно писать по-русски),
а идентификатор, соответствующий этому заголовку. Например, в таблице
введены для последующих ссылок имена полей Kod, Name, F_name, S_name,
Data_r, Adres, Note, Foto, соответствующие указанным в ней заголовкам
полей.
Тип поля характеризует тип хранящихся в поле данных. Это могут быть
строки, числа, булевы значения, большие тексты (например, характеристики
сотрудников), изображения (фотографии сотрудников) и т.п.
Каждая строка таблицы соответствует одному из объектов. Она называется
записью и содержит значения всех полей, характеризующие данный объект.
При построении таблиц баз данных важно обеспечивать непротиворечивость
информации. Обычно это делается введением ключевых полей, обеспечивающих
уникальность каждой записи. Ключевым может быть одно или несколько полей. В
приведенном выше примере можно былобы сделать ключевыми совокупность полей
Name, F_name и S_name. Но в этом случае нельзя было бы заносить в таблицу
сведения о полных олднофамильцах, у которых совпадают фамилия, имя и
отчество. Поэтому в таблицу введено первое поле Kod - номер, которое можно
сделать ключевым, обеспечивающим уникальность каждой записи.
При работе с таблицей пользователь или программа как бы скользит курсором
по записям. В каждый момент времени есть некоторая текущая запись, с
которой и ведется работа. Записи в таблице базы данных физически могут
располагаться без какого-либо порядка, просто в последовательности их ввода
(появления новых сотрудников). Но когда данные таблицы предъявляются
пользователю, они должны быть упорядочены. Пользователь может хотеть
просматривать их в алфавитном порядке, или рассортированными по отделам,
или по мере нарастания года рождения и т.п. Для упорядочивания данных
используется понятие индекса. Индекс показывает, в какой последовательности
желательности просматривать таблицу. Он является как бы посредником между
пользователем и таблицей.
Рисунок 1 - Схема перемещения курсора по индексу
Курсор скользит по индексу, а индекс указывает на ту или иную запись
таблицы. Для пользователя таблица выглядит упорядоченной, причем он может
сменить индекс и последовательность просматриваемых записей изменится. Но в
действительности это не связано с какой-то перестройкой самой таблицы и с
физическим перемещением в ней записей. Меняется только индекс, т.е.
последовательность ссылок на записи.
Индексы могут быть первичными и вторичными. Например, первичным индексом
могут служить поля, отмеченные при создании базы данных как ключевые. А
вторичные индексы могут создаваться из других полей как в процессе
создания самой базы данных, так и позднее в процессе работы с ней.
Вторичным индексам присваиваются имена – идентификаторы, по которым их
можно использовать.
Если индекс включает в себя несколько полей, то упорядочивание базы
данных сначала осуществляется по первому полю, а для записей, имеющих
одинаковые значения первого поля – по второму и т.д. Например, базу данных
персонала можно индексировать по отделам, а внутри каждого отдела – по
алфавиту.
База данных обычно содержит не одну, а множество таблиц. Например, база
данных о некоторой организации может содержать таблицу имеющихся в ней
подразделений с характеристикой каждого из них. Пример такой таблицы с
именем Dep приведен в следующей таблице:
Отдел Тип
Dep Proisv
Бухгалтерия Управление
Цех1 Производство
Цех2 Производство
Отдельные таблицы, конечно, полезны, но гораздо больше информации можно
извлечь именно из совокупности таблиц. Например, пользователю может
потребоваться узнать общее количество сотрудников, работающих в
производственных цехах. Но ни одна из приведенных выше таблиц не поможет
ответить на этот вопрос, поскольку в таблице Pers отсутствуют сведения о
типах отделов, а в таблице Dep - о сотрудниках. Для получения ответов на
подобные запросы необходимо рассмотрение совокупности связанных таблиц.
Рисунок 2 - Схема взаимодействия главной и вспомогательной таблицы
В связанных таблицах обычно одна выступает как главная, а другая или
несколько других – как вспомогательные, управляемые главной. В этом случае
взаимодействие таблиц иллюстрируется рисунком 2. Главная и вспомогательная
таблицы связываются друг с другом ключом. В качестве ключа могут выступать
какие-то поля, присутствующие в обеих таблицах. Например, в приведенных
ранее таблицах головной может быть таблица Dep, а вспомогательной Pers, а
связываться они могут по полю Dep, присутствующему в обеих таблицах. Курсор
скользит по индексу главной таблицы. Каждой записи в главной таблице ключ
ставит в соответствие в общем случае множество записей вспомогательной
таблицы. Так в нашем примере каждой записи в главной таблицы Dep
соответствуют те записи вспомогательной таблицы Pers, в которых ключевое
поле Dep с названием отдела совпадает с названием отдела в текущей
записи главной таблицы. Иначе говоря, если в текущей записи главной
таблицы в поле Dep написано “Бухгалтерия”, то во вспомогательной таблице
Pers выделяются все записи о сотрудниках бухгалтерии.
Создают базы данных и обрабатывают запросы к ним системы управления
базами данных – СУБД. Известно множество СУБД, различающихся своими
возможностями или обладающих примерно равными возможностями и конкурирующих
друг с другом: Paradox, dBase, Microsoft Access, FoxPro, Oracle, InterBase,
и много других.
Разные СУБД по-разному организуют и хранят базы данных. Например, Paradox
и dBase используют для каждой таблицы отдельный файл. В этом случае база
данных – это каталог, в котором хранятся файлы таблиц. В Microsoft Access и
InterBase несколько таблиц хранятся как один файл. В этом случае база
данных – это имя файла с путем доступа к нему. Системы типа клиентсервер,
такие, как серверы Sybase или Microsoft SQL, хранят все данные на отдельном
компьютере и общаются с клиентом посредством специального языка,
называемого SQL.
Поскольку конкретные свойства баз данных очень разнообразны, пользователю
было бы весьма затруднительно работать, если бы он должен был указывать в
своем приложении все эти каталоги, файлы, серверы и т.п. Да и приложение
часто пришлось бы переделывать при смене, например, структуры каталогов и
при переходе с одного компьютера на другой. Чтобы решить эту проблему,
используют псевдонимы баз данных. Псевдоним (alias) содержит всю
информацию, необходимую для обеспечения доступа к базе данных. Эта
информация сообщается только один раз при создании псевдонима. А приложение
для связи с базой данных использует псевдоним. В этом случае приложению
безразлично, где физически расположена та или иная база данных, а часто
безразлична и СУБД, создавшая и обслуживающая эту базу данных. При смене
системы каталогов, сервера и т.п. ничего в приложении переделывать не надо.
Достаточно, чтобы администратор базы данных ввел соответствующую информацию
в псевдоним.
1.2 Обзор компонентов, используемых для связи с базами данных
Компоненты, используемые для работы с базами данных, расположены в
библиотеке компонентов на страницах Data Access (доступ к данным), BDE
(проектирование базы данных) и DataControl (управление данными).
Каждое приложение, использующее базы данных, обычно имеет, по крайней
мере, по одному компоненту следующих трех типов:
• Компоненты – наборы данных (data set), непосредственно
связывающиеся с базой данных. Это такие компоненты, как Table,
Query, StoredProc.
• Компонент – источник данных (data source), осуществляющий обмен
информацией между компонентами первого типа и компонентами
визуализации и управления данными. Таким компонентом является
DataSource.
• Компоненты визуализации и управления данными, такие, как DBGrid,
DBText, DBEdit и множество других.
Связь этих компонентов друг с другом и с базой данных можно представить
схемой, приведенной на рисунке внизу:
Рисунок 3 - Схема взаимодействия компонентов Delphi с базой данных
Помимо указанных компонентов в приложении может размещаться компонент
Database. Этот компонент в основном используется в приложениях, работающих
на платформе клиентсервер. Его задачи связаны с общением с удаленным
сервером, реализацией транзакций, работой с паролями. Компонент Database
целесообразно вводить в приложении только в сравнительно редких случаях.
Если он не введен явно, Delphi автоматически создает его для каждой
используемой в приложении базы данных.
Еще один компонент, который тоже автоматически создает Delphi – компонент
Session. Это главный компонент любого приложения, работающего с базами
данных. Но в явном виде эти компоненты имеет смысл вводить только в
многозадачные приложения, в которых обрабатывается несколько потоков
информации.
2 Создание приложения для автоматизация работы расчетно-кассового отдела
банка в среде ООП Delphi 6
2.1 Создание главной формы приложения
Для того, чтобы управлять документами Расчетно-Кассового Отдела, создадим
новое приложение с помощью команды меню File-New-Application. После
выполнения этих команд откроется новая форма. С помощью Инспектора Объектов
изменим свойство Name данной формы на fmMain, а в свойство Caption впишем
Автоматизация работы расчетно-кассового отдела банка- эта надпись
появится в заголовке формы. Для того чтобы создать меню, установим
компонент MainMenu. C его помощью создаем меню как показано на рисунке:
Рисунок 4 – Вид формы приложения fmMain во время проектирования
Затем сохраняем проект под названием BankRKO. Расширение .dpr
присваивается проекту автоматически.
2.2 Создание справочников
Наша программа будет состоять из двух частей – РКО (расчетно-кассовый
отдел) и Касса РКО (Касса расчетно-кассового отдела).
В расчетно-кассовом отделе будут приниматься платежи по разным видам от
физических и юридических лиц, будут заводиться счета для клиентов и т.д.
Для этого в программе надо создать ряд таблиц, в том числе и справочных,
вспомогательных, значения в которых изменяются крайне редко. С создания
таких справочников мы и начнем. Справочники будут храниться в таблицах.
Таблицы создадим с помощью входящей в интегрированную среду
программирования Delphi 6 программы Database Desktop. Для этого запустим
в Delphi 6 эту программу с помощью команды Tools-Database Desktop.
В открывшемся окне с помощью команд меню File-New-Table создадим новую
таблицу (рисунок 5).
Рисунок 5 – Создание новой таблицы с помощью программы Database
Desktop
После этой команды появится диалоговое окно, в котором надо выбрать тип
таблицы. Мы выберем тип таблиц dBase IV (рисунок 6).
Рисунок 6 – Диалоговое окно для выбора типа таблицы
После этого появится диалоговое окно, с помощью которого создается
структура таблиц баз данных (рисунок 7).
Рисунок 7 – Диалоговое окно для создания структуры таблицы
В этом окне надо ввести названия полей, указать их типы, длину полей, и
если необходимо определить индексные файлы и прочее. Названия полей будем
вводить в столбце Field name, типы полей – в столбце Type, длину полей
укажем в столбце Size, а если поле числовое, то количество знаков после
десятичной точки указываем в столбце Dec.
Первым делом создадим Справочник банков.
Для этого создадим файл bank.dbf . Его структура видна из рисунка 8.
Рисунок 8 – Структура таблицы bank.dbf
Так же для этой таблицы создадим индексный файл Kodb по одноименному полю
Kodb.
Затем открываем новую форму, устанавливаем на нее со страницы Standart 2
компонента Panel, а на них следующие невизуальные компоненты: DataSource и
Table со страниц библиотеки VCL (Visual Component Library) – Data Access и
BDE соответственно. Расположение невизуальных компонентов не имеет
значения, так как во время работы программы они на экране не отображаются.
Со страницы Data Control выберем компоненты DBGrid и DBNavigator.
Компонент DBNavigator установим на верхнюю панель, а на нижнюю панель
установим DBGrid. На верней панели справа от компонента DBNavigator
установим компонент Button со страницы Standart.
Свяжем между собой визуальные и невизуальные компоненты. Для этого с
помощью Инспектора Объектов изменим свойства компонентов следующим образом:
У компонента Table
DatabaseName – RKOBASE
TableName – bank.dbf
У компонента DataSource
Dataset – Table1
Свойства Name обоих компонентов Table и DataSource оставим без изменения
– Table1 и DataSource1.
Свойства DataSource обоих компонентов DBGrid и DBNavigator установим на
DataSource1.
Рисунок 9 – Изменение заголовков полей таблицы с помощью Columns
Editor
Далее, выделив компонент DBGrid, нажав на правую кнопку, из контексного
меню вызовем Редактор строк (Columns Editor). Он изображен на рисунке
сверху. С его помощью выберем те поля из таблицы bank.dbf, которые хотим
вывести на экран. При этом, выделяя в Реакторе Строк нужное поле, с помощью
Инспектора Объектов в подсвойстве Caption свойства Title изменяем
заголовок поля.
Кнопку Button переименуем, изменив в Инспекторе Объектов его свойство
Caption , туда впишем – Закрыть. Затем двойным щелчком мыши по кнопке
Button- Закрыть перейдем в Редактор Кода и запишем команду, которая будет
закрывать при нажатии на эту кнопку данную форму и таблицу, расположенную
на этой форме (форма во время работы сохранилась под номером 18 – Form18):
procedure TForm18.Button1Click(Sender: TObject);
begin
Table1.Close;
Form18.Close;
end;
Теперь изменим надпись в заголовке формы. Выделим форму и в свойство
Caption впишем “Справочник банков”. Затем в Инспекторе Объектов переходим
на вкладку Events, и затем выбрав событие FormShow двойным щелчком мышью
переходим в Редактор Кода и запишем:
procedure TForm18.FormShow(Sender: TObject);
begin
Table1.Open;
end;
С помощью этого кода таблица Table1 будет автоматически открываться
каждый раз при открытии формы, которую сохранили как form18. В результате
форма придет к виду, изображенному здесь:
Рисунок 10 – Вид формы form18 после изменения заголовков полей
Во время работы программы после заполнения данными эта форма выглядит
следующим образом:
Рисунок 11 – Вид формы form18 во время работы программы
Следующий справочник, который мы создадим – это справочник контрагентов.
Для этого сначала создадим структуру этой таблицы с помощью программы
Database Desktop. Таблицу проиндексируем по полю S_PLPO. Созданную таблицу
сохраним под названием kontr.dbf.
Рисунок 12 – Структура таблицы kontr.dbf
Затем, открыв новую форму, изменяем на ней заголовок сверху с помощью
свойства Caption в Инспекторе Объектов на Реквизиты контрагентов. После
этого устанавливаем на форму сначала невизуальные компоненты – 1 Table, 1
DataSource, 1 ppReport, 1 ppDBPipeline. Компоненты ppReport и ppDBPipeline
находятся на странице Rbuilder, которая появляется в библиотеке VCL после
установки программы Report Builder. Кроме этого из визуальных компонентов
установим следующие DBGrid, DBNavigator, 5 DBEdit, 4 Label, 2 Button
(Рисунок 13). Далее везде свойство DataBaseName будет настраиваться на базу
данных с псевдонимом RKOBASE. Псевдоним RKOBASE указывает путь к базе
данных, находящейся в каталоге C:\RKO\BASE. Поэтому у соответствующих
компонентов это свойство указывать не будем.
Настроим свойства компонентов следующим образом:
У компонента Table1 свойство TableName – kontr.dbf, свойство
IndexFieldName – S_PLPO.
У компонента DataSource1 свойство DataSet настраиваем на Table1.
Свойство DataSource компонента ppDBPipeline1 устанавливаем на
DataSource1, а свойство DataPipeLine компонента ppReport1 на
ppDBPipeline1. Таким образом, при формировании отчетов компонент ppReport1
будет брать данные из таблицы kontr.dbf.
Рисунок 13 – Вид формы Реквизиты контрагентов во время проектирования
приложения
Далее компоненты DBGrid и DBNavigator с помощью свойств Datasource так же
настраиваем Datasource1, то есть на таблицу kontr.dbf. При этом при
перемещении по строкам DBGrid (kontr.dbf) будут отображаться наименования
контрагентов, а внизу будут отображены их РНН, номер счета, код ЕКПН
(единый код платежного назначения), БИК (банковский идентификационный код).
Для этого внизу устанавливаем 5 компонентов DBEdit, у них всех свойство
Datasource так же устанавливаем равным Datasource1. Но свойство DataField у
каждого будет свое – RNN (РНН), MFO_PLPO(БИК), S_PLPO(Счета), OK, PO
(ЕКПН). Для того, чтобы таблица была доступна для работы, откроем ее с
помощью кода:
procedure TForm10.FormShow(Sender: TObject);
begin
Table1.Open;
end;
То есть мы выбрали для формы в Инспекторе Объектов вкладку Events
(События) и для события FormShow записали команду, указанную вверху.
Кроме этого, внизу установим 2 компонента Button. На одном из них сделаем
надпись - “Печать списка контрагентов”, а на другом - “Выход”. Щелкнув
два раза мышью на кнопке с надписью “Печать списка контрагентов”, перейдем
в Редактор кода и запишем команду:
procedure TForm10.Button2Click(Sender: TObject);
begin
ppReport1.Print;
end;
Эта команда обеспечивает вывод окна для просмотра и печати списка
контрагентов:
Рисунок 14 – Вид окна для просмотра и печати списка контрагентов
Для кнопки “Закрыть” запишем в Редакторе кода:
procedure TForm10.Button1Click(Sender: TObject);
begin
Table1.Close;
Form10.Close;
end;
Форма в программе сохранена под названием form10. В результате во время
работы программы форма будет иметь вид, как на рисунке внизу:
Рисунок 15 – Вид формы “Реквизиты контрагентов” во время работы
приложения
По этой же схеме создаем Справочник КНП. Для этого создадим таблицу
sprknp.dbf с помощью Database Desktop. Ее структуру можно увидеть на
рисунке внизу:
Рисунок 16 – Структура таблицы sprknp.dbf (Справочники КНП)
Эта таблица проиндексирована по первому полю Code. После установки и
настройки должным способом обычных для таких форм компонентов (Table,
DataSource, DBGrid, DBNavigator), при этом Table настраиваем на таблицу
sprknp.dbf, приводим форму к виду, изображенному на рисунке внизу, и
сохраним под именем form30:
Рисунок 17 – Вид формы” Справочники КНП” во время работы программы
Справочник КБК (Кодов Бюджетной Классификации) создаем точно таким же
способом – сначала в программе Database Desktop создадим таблицу
sprkbk.dbf и проиндексируем так же по полю Code.
Рисунок 18 – Структура таблицы sprkbk.dbf (Справочники КБК)
Затем снова открываем новую форму, устанавливаем на нее компоненты Table,
DataSource, DBGrid, DbNavigator и устанавливаем их как обычно. При этом у
компонента Table свойство TableName устанавливаем на таблицу sprkbk.dbf, а
саму форму сохраним как form29. После заполнения во время работы форма
выглядит следующим образом (рисунок 19):
Рисунок 19 – Вид формы “Справочники Кодов Бюджетной Классификации во
время работы программы
Рисунок 20 – Вид формы “Справочники Кодов Бюджетной Классификации во
время проектирования приложения
Для создания справочника Символы кассового плана создадим таблицу
symkas.dbf и проиндексируем по полю KOD. Вот как выглядит ее структура:
Рисунок 21 – Структура таблицы symkas.dbf
Рисунок 22 – Вид формы “Справочник символов кассового плана” во время
проектирования
Спроектируем форму, которая будет отображать данные из таблицы
symkas.dbf, и сохраним ее под названием form17. Состояние формы во время
проектирования и компоненты, установленные на ней, можно видеть на рисунке
22. После заполнения во время работы эта форма имеет следующий вид (рисунок
23):
Рисунок 23 – Вид формы “Справочник символов кассового плана” во время
работы программы
Далее создадим две таблицы viddoc.dbf и vidkasdoc.dbf. Их структуры и
индексные файлы видны из рисунков 24 и 25.
Рисунок 24 – Структура таблицы viddoc.dbf:
Рисунок 25 – Структура таблицы vidkasdoc.dbf:
В Delphi 6 создадим форму и установим на нее компоненты, чтобы получилось
как на рисунке 26.
Рисунок 26 – Вид формы “Справочник документов” во время проектирования
Форма в проекте сохранена под именем form11. Вид формы во время работы:
Документы вверху и внизу формы просматриваются независимо друг от друга.
В Платежных документах просматриваем данные из таблицы viddoc.dbf, а в
Документах кассы идет просмотр данных из таблицы vidkasdoc.dbf.
Теперь создадим справочник валют, для этого сначала создадим таблицу
valuta.dbf. Структуру и индексные файлы этой таблицы можно увидеть на этом
рисунке.
Рисунок 27 – Структура таблицы Valuta.dbf
Проектируем обычным способом форму для просмотра таблицы valuta.dbf.
Форму сохраняем под названием form12.
Вот как выглядит форма во время работы программы (рисунок 28):
Рисунок 28 – Вид формы Справочник валют во время работы программы
Осталось создать справочник Счета кассы. Сначала спроектируем
таблицу Acckass.dbf. Из рисунка внизу можем увидеть структуру этой таблицы
и ее индексные файлы.
Рисунок 29 – Структура таблицы Acckass.dbf
Cпроектируем форму, с помощью которой можно будет вводить и
редактировать данные из этой таблицы. Форму сохраним под именем form28.
Рисунок 29 – Вид формы “Счета кассы” после заполнения во время
работы программы
Справочники разместим в меню программы в разделе Справочники. При
нажатии на этот пункт меню в главном окне программы будет раскрываться
список с видами справочников. При щелчке мышью на одном из пунктов будет
раскрываться соответствующий справочник. Для этого при проектировании меню,
щелкая мышью по нужному пункту, переходим в Редактор Кода и записываем
команду, которая откроет нужную форму. Так для открытия Справочника банков
в Редакторе Кода записываем команду: Form18.ShowModal.
Рисунок 30 – Выбор справочника из меню
2.3 Реквизиты банка
При выборе первого пункта меню Банк появится подменю Реквизиты. При
щелчке мышью по этому подменю выполняется следующая процедура, которую мы
записали в Редакторе Кода:
procedure Tfmmain.N6Click(Sender: TObject);
begin
fmRekvizB.showmodal;
end;
Рисунок 31 – Выбор реквизитов банка из меню
Этот код открывает форму с именем (Name) fmRekvizB в модальном режиме.
Модальный режим означает, что ранее открытые формы (окна) будут недоступны,
пока работает данная форма, и только когда эта форма будет закрыта, можно
будет работать с предыдущей формой. Эта форма предназначена для того,
чтобы отображать данные обслуживающего банка, т.е. того банка, которому
принадлежит Расчетно-Кассовый Центр.
Рисунок 32 – Форма Реквизиты банка во время проектирования
На рисунке вверху форма отображена во время проектирования. На форму были
установлены компоненты Table, DataSource, 11 компонентов DBEdit,
DBNavigator и 1 кнопка Button. Компонент Table с помощью Инспектора
Объектов настраиваем на таблицу bankrec.dbf, структуру которой
предварительно создаем с помощью программы Database Desktop.
Рисунок 33 - Структура таблицы bankrec.dbf и индексный файл:
Компонент DataSource1 настраиваем на Table1 (т.е. на таблицу bankrec.dbf)
, а DBNavigator на DataSource1. У компонента DBNavigator свойство
VisibleButton изменяем таким образом, чтобы остались только две кнопки:
одна для редактирования единственной записи таблицы, а другая для
сохранения сделанных изменений.
Хотя эта таблица будет содержать всего одну запись, она будет многократно
использоваться в документах, которые будут создаваться в программе.
2.4 Клиенты
Теперь перейдем к следующему пункту меню Клиенты. Этот пункт содержит 2
подпункта- Досье и Счета. При нажатии на пункт Досье будет вызываться
форма fmDossie, так как для этого пункта в Редактор Кода была записана
следующая команда:
Рисунок 34 – Выбор клиентов документов банка из меню
procedure Tfmmain.N3Click(Sender: TObject);
begin
fmDossie.Show;
end;
А при нажатии на пункт Счета будет вызываться форма fmAcc, так как для
этого пункта в Редактор Кода записано:
procedure Tfmmain.N4Click(Sender: TObject);
begin
fmAcc.showmodal;
end;
Рисунок 35 – Форма Список участников досье во время проектирования
Покажем, как была спроектирована форма fmDossie с заголовком Список
участников досье, изображенная на рисунке. С помощью команды меню File-New-
Form открываем новую форму. Через Инспектор объектовизменяем следующие
свойства формы:
Caption – Список участников досье
Name – fmDossie.
Затем устанавливаем на форму невизуальные компоненты: 1 Query, 1 Table, 1
ppReport, 1 ppDBPipeLine, 2 DataSource.
В свойстве SQL компонента Query запишем следующий код:
SELECT KOD, NAME, FORMSOBS, RNN, CHIEF, MAINBK, DEISTV, DATA_R, URISDIC,
ADRES, PHONE, OK, PO, DATA_O, FIZ_UR_CH, NOTES, KEM_VIDAN, NO_DOCFIZ,
SVID_REG, KOKPO, ADRES_NALI, PEREDAN
FROM "Urklient.DBF" Urklient
Благодаря этой команде компонент Query будет отображать перечисленные
поля из таблицы Urklient.DBF. Структуру этого файла увидим из рисунка
ниже:
Рисунок 36 – Структура файла UrKlient.dbf
Для того, чтобы Query смог найти эту таблицу на диске, укажем в его
свойстве DataBaseName псевдоним RKOBASE, который является ни чем иным как
указателем пути к папке C:\RKO\BASE, где и находится файл базы данных
Urklient.DBF. Далее 1-ый DataSource настроим на таблицу Urklient.DBF, для
этого в его свойстве Dataset укажем Query1. Имя Datasource1 изменим на
DSDossie.
Компонент Table будет отображать данные из таблицы COUNT.DBF. Для этого
установим свойства:
DataBaseName – RKOBASE
TableName - COUNT.DBF
2-ый DataSource настроим на таблицу Count.DBF, для этого в его свойстве
Dataset укажем Table2. Имя Datasource3 оставим без изменения.
Структуру файла Count.DBF и его индексные файлы увидим из следующего
рисунка:
Рисунок 38 – Структура файла Count.dbf
У компонета ppDBPipeLine изменяем свойства:
DataSource – DSDossie
UserName – DBPipeLine1
У компонента ppReport в свойстве dbPipeLine указываем ppDBPipeLine1.
Теперь построитель отчетов ppReport будет брать данные из DSDossie, а тот в
свою очередь из таблицы Urklient.DBF.
Рисунок 39 – Создание автоматизированного отчета с помощью Report Builder
Двойным щелчком мыши по компоненту ppReport открываем построитель отчетов
Report Builder и настраиваем его соответствующим образом. У элементов
отчета настраиваем свойства DataField на названия полей из таблицы
Urklient.DBF.
Во время работы программы это окно выглядит так:
Рисунок 40 – Вид формы Список участников досье во время работы программы
Кроме этого установили на форму 4 кнопки Button и привели их к виду как
на рисунке сверху.
При нажатии на кнопку с надписью Печать списка участников досье
выполняется команда:
procedure TfmDossie.btnprintClick(Sender: TObject);
begin
ppReport1.print;
end;
Рисунок 41 – Вид отчет во время работы программы
По этой команде открывается окно просмотра отчета, откуда его можно
отправить на печать.
Кнопке с надписью Обновить соответствует следующий программный код:
procedure TfmDossie.btnfindClick(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT * FROM "Urklient.dbf"');
Query1.SQL.Add('WHERE NAME LIKE ' +
QuotedStr(Copy(edtName.Text,1,9)+'% '));
Query1.Open;
Query1.First;
end;
По этой процедуре происходит выборка данных из таблицы Urklient.dbf по
запросу, указанному в окошке Tedit с именем edtName. Если в этом окошке
написать имя участника и нажать на кнопку обновить, то получим список из
имен, удовлетворяющих запросу. Если надо вернуть список в исходное
состояние, достаточно окно Tedit сделать пустым и снова нажать на кнопку
“Обновить”. Результат работы кнопки “Обновить” видим из рисунка внизу:
Рисунок 42 – Вид формы Список участников досье во время выполнения поиска
Кнопка “Выход” закрывает форму, так как ей соответствует команда:
fmDossie.Close;
При нажатии на кнопку Участники досье выполняется команда:
procedure TfmDossie.btnKartClick(Sender: TObject);
begin
fmKart.ShowModal;
end;
Эта команда открывает в модальном режиме форму fmKart. При
проектировании этой формы ее название(Name) изменили на fmKart, а заголовок
Карточка участника досье был записан в свойство Caption. Затем на нее
были установлены стандартные компоненты для просмотра данных из таблицы
Urklient.dbf, и связанной с ней по общему индексированному полю KOD
таблицы account.dbf. В таблице account.dbf записаны номера счетов клиентов
банка. Один клиент может иметь несколько счетов. В этой форме можно
произвести поиск клиента по РНН, при этом устанавливается фильтр для
таблицы Urklient.dbf по заданному РНН. Если надо вернуть возможность
перемещаться по всей таблице, то кнопка с надписью “Выйти из режима поиска”
отменяет установленный фильтр. Вид формы fmKart во время работы программы
показан на рисунке внизу:
Рисунок 43 – Вид формы Карточка участника досье (Клиент) во время работы
программы
Кнопке с надписью Поиск по РНН соответствует процедура:
procedure TfmDossie.btnfindClick(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT * FROM "Urklient.dbf"');
Query1.SQL.Add('WHERE NAME LIKE ' +
QuotedStr(Copy(edtName.Text,1,9)+'% '));
Query1.Open;
Query1.First;
end;
Кнопке с надписью Выйти из режима поиска соответствует процедура:
Procedure TfmKart.Button1Click(Sender: TObject);
begin
TDossie.Filter:='';
TDossie.FilterOptions:=[foCaseInsen sitive];
TDossie.FiLtered:=False;
end;
Кнопка с надписью Выход закрывает форму fmKart, так как ей
соответствует команда fmKart.Close.
Следующим после Досье пунктом меню Клиенты является пункт Счета.
При нажатии на этот пункт появится окно с надписью Счета участников
досье, изображенное на рисунке внизу:
Рисунок 44 – Вид формы Счета участников досье во время проектирования
программы
На форму установлены следующие невизуальные компоненты: 1 Query, 1 Table,
2 DataSource, 2 ppDBPipeLine, 1 ppReport. В свойство DatabaseName
устанавливаем RKOBASE, а в свойстве SQL компонента Query записываем
запрос, по которому этот компонент будет отображать поля KOD и NAME из
таблицы Urklient.dbf:
SELECT KOD, NAME
FROM "Urklient.DBF" Urklient
У компонента DataSource1 свойство DataSet устанавливаем на Query1.
У компонента Table1 свойства устанавливаем так:
DatabaseName – RKOBASE
TableName – Account.dbf
IndexName – KOD
MasterFields – KOD
MasterSource – DataSource1
С помощью последних трех свойств таблица Account.dbf оказывается
связанной с таблицей Urklient.DBF.
У компонента DataSource2 свойство DataSet устанавливаем на Table1.
На форму также установлены 2 компонента DBGrid, у одного из них (у
верхнего) свойство DataSource устанавливаем равным DataSource1(т.е. на
таблицу Urklient.DBF), а у нижнего свойство DataSource устанавливаем на
DataSource2 (таблица Account.dbf). Таким образом, когда в верхней таблице
курсор будет показывать имя клиента, в нижней таблице будут отображаться
все счета, открытые данным клиентом. Под верхней таблицей установлен
компонент DBNavigator1, который позволит перемещаться по записям таблицы
Urklient.DBF. В связи с этим у компонента DBNavigator1 свойство DataSource
также устанавливаем равным DataSource1, и используя свойство VisibleButton
оставляем действующими только 4 кнопки для перемещения по записям.
Рисунок 45 – Настройка полей DBGrid с помощью Редактора полей
Процесс настройки полей с помощью Columns Editor, которые будут
отображаться в DBGrid2, показан на рисунке сверху.
Под второй таблицей устанавливаем такой же компонент DBNavigator2. Его
через свойство DataSource привязываем к DataSource2, и оставляем
действующими все кнопки, так как клиенту, имя которого находится в верхней
таблице может понадобиться открыть счет в банке.
В самой верхней части формы установлены компоненты Tedit и кнопка с
надписью Найти. Щелкнув мышью по этой кнопке 2 раза, переходим в Редактор
Кода и записываем следующую процедуру поиска:
procedure TfmAcc.btnfindClick(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT NAME, KOD FROM "Urklient.dbf"');
Query1.SQL.Add('WHERE NAME LIKE ' +
QuotedStr(Copy(edtName.Text,1,9)+'% '));
Query1.Open;
Query1.First;
end;
Результат такого поиска, по запросу ТОО, вписанному в окошко компонента
Tedit, отображен на рисунке на следующей страницы.
Рисунок 46 – Вид формы Счета участников досье во время работы программы
Также на форме имеется кнопка с надписью Список открытых счетов,
нажатию на эту кнопку соответствует процедура
procedure TfmAcc.Button2Click(Sender: TObject);
begin
ppReport1.Print;
end;
В результате действия этой команды появится окно для просмотра и печати
отчета. Это окно отчета сформировано с помощью 2 компонентов ppDBPipeLine и
1 компонента ppReport, входящими в состав Report Builder. У компонента
ppReport свойство DataPipeLine настроено на ppDBPipeLine1. А у компонента
ppDBPipeLine1 свойство DataSource настроено на DataSource1, т.е. на таблицу
Urklient.dbf. У второго компонента ppDBPipeLine2 свойство DataSource
настроено на DataSource2, причем свойство MasterDataPipeLine настроено на
ppDBPipeLine1. Таким образом, второй компонент ppDBPipeLine2 через
компонент DataSource2 связан с таблицей Account.dbf, но при этом является
подчиненным компоненту ppDBPipeLine1, который в свою очередь привязан к
таблице Urklient.dbf.
После щелчка мышью по компоненту ppReport1 появляется окно
редактирования отчетов, его фрагмент показан внизу:
Рисунок 47 – Вид отчета во время проектирования программы
Во время работы программы при нажатии на кнопку с надписью Список
открытых счетов это окно будет отображать список счетов, имеющихся в
банке:
Рисунок 48 – Вид отчета Список открытых ... продолжение
Введение 8
1 Принципы построения баз данных 10
1.1 Таблицы баз данных и индексы 10
1.2 Обзор компонентов, используемых для связи с базами данных 13
2 Создание приложения для автоматизация работы расчетно-кассового отдела
банка в среде ООП Delphi 6 15
2.1 Создание главной формы приложения 15
2.2 Создание справочников 15
2.3 Реквизиты банка 29
2.4 Клиенты 31
2.5 Создание пункта меню Кассовые документы 45
2.6 Документы кассы 45
2.7 Документы кассы на отправку 53
2.8 Программа КассаРКО 56
2.9 Создание титульной формы программы 65
Приложение А. Программные коды модулей РКО (расчетно-кассовый отдел)
66
Приложение В. Программные коды модулей Кассы РКО (касса расчетно-кассового
отдела) 108
Заключение 133
Список литературы 135
АННОТАЦИЯ
Диплом кіріспеден, 2 бөлімнен, қорытындыдан, қосымшадан және қолданылған
әдебиеттер тізімінен тұрады. Диплом көлемі 131 беттен тұрады. Дипломдық
жұмысының тақырыбы “Банктің есеп-кассалық бөлімінің жұмысын
автоматтандырыру”
АННОТАЦИЯ
Диплом состоит из введения, двух разделов заключения, приложения и
списка использованной литературы. Диплом состоит из 131 страницы. Тема
дипломной работы - Автоматизация работы расчетно-кассового отдела банка.
ANNOTATION
The Diploma consists of introduction, two sections, conclusions,
applications and list of the used literature. The Diploma consists of 131
pages. Subject of the degree work - "Aautomation of the work of cass
department of bank ".
Обозначения и сокращения
Объектно-ориентированное программирование – ООП
Программное обеспечение - ПО
Банковская система – БС
Центральный банк – ЦБ
Республика Казахстан – РК
Операционный фонд – ОФ
Расчетно-кассовый отдел - РКО
Visual Component Library - VCL
Расчетный номер налоплательщика – РНН,
Единый код платежного назначения – ЕКПН
Банковский идентификационный код – БИК
Кодов Бюджетной Классификации – КБК
Введение
Использование самых современных компьютерных технологий приносит банкам
крупные прибыли и помогает им победить в конкурентной борьбе. Любая
автоматизированная банковская система представляет собой сложный аппаратно-
программный комплекс, состоящий из множества взаимосвязанных модулей.
Совершенно очевидна роль сетевых технологий и баз данных в таких системах.
В сущности Банковская Система представляет из себя комплекс, состоящий из
множества локальных и глобальных вычислительных сетей. В банках сегодня
применяется самое современное сетевое и телекоммуникационное оборудование.
От правильного использования новых информационных технологий зависит
эффективность и надежность функционирования банка.
Поскольку спрос на Банковские Системы достаточно велик, а цена высока,
многие крупные компании-производители компьютерной техники и ПО предлагают
на рынке свои разработки в данной области. Перед отделом автоматизации
банка встает трудный вопрос выбора оптимального решения. Банковская сфера
определяет два основных требования к БС - обеспечение надежности и
безопасности передачи коммерческой информации. В последнее время для
взаимодействия с клиентами и осуществления расчетов все чаще используются
открытые глобальные сети (например Internet). Последнее обстоятельство еще
более усиливает значимость защиты передаваемых данных от
несанкционированного доступа. Судя по всему, в ближайшее время темпы
развития БС (особенно в нашей стране) будут стремительно расти. Практически
все появляющиеся сетевые технологии будут быстро браться банками на
вооружение. Неизбежны процессы интеграции банков в рамках национальных и
мировых банковских сообществ. Это обеспечит постоянный рост качества
банковских услуг, от которого выиграют в конечном счете все - и банки и их
клиенты.
Существует 4 основные направления автоматизации банковского дела:
1. Автоматизация деятельности - внутрибанковское обслуживание:
-автоматизация учетно-операционной работы;
-автоматизация - ведения договоров;
-автоматизация - экономической работы БС (расчет нормативов,
прогнозно-аналитические работы)
-автоматизация новых банковских операций (лизинг);
-автоматизация работ с ЦБ.
2. Автоматизация внебанковской деятельности (обслуживание клиентуры):
обслуживание в офисе; использование пластиковых карт.
3.Автоматизация межбанковских расчетов; межфилиальные расчеты; между
банками РК; между банками РК и банками стран СНГ; мн расчеты
(использование СВИФТ);
4. Автоматизация внутрибанковских учетных задач: автоматизация учета
труда, зарплаты; учета ОФ, материалов и пр.
Несмотря на то, что существует определенный стандарт ведения банковских
операций, у каждого взятого в отдельности банка имеются свои особенности
ведения банковской документации и не всегда готовое программное обеспечение
способно удовлетворить эти запросы. Кроме того, не стоит забывать об очень
высокой стоимости специализированного банковского программного обеспечения.
В этих условиях отделы автоматизации банков находят компромиссные решения –
частично используется доступное специализированное ПО, а некоторые
отдельные направления автоматизируются самостоятельно.
Целью моего дипломного проекта является автоматизация расчетно-кассовых
операций. Работу по выполнению расчетно-кассовых операций можно разделить
на 2 части. В первой части ведется непосредственная работа с клиентом
банка, создание Досье для клиента, создание счетов для клиента, ведение
приходно-расходных документов, выгрузка кассовых документов по проведенным
операциям. Вторая часть работы представляет собой формирование отчетных
документов по выгруженным кассовым документам для передачи в бухгалтерию.
Для выполнения поставленной задачи была взята интегрированная среда
разработки Delphi6. В этой среде написаны 2 программы. Программа, которая
выполняет задачи, поставленные в первой части, называется RKObank. Она
содержит множество форм и таблиц баз данных. А для второй части задачи
написана программа KassaRKO. Эта программа содержит только одну форму и
работает, не считая двух справочных файлов, практически с одним файлом,
переданным из первой программы. Передача файлов осуществляется по модему.
1 Принципы построения баз данных
1.1 Таблицы баз данных и индексы
Всегда, когда возникает потребность манипулировать большими массивами
данных, используются базы данных. Коротко рассмотрим эти принципы.
База данных – это прежде всего набор таблиц, хотя иногда в базу данных
могут входить также процедуры и ряд других объектов. Таблицу можно
представлять себе как обычную двумерную таблицу с характеристиками
(атрибутами) какого-то множества объектов. Таблица имеет имя –
идентификатор, по которому на нее можно сослаться. В таблице, изображенной
внизу, приведен фрагмент подобной таблицы с именем Pers, содержащей
сведения о сотрудниках некоторой организации.
Таблица 1 – Структура таблицы Pers
Код Фамилия Имя Отчество Дата ... Адрес ХарактериФотограф
рождения стика ия
Kod Name F_name S_name Data_r ... Adres Note Foto
1 Иванова Мария Сергеевна12.10.65 ... ... ...
2 Актаева Алия Нурлановн22.09.50 ... ... ...
а
3 Бокаева Нургуль Кадыровна31.12.68 ... ... ...
Столбцы таблицы соответствуют тем или иным характеристикам объектов –
полям. Каждое поле характеризуется именем и типом хранящихся данных. Имя
поля – это идентификатор, который используется в различных программах для
манипуляции данными. Он строится по тем же правилам, как любой
идентификатор, т.е. пишется латинскими буквами, состоит из одного слова и
т.д. Таким образом, имя – это не то, что отображается на экране или в
отчете в заголовке столбца (это отображение естественно писать по-русски),
а идентификатор, соответствующий этому заголовку. Например, в таблице
введены для последующих ссылок имена полей Kod, Name, F_name, S_name,
Data_r, Adres, Note, Foto, соответствующие указанным в ней заголовкам
полей.
Тип поля характеризует тип хранящихся в поле данных. Это могут быть
строки, числа, булевы значения, большие тексты (например, характеристики
сотрудников), изображения (фотографии сотрудников) и т.п.
Каждая строка таблицы соответствует одному из объектов. Она называется
записью и содержит значения всех полей, характеризующие данный объект.
При построении таблиц баз данных важно обеспечивать непротиворечивость
информации. Обычно это делается введением ключевых полей, обеспечивающих
уникальность каждой записи. Ключевым может быть одно или несколько полей. В
приведенном выше примере можно былобы сделать ключевыми совокупность полей
Name, F_name и S_name. Но в этом случае нельзя было бы заносить в таблицу
сведения о полных олднофамильцах, у которых совпадают фамилия, имя и
отчество. Поэтому в таблицу введено первое поле Kod - номер, которое можно
сделать ключевым, обеспечивающим уникальность каждой записи.
При работе с таблицей пользователь или программа как бы скользит курсором
по записям. В каждый момент времени есть некоторая текущая запись, с
которой и ведется работа. Записи в таблице базы данных физически могут
располагаться без какого-либо порядка, просто в последовательности их ввода
(появления новых сотрудников). Но когда данные таблицы предъявляются
пользователю, они должны быть упорядочены. Пользователь может хотеть
просматривать их в алфавитном порядке, или рассортированными по отделам,
или по мере нарастания года рождения и т.п. Для упорядочивания данных
используется понятие индекса. Индекс показывает, в какой последовательности
желательности просматривать таблицу. Он является как бы посредником между
пользователем и таблицей.
Рисунок 1 - Схема перемещения курсора по индексу
Курсор скользит по индексу, а индекс указывает на ту или иную запись
таблицы. Для пользователя таблица выглядит упорядоченной, причем он может
сменить индекс и последовательность просматриваемых записей изменится. Но в
действительности это не связано с какой-то перестройкой самой таблицы и с
физическим перемещением в ней записей. Меняется только индекс, т.е.
последовательность ссылок на записи.
Индексы могут быть первичными и вторичными. Например, первичным индексом
могут служить поля, отмеченные при создании базы данных как ключевые. А
вторичные индексы могут создаваться из других полей как в процессе
создания самой базы данных, так и позднее в процессе работы с ней.
Вторичным индексам присваиваются имена – идентификаторы, по которым их
можно использовать.
Если индекс включает в себя несколько полей, то упорядочивание базы
данных сначала осуществляется по первому полю, а для записей, имеющих
одинаковые значения первого поля – по второму и т.д. Например, базу данных
персонала можно индексировать по отделам, а внутри каждого отдела – по
алфавиту.
База данных обычно содержит не одну, а множество таблиц. Например, база
данных о некоторой организации может содержать таблицу имеющихся в ней
подразделений с характеристикой каждого из них. Пример такой таблицы с
именем Dep приведен в следующей таблице:
Отдел Тип
Dep Proisv
Бухгалтерия Управление
Цех1 Производство
Цех2 Производство
Отдельные таблицы, конечно, полезны, но гораздо больше информации можно
извлечь именно из совокупности таблиц. Например, пользователю может
потребоваться узнать общее количество сотрудников, работающих в
производственных цехах. Но ни одна из приведенных выше таблиц не поможет
ответить на этот вопрос, поскольку в таблице Pers отсутствуют сведения о
типах отделов, а в таблице Dep - о сотрудниках. Для получения ответов на
подобные запросы необходимо рассмотрение совокупности связанных таблиц.
Рисунок 2 - Схема взаимодействия главной и вспомогательной таблицы
В связанных таблицах обычно одна выступает как главная, а другая или
несколько других – как вспомогательные, управляемые главной. В этом случае
взаимодействие таблиц иллюстрируется рисунком 2. Главная и вспомогательная
таблицы связываются друг с другом ключом. В качестве ключа могут выступать
какие-то поля, присутствующие в обеих таблицах. Например, в приведенных
ранее таблицах головной может быть таблица Dep, а вспомогательной Pers, а
связываться они могут по полю Dep, присутствующему в обеих таблицах. Курсор
скользит по индексу главной таблицы. Каждой записи в главной таблице ключ
ставит в соответствие в общем случае множество записей вспомогательной
таблицы. Так в нашем примере каждой записи в главной таблицы Dep
соответствуют те записи вспомогательной таблицы Pers, в которых ключевое
поле Dep с названием отдела совпадает с названием отдела в текущей
записи главной таблицы. Иначе говоря, если в текущей записи главной
таблицы в поле Dep написано “Бухгалтерия”, то во вспомогательной таблице
Pers выделяются все записи о сотрудниках бухгалтерии.
Создают базы данных и обрабатывают запросы к ним системы управления
базами данных – СУБД. Известно множество СУБД, различающихся своими
возможностями или обладающих примерно равными возможностями и конкурирующих
друг с другом: Paradox, dBase, Microsoft Access, FoxPro, Oracle, InterBase,
и много других.
Разные СУБД по-разному организуют и хранят базы данных. Например, Paradox
и dBase используют для каждой таблицы отдельный файл. В этом случае база
данных – это каталог, в котором хранятся файлы таблиц. В Microsoft Access и
InterBase несколько таблиц хранятся как один файл. В этом случае база
данных – это имя файла с путем доступа к нему. Системы типа клиентсервер,
такие, как серверы Sybase или Microsoft SQL, хранят все данные на отдельном
компьютере и общаются с клиентом посредством специального языка,
называемого SQL.
Поскольку конкретные свойства баз данных очень разнообразны, пользователю
было бы весьма затруднительно работать, если бы он должен был указывать в
своем приложении все эти каталоги, файлы, серверы и т.п. Да и приложение
часто пришлось бы переделывать при смене, например, структуры каталогов и
при переходе с одного компьютера на другой. Чтобы решить эту проблему,
используют псевдонимы баз данных. Псевдоним (alias) содержит всю
информацию, необходимую для обеспечения доступа к базе данных. Эта
информация сообщается только один раз при создании псевдонима. А приложение
для связи с базой данных использует псевдоним. В этом случае приложению
безразлично, где физически расположена та или иная база данных, а часто
безразлична и СУБД, создавшая и обслуживающая эту базу данных. При смене
системы каталогов, сервера и т.п. ничего в приложении переделывать не надо.
Достаточно, чтобы администратор базы данных ввел соответствующую информацию
в псевдоним.
1.2 Обзор компонентов, используемых для связи с базами данных
Компоненты, используемые для работы с базами данных, расположены в
библиотеке компонентов на страницах Data Access (доступ к данным), BDE
(проектирование базы данных) и DataControl (управление данными).
Каждое приложение, использующее базы данных, обычно имеет, по крайней
мере, по одному компоненту следующих трех типов:
• Компоненты – наборы данных (data set), непосредственно
связывающиеся с базой данных. Это такие компоненты, как Table,
Query, StoredProc.
• Компонент – источник данных (data source), осуществляющий обмен
информацией между компонентами первого типа и компонентами
визуализации и управления данными. Таким компонентом является
DataSource.
• Компоненты визуализации и управления данными, такие, как DBGrid,
DBText, DBEdit и множество других.
Связь этих компонентов друг с другом и с базой данных можно представить
схемой, приведенной на рисунке внизу:
Рисунок 3 - Схема взаимодействия компонентов Delphi с базой данных
Помимо указанных компонентов в приложении может размещаться компонент
Database. Этот компонент в основном используется в приложениях, работающих
на платформе клиентсервер. Его задачи связаны с общением с удаленным
сервером, реализацией транзакций, работой с паролями. Компонент Database
целесообразно вводить в приложении только в сравнительно редких случаях.
Если он не введен явно, Delphi автоматически создает его для каждой
используемой в приложении базы данных.
Еще один компонент, который тоже автоматически создает Delphi – компонент
Session. Это главный компонент любого приложения, работающего с базами
данных. Но в явном виде эти компоненты имеет смысл вводить только в
многозадачные приложения, в которых обрабатывается несколько потоков
информации.
2 Создание приложения для автоматизация работы расчетно-кассового отдела
банка в среде ООП Delphi 6
2.1 Создание главной формы приложения
Для того, чтобы управлять документами Расчетно-Кассового Отдела, создадим
новое приложение с помощью команды меню File-New-Application. После
выполнения этих команд откроется новая форма. С помощью Инспектора Объектов
изменим свойство Name данной формы на fmMain, а в свойство Caption впишем
Автоматизация работы расчетно-кассового отдела банка- эта надпись
появится в заголовке формы. Для того чтобы создать меню, установим
компонент MainMenu. C его помощью создаем меню как показано на рисунке:
Рисунок 4 – Вид формы приложения fmMain во время проектирования
Затем сохраняем проект под названием BankRKO. Расширение .dpr
присваивается проекту автоматически.
2.2 Создание справочников
Наша программа будет состоять из двух частей – РКО (расчетно-кассовый
отдел) и Касса РКО (Касса расчетно-кассового отдела).
В расчетно-кассовом отделе будут приниматься платежи по разным видам от
физических и юридических лиц, будут заводиться счета для клиентов и т.д.
Для этого в программе надо создать ряд таблиц, в том числе и справочных,
вспомогательных, значения в которых изменяются крайне редко. С создания
таких справочников мы и начнем. Справочники будут храниться в таблицах.
Таблицы создадим с помощью входящей в интегрированную среду
программирования Delphi 6 программы Database Desktop. Для этого запустим
в Delphi 6 эту программу с помощью команды Tools-Database Desktop.
В открывшемся окне с помощью команд меню File-New-Table создадим новую
таблицу (рисунок 5).
Рисунок 5 – Создание новой таблицы с помощью программы Database
Desktop
После этой команды появится диалоговое окно, в котором надо выбрать тип
таблицы. Мы выберем тип таблиц dBase IV (рисунок 6).
Рисунок 6 – Диалоговое окно для выбора типа таблицы
После этого появится диалоговое окно, с помощью которого создается
структура таблиц баз данных (рисунок 7).
Рисунок 7 – Диалоговое окно для создания структуры таблицы
В этом окне надо ввести названия полей, указать их типы, длину полей, и
если необходимо определить индексные файлы и прочее. Названия полей будем
вводить в столбце Field name, типы полей – в столбце Type, длину полей
укажем в столбце Size, а если поле числовое, то количество знаков после
десятичной точки указываем в столбце Dec.
Первым делом создадим Справочник банков.
Для этого создадим файл bank.dbf . Его структура видна из рисунка 8.
Рисунок 8 – Структура таблицы bank.dbf
Так же для этой таблицы создадим индексный файл Kodb по одноименному полю
Kodb.
Затем открываем новую форму, устанавливаем на нее со страницы Standart 2
компонента Panel, а на них следующие невизуальные компоненты: DataSource и
Table со страниц библиотеки VCL (Visual Component Library) – Data Access и
BDE соответственно. Расположение невизуальных компонентов не имеет
значения, так как во время работы программы они на экране не отображаются.
Со страницы Data Control выберем компоненты DBGrid и DBNavigator.
Компонент DBNavigator установим на верхнюю панель, а на нижнюю панель
установим DBGrid. На верней панели справа от компонента DBNavigator
установим компонент Button со страницы Standart.
Свяжем между собой визуальные и невизуальные компоненты. Для этого с
помощью Инспектора Объектов изменим свойства компонентов следующим образом:
У компонента Table
DatabaseName – RKOBASE
TableName – bank.dbf
У компонента DataSource
Dataset – Table1
Свойства Name обоих компонентов Table и DataSource оставим без изменения
– Table1 и DataSource1.
Свойства DataSource обоих компонентов DBGrid и DBNavigator установим на
DataSource1.
Рисунок 9 – Изменение заголовков полей таблицы с помощью Columns
Editor
Далее, выделив компонент DBGrid, нажав на правую кнопку, из контексного
меню вызовем Редактор строк (Columns Editor). Он изображен на рисунке
сверху. С его помощью выберем те поля из таблицы bank.dbf, которые хотим
вывести на экран. При этом, выделяя в Реакторе Строк нужное поле, с помощью
Инспектора Объектов в подсвойстве Caption свойства Title изменяем
заголовок поля.
Кнопку Button переименуем, изменив в Инспекторе Объектов его свойство
Caption , туда впишем – Закрыть. Затем двойным щелчком мыши по кнопке
Button- Закрыть перейдем в Редактор Кода и запишем команду, которая будет
закрывать при нажатии на эту кнопку данную форму и таблицу, расположенную
на этой форме (форма во время работы сохранилась под номером 18 – Form18):
procedure TForm18.Button1Click(Sender: TObject);
begin
Table1.Close;
Form18.Close;
end;
Теперь изменим надпись в заголовке формы. Выделим форму и в свойство
Caption впишем “Справочник банков”. Затем в Инспекторе Объектов переходим
на вкладку Events, и затем выбрав событие FormShow двойным щелчком мышью
переходим в Редактор Кода и запишем:
procedure TForm18.FormShow(Sender: TObject);
begin
Table1.Open;
end;
С помощью этого кода таблица Table1 будет автоматически открываться
каждый раз при открытии формы, которую сохранили как form18. В результате
форма придет к виду, изображенному здесь:
Рисунок 10 – Вид формы form18 после изменения заголовков полей
Во время работы программы после заполнения данными эта форма выглядит
следующим образом:
Рисунок 11 – Вид формы form18 во время работы программы
Следующий справочник, который мы создадим – это справочник контрагентов.
Для этого сначала создадим структуру этой таблицы с помощью программы
Database Desktop. Таблицу проиндексируем по полю S_PLPO. Созданную таблицу
сохраним под названием kontr.dbf.
Рисунок 12 – Структура таблицы kontr.dbf
Затем, открыв новую форму, изменяем на ней заголовок сверху с помощью
свойства Caption в Инспекторе Объектов на Реквизиты контрагентов. После
этого устанавливаем на форму сначала невизуальные компоненты – 1 Table, 1
DataSource, 1 ppReport, 1 ppDBPipeline. Компоненты ppReport и ppDBPipeline
находятся на странице Rbuilder, которая появляется в библиотеке VCL после
установки программы Report Builder. Кроме этого из визуальных компонентов
установим следующие DBGrid, DBNavigator, 5 DBEdit, 4 Label, 2 Button
(Рисунок 13). Далее везде свойство DataBaseName будет настраиваться на базу
данных с псевдонимом RKOBASE. Псевдоним RKOBASE указывает путь к базе
данных, находящейся в каталоге C:\RKO\BASE. Поэтому у соответствующих
компонентов это свойство указывать не будем.
Настроим свойства компонентов следующим образом:
У компонента Table1 свойство TableName – kontr.dbf, свойство
IndexFieldName – S_PLPO.
У компонента DataSource1 свойство DataSet настраиваем на Table1.
Свойство DataSource компонента ppDBPipeline1 устанавливаем на
DataSource1, а свойство DataPipeLine компонента ppReport1 на
ppDBPipeline1. Таким образом, при формировании отчетов компонент ppReport1
будет брать данные из таблицы kontr.dbf.
Рисунок 13 – Вид формы Реквизиты контрагентов во время проектирования
приложения
Далее компоненты DBGrid и DBNavigator с помощью свойств Datasource так же
настраиваем Datasource1, то есть на таблицу kontr.dbf. При этом при
перемещении по строкам DBGrid (kontr.dbf) будут отображаться наименования
контрагентов, а внизу будут отображены их РНН, номер счета, код ЕКПН
(единый код платежного назначения), БИК (банковский идентификационный код).
Для этого внизу устанавливаем 5 компонентов DBEdit, у них всех свойство
Datasource так же устанавливаем равным Datasource1. Но свойство DataField у
каждого будет свое – RNN (РНН), MFO_PLPO(БИК), S_PLPO(Счета), OK, PO
(ЕКПН). Для того, чтобы таблица была доступна для работы, откроем ее с
помощью кода:
procedure TForm10.FormShow(Sender: TObject);
begin
Table1.Open;
end;
То есть мы выбрали для формы в Инспекторе Объектов вкладку Events
(События) и для события FormShow записали команду, указанную вверху.
Кроме этого, внизу установим 2 компонента Button. На одном из них сделаем
надпись - “Печать списка контрагентов”, а на другом - “Выход”. Щелкнув
два раза мышью на кнопке с надписью “Печать списка контрагентов”, перейдем
в Редактор кода и запишем команду:
procedure TForm10.Button2Click(Sender: TObject);
begin
ppReport1.Print;
end;
Эта команда обеспечивает вывод окна для просмотра и печати списка
контрагентов:
Рисунок 14 – Вид окна для просмотра и печати списка контрагентов
Для кнопки “Закрыть” запишем в Редакторе кода:
procedure TForm10.Button1Click(Sender: TObject);
begin
Table1.Close;
Form10.Close;
end;
Форма в программе сохранена под названием form10. В результате во время
работы программы форма будет иметь вид, как на рисунке внизу:
Рисунок 15 – Вид формы “Реквизиты контрагентов” во время работы
приложения
По этой же схеме создаем Справочник КНП. Для этого создадим таблицу
sprknp.dbf с помощью Database Desktop. Ее структуру можно увидеть на
рисунке внизу:
Рисунок 16 – Структура таблицы sprknp.dbf (Справочники КНП)
Эта таблица проиндексирована по первому полю Code. После установки и
настройки должным способом обычных для таких форм компонентов (Table,
DataSource, DBGrid, DBNavigator), при этом Table настраиваем на таблицу
sprknp.dbf, приводим форму к виду, изображенному на рисунке внизу, и
сохраним под именем form30:
Рисунок 17 – Вид формы” Справочники КНП” во время работы программы
Справочник КБК (Кодов Бюджетной Классификации) создаем точно таким же
способом – сначала в программе Database Desktop создадим таблицу
sprkbk.dbf и проиндексируем так же по полю Code.
Рисунок 18 – Структура таблицы sprkbk.dbf (Справочники КБК)
Затем снова открываем новую форму, устанавливаем на нее компоненты Table,
DataSource, DBGrid, DbNavigator и устанавливаем их как обычно. При этом у
компонента Table свойство TableName устанавливаем на таблицу sprkbk.dbf, а
саму форму сохраним как form29. После заполнения во время работы форма
выглядит следующим образом (рисунок 19):
Рисунок 19 – Вид формы “Справочники Кодов Бюджетной Классификации во
время работы программы
Рисунок 20 – Вид формы “Справочники Кодов Бюджетной Классификации во
время проектирования приложения
Для создания справочника Символы кассового плана создадим таблицу
symkas.dbf и проиндексируем по полю KOD. Вот как выглядит ее структура:
Рисунок 21 – Структура таблицы symkas.dbf
Рисунок 22 – Вид формы “Справочник символов кассового плана” во время
проектирования
Спроектируем форму, которая будет отображать данные из таблицы
symkas.dbf, и сохраним ее под названием form17. Состояние формы во время
проектирования и компоненты, установленные на ней, можно видеть на рисунке
22. После заполнения во время работы эта форма имеет следующий вид (рисунок
23):
Рисунок 23 – Вид формы “Справочник символов кассового плана” во время
работы программы
Далее создадим две таблицы viddoc.dbf и vidkasdoc.dbf. Их структуры и
индексные файлы видны из рисунков 24 и 25.
Рисунок 24 – Структура таблицы viddoc.dbf:
Рисунок 25 – Структура таблицы vidkasdoc.dbf:
В Delphi 6 создадим форму и установим на нее компоненты, чтобы получилось
как на рисунке 26.
Рисунок 26 – Вид формы “Справочник документов” во время проектирования
Форма в проекте сохранена под именем form11. Вид формы во время работы:
Документы вверху и внизу формы просматриваются независимо друг от друга.
В Платежных документах просматриваем данные из таблицы viddoc.dbf, а в
Документах кассы идет просмотр данных из таблицы vidkasdoc.dbf.
Теперь создадим справочник валют, для этого сначала создадим таблицу
valuta.dbf. Структуру и индексные файлы этой таблицы можно увидеть на этом
рисунке.
Рисунок 27 – Структура таблицы Valuta.dbf
Проектируем обычным способом форму для просмотра таблицы valuta.dbf.
Форму сохраняем под названием form12.
Вот как выглядит форма во время работы программы (рисунок 28):
Рисунок 28 – Вид формы Справочник валют во время работы программы
Осталось создать справочник Счета кассы. Сначала спроектируем
таблицу Acckass.dbf. Из рисунка внизу можем увидеть структуру этой таблицы
и ее индексные файлы.
Рисунок 29 – Структура таблицы Acckass.dbf
Cпроектируем форму, с помощью которой можно будет вводить и
редактировать данные из этой таблицы. Форму сохраним под именем form28.
Рисунок 29 – Вид формы “Счета кассы” после заполнения во время
работы программы
Справочники разместим в меню программы в разделе Справочники. При
нажатии на этот пункт меню в главном окне программы будет раскрываться
список с видами справочников. При щелчке мышью на одном из пунктов будет
раскрываться соответствующий справочник. Для этого при проектировании меню,
щелкая мышью по нужному пункту, переходим в Редактор Кода и записываем
команду, которая откроет нужную форму. Так для открытия Справочника банков
в Редакторе Кода записываем команду: Form18.ShowModal.
Рисунок 30 – Выбор справочника из меню
2.3 Реквизиты банка
При выборе первого пункта меню Банк появится подменю Реквизиты. При
щелчке мышью по этому подменю выполняется следующая процедура, которую мы
записали в Редакторе Кода:
procedure Tfmmain.N6Click(Sender: TObject);
begin
fmRekvizB.showmodal;
end;
Рисунок 31 – Выбор реквизитов банка из меню
Этот код открывает форму с именем (Name) fmRekvizB в модальном режиме.
Модальный режим означает, что ранее открытые формы (окна) будут недоступны,
пока работает данная форма, и только когда эта форма будет закрыта, можно
будет работать с предыдущей формой. Эта форма предназначена для того,
чтобы отображать данные обслуживающего банка, т.е. того банка, которому
принадлежит Расчетно-Кассовый Центр.
Рисунок 32 – Форма Реквизиты банка во время проектирования
На рисунке вверху форма отображена во время проектирования. На форму были
установлены компоненты Table, DataSource, 11 компонентов DBEdit,
DBNavigator и 1 кнопка Button. Компонент Table с помощью Инспектора
Объектов настраиваем на таблицу bankrec.dbf, структуру которой
предварительно создаем с помощью программы Database Desktop.
Рисунок 33 - Структура таблицы bankrec.dbf и индексный файл:
Компонент DataSource1 настраиваем на Table1 (т.е. на таблицу bankrec.dbf)
, а DBNavigator на DataSource1. У компонента DBNavigator свойство
VisibleButton изменяем таким образом, чтобы остались только две кнопки:
одна для редактирования единственной записи таблицы, а другая для
сохранения сделанных изменений.
Хотя эта таблица будет содержать всего одну запись, она будет многократно
использоваться в документах, которые будут создаваться в программе.
2.4 Клиенты
Теперь перейдем к следующему пункту меню Клиенты. Этот пункт содержит 2
подпункта- Досье и Счета. При нажатии на пункт Досье будет вызываться
форма fmDossie, так как для этого пункта в Редактор Кода была записана
следующая команда:
Рисунок 34 – Выбор клиентов документов банка из меню
procedure Tfmmain.N3Click(Sender: TObject);
begin
fmDossie.Show;
end;
А при нажатии на пункт Счета будет вызываться форма fmAcc, так как для
этого пункта в Редактор Кода записано:
procedure Tfmmain.N4Click(Sender: TObject);
begin
fmAcc.showmodal;
end;
Рисунок 35 – Форма Список участников досье во время проектирования
Покажем, как была спроектирована форма fmDossie с заголовком Список
участников досье, изображенная на рисунке. С помощью команды меню File-New-
Form открываем новую форму. Через Инспектор объектовизменяем следующие
свойства формы:
Caption – Список участников досье
Name – fmDossie.
Затем устанавливаем на форму невизуальные компоненты: 1 Query, 1 Table, 1
ppReport, 1 ppDBPipeLine, 2 DataSource.
В свойстве SQL компонента Query запишем следующий код:
SELECT KOD, NAME, FORMSOBS, RNN, CHIEF, MAINBK, DEISTV, DATA_R, URISDIC,
ADRES, PHONE, OK, PO, DATA_O, FIZ_UR_CH, NOTES, KEM_VIDAN, NO_DOCFIZ,
SVID_REG, KOKPO, ADRES_NALI, PEREDAN
FROM "Urklient.DBF" Urklient
Благодаря этой команде компонент Query будет отображать перечисленные
поля из таблицы Urklient.DBF. Структуру этого файла увидим из рисунка
ниже:
Рисунок 36 – Структура файла UrKlient.dbf
Для того, чтобы Query смог найти эту таблицу на диске, укажем в его
свойстве DataBaseName псевдоним RKOBASE, который является ни чем иным как
указателем пути к папке C:\RKO\BASE, где и находится файл базы данных
Urklient.DBF. Далее 1-ый DataSource настроим на таблицу Urklient.DBF, для
этого в его свойстве Dataset укажем Query1. Имя Datasource1 изменим на
DSDossie.
Компонент Table будет отображать данные из таблицы COUNT.DBF. Для этого
установим свойства:
DataBaseName – RKOBASE
TableName - COUNT.DBF
2-ый DataSource настроим на таблицу Count.DBF, для этого в его свойстве
Dataset укажем Table2. Имя Datasource3 оставим без изменения.
Структуру файла Count.DBF и его индексные файлы увидим из следующего
рисунка:
Рисунок 38 – Структура файла Count.dbf
У компонета ppDBPipeLine изменяем свойства:
DataSource – DSDossie
UserName – DBPipeLine1
У компонента ppReport в свойстве dbPipeLine указываем ppDBPipeLine1.
Теперь построитель отчетов ppReport будет брать данные из DSDossie, а тот в
свою очередь из таблицы Urklient.DBF.
Рисунок 39 – Создание автоматизированного отчета с помощью Report Builder
Двойным щелчком мыши по компоненту ppReport открываем построитель отчетов
Report Builder и настраиваем его соответствующим образом. У элементов
отчета настраиваем свойства DataField на названия полей из таблицы
Urklient.DBF.
Во время работы программы это окно выглядит так:
Рисунок 40 – Вид формы Список участников досье во время работы программы
Кроме этого установили на форму 4 кнопки Button и привели их к виду как
на рисунке сверху.
При нажатии на кнопку с надписью Печать списка участников досье
выполняется команда:
procedure TfmDossie.btnprintClick(Sender: TObject);
begin
ppReport1.print;
end;
Рисунок 41 – Вид отчет во время работы программы
По этой команде открывается окно просмотра отчета, откуда его можно
отправить на печать.
Кнопке с надписью Обновить соответствует следующий программный код:
procedure TfmDossie.btnfindClick(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT * FROM "Urklient.dbf"');
Query1.SQL.Add('WHERE NAME LIKE ' +
QuotedStr(Copy(edtName.Text,1,9)+'% '));
Query1.Open;
Query1.First;
end;
По этой процедуре происходит выборка данных из таблицы Urklient.dbf по
запросу, указанному в окошке Tedit с именем edtName. Если в этом окошке
написать имя участника и нажать на кнопку обновить, то получим список из
имен, удовлетворяющих запросу. Если надо вернуть список в исходное
состояние, достаточно окно Tedit сделать пустым и снова нажать на кнопку
“Обновить”. Результат работы кнопки “Обновить” видим из рисунка внизу:
Рисунок 42 – Вид формы Список участников досье во время выполнения поиска
Кнопка “Выход” закрывает форму, так как ей соответствует команда:
fmDossie.Close;
При нажатии на кнопку Участники досье выполняется команда:
procedure TfmDossie.btnKartClick(Sender: TObject);
begin
fmKart.ShowModal;
end;
Эта команда открывает в модальном режиме форму fmKart. При
проектировании этой формы ее название(Name) изменили на fmKart, а заголовок
Карточка участника досье был записан в свойство Caption. Затем на нее
были установлены стандартные компоненты для просмотра данных из таблицы
Urklient.dbf, и связанной с ней по общему индексированному полю KOD
таблицы account.dbf. В таблице account.dbf записаны номера счетов клиентов
банка. Один клиент может иметь несколько счетов. В этой форме можно
произвести поиск клиента по РНН, при этом устанавливается фильтр для
таблицы Urklient.dbf по заданному РНН. Если надо вернуть возможность
перемещаться по всей таблице, то кнопка с надписью “Выйти из режима поиска”
отменяет установленный фильтр. Вид формы fmKart во время работы программы
показан на рисунке внизу:
Рисунок 43 – Вид формы Карточка участника досье (Клиент) во время работы
программы
Кнопке с надписью Поиск по РНН соответствует процедура:
procedure TfmDossie.btnfindClick(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT * FROM "Urklient.dbf"');
Query1.SQL.Add('WHERE NAME LIKE ' +
QuotedStr(Copy(edtName.Text,1,9)+'% '));
Query1.Open;
Query1.First;
end;
Кнопке с надписью Выйти из режима поиска соответствует процедура:
Procedure TfmKart.Button1Click(Sender: TObject);
begin
TDossie.Filter:='';
TDossie.FilterOptions:=[foCaseInsen sitive];
TDossie.FiLtered:=False;
end;
Кнопка с надписью Выход закрывает форму fmKart, так как ей
соответствует команда fmKart.Close.
Следующим после Досье пунктом меню Клиенты является пункт Счета.
При нажатии на этот пункт появится окно с надписью Счета участников
досье, изображенное на рисунке внизу:
Рисунок 44 – Вид формы Счета участников досье во время проектирования
программы
На форму установлены следующие невизуальные компоненты: 1 Query, 1 Table,
2 DataSource, 2 ppDBPipeLine, 1 ppReport. В свойство DatabaseName
устанавливаем RKOBASE, а в свойстве SQL компонента Query записываем
запрос, по которому этот компонент будет отображать поля KOD и NAME из
таблицы Urklient.dbf:
SELECT KOD, NAME
FROM "Urklient.DBF" Urklient
У компонента DataSource1 свойство DataSet устанавливаем на Query1.
У компонента Table1 свойства устанавливаем так:
DatabaseName – RKOBASE
TableName – Account.dbf
IndexName – KOD
MasterFields – KOD
MasterSource – DataSource1
С помощью последних трех свойств таблица Account.dbf оказывается
связанной с таблицей Urklient.DBF.
У компонента DataSource2 свойство DataSet устанавливаем на Table1.
На форму также установлены 2 компонента DBGrid, у одного из них (у
верхнего) свойство DataSource устанавливаем равным DataSource1(т.е. на
таблицу Urklient.DBF), а у нижнего свойство DataSource устанавливаем на
DataSource2 (таблица Account.dbf). Таким образом, когда в верхней таблице
курсор будет показывать имя клиента, в нижней таблице будут отображаться
все счета, открытые данным клиентом. Под верхней таблицей установлен
компонент DBNavigator1, который позволит перемещаться по записям таблицы
Urklient.DBF. В связи с этим у компонента DBNavigator1 свойство DataSource
также устанавливаем равным DataSource1, и используя свойство VisibleButton
оставляем действующими только 4 кнопки для перемещения по записям.
Рисунок 45 – Настройка полей DBGrid с помощью Редактора полей
Процесс настройки полей с помощью Columns Editor, которые будут
отображаться в DBGrid2, показан на рисунке сверху.
Под второй таблицей устанавливаем такой же компонент DBNavigator2. Его
через свойство DataSource привязываем к DataSource2, и оставляем
действующими все кнопки, так как клиенту, имя которого находится в верхней
таблице может понадобиться открыть счет в банке.
В самой верхней части формы установлены компоненты Tedit и кнопка с
надписью Найти. Щелкнув мышью по этой кнопке 2 раза, переходим в Редактор
Кода и записываем следующую процедуру поиска:
procedure TfmAcc.btnfindClick(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT NAME, KOD FROM "Urklient.dbf"');
Query1.SQL.Add('WHERE NAME LIKE ' +
QuotedStr(Copy(edtName.Text,1,9)+'% '));
Query1.Open;
Query1.First;
end;
Результат такого поиска, по запросу ТОО, вписанному в окошко компонента
Tedit, отображен на рисунке на следующей страницы.
Рисунок 46 – Вид формы Счета участников досье во время работы программы
Также на форме имеется кнопка с надписью Список открытых счетов,
нажатию на эту кнопку соответствует процедура
procedure TfmAcc.Button2Click(Sender: TObject);
begin
ppReport1.Print;
end;
В результате действия этой команды появится окно для просмотра и печати
отчета. Это окно отчета сформировано с помощью 2 компонентов ppDBPipeLine и
1 компонента ppReport, входящими в состав Report Builder. У компонента
ppReport свойство DataPipeLine настроено на ppDBPipeLine1. А у компонента
ppDBPipeLine1 свойство DataSource настроено на DataSource1, т.е. на таблицу
Urklient.dbf. У второго компонента ppDBPipeLine2 свойство DataSource
настроено на DataSource2, причем свойство MasterDataPipeLine настроено на
ppDBPipeLine1. Таким образом, второй компонент ppDBPipeLine2 через
компонент DataSource2 связан с таблицей Account.dbf, но при этом является
подчиненным компоненту ppDBPipeLine1, который в свою очередь привязан к
таблице Urklient.dbf.
После щелчка мышью по компоненту ppReport1 появляется окно
редактирования отчетов, его фрагмент показан внизу:
Рисунок 47 – Вид отчета во время проектирования программы
Во время работы программы при нажатии на кнопку с надписью Список
открытых счетов это окно будет отображать список счетов, имеющихся в
банке:
Рисунок 48 – Вид отчета Список открытых ... продолжение
Похожие работы
Дисциплины
- Информатика
- Банковское дело
- Оценка бизнеса
- Бухгалтерское дело
- Валеология
- География
- Геология, Геофизика, Геодезия
- Религия
- Общая история
- Журналистика
- Таможенное дело
- История Казахстана
- Финансы
- Законодательство и Право, Криминалистика
- Маркетинг
- Культурология
- Медицина
- Менеджмент
- Нефть, Газ
- Искуство, музыка
- Педагогика
- Психология
- Страхование
- Налоги
- Политология
- Сертификация, стандартизация
- Социология, Демография
- Статистика
- Туризм
- Физика
- Философия
- Химия
- Делопроизводсто
- Экология, Охрана природы, Природопользование
- Экономика
- Литература
- Биология
- Мясо, молочно, вино-водочные продукты
- Земельный кадастр, Недвижимость
- Математика, Геометрия
- Государственное управление
- Архивное дело
- Полиграфия
- Горное дело
- Языковедение, Филология
- Исторические личности
- Автоматизация, Техника
- Экономическая география
- Международные отношения
- ОБЖ (Основы безопасности жизнедеятельности), Защита труда