Поиск

Полнотекстовый поиск:
Где искать:
везде
только в названии
только в тексте
Выводить:
описание
слова в тексте
только заголовок

Рекомендуем ознакомиться

'Документ'
Учебно – методический комплекс по дисциплине «Управление персоналом» составлен в соответствии с требованиями Государственного образовательного станда...полностью>>
'Темы рефератов'
Победители награждаются Дипломами межрегиональной Олимпиады I, II, III степени и получают право обучения в НОУ ВПО «МИГКУ» на льготных условиях со ск...полностью>>
'Сочинение'
Сегодня утром я проснулась и удивилась, насколько же прекрасно зимнее утро. Хотя кто-то и не знает, что такое зима, а мы, северяне, знаем это как никт...полностью>>
'Автореферат диссертации'
Защита состоится “20” ноября 2009 г. в 14.00 ч. на заседании Диссертационного Совета Д 212.043.01 по присуждению ученой степени доктора экономических...полностью>>

Зміст (35)

Главная > Документ
Сохрани ссылку в одной из сетей:




Зміст

Зміст 2

1. Вступ 3

2. Розробка програмного забезпечення для АІС “Облік автомобілів” 5

2.1. Постановка задачі 5

2.2. Створення проекту «АІС Облік автомобілів» 6

2.3. Реалізація проекту “АІС Облік автомобілів” 9

3. Висновки 18

4. Література 19

5. Додатки 20

1. Вступ

Метою даного курсового проекту є поглиблення знань з дисципліни "Технологія створення програмного забезпечення". Одним з базових понять методології проектування інформаційних систем є поняття життєвого циклу його програмного забезпечення (ЖЦ ПЗ). Життєвий цикл програмного забезпечення — це безперервний процес, який починається з моменту прийняття рішення про необхідність його створення і закінчується в момент його повного вилучення з експлуатації.

Структуру життєвого циклу може базуватися на таких групах процесів:

  • основні процеси ЖЦ ПЗ (придбання, постачання, розробка, експлуатація, супровід);

  • допоміжні процеси, що забезпечують виконання основних процесів

  • (документування, управління конфігурацією, забезпечення якості, верифікація, атестація, оцінка, аудит, розв'язання проблем);

  • організаційні процеси (управління проектами, створення інфраструктури проекту, визначення, оцінка і поліпшення самого ЖЦ, навчання).

Хотів би зупинитися на такому важливому процесі як розробка. Розробка включає в себе всі роботи по створенню програмного забезпечення і його компонентів відповідно до заданих вимог, включаючи оформлення проектної і експлуатаційної документації, підготовку матеріалів, необхідних для перевірки працездатності і відповідної якості програмних продуктів, матеріалів, необхідної для організації навчання персоналу і т.д

Розробка ПЗ включає в себе такі три основні етапи:

  • аналіз;

  • проектування;

  • реалізацію (програмування)

Саме ці три основні етапи я хотів би пройти при вирішенні поставленої задачі, а саме "АІС Облік автомобілів".

Курсовий проект складає ться з трьох частин висновків та додатків. У перші й частині проводиться постановка задачі, тобто іншими словами можна сказати аналізується поставлена задача У другій частині відбувається проектування цієї задачі, на основі постановки відбувається процес проектування. У третій частині подається опис реалізації.

Я вибрав дану тему тому, що я, як і кожна людина, подорожую і мене вразила недосконала система реєстрації автомобілів.

Я ж зупинився на розробці прикладного програмного забезпечення для автоматизації пошуку інформації в базах даних, використавши за об'єкт дослідження дані, що зберігаються в базі даних ДАІ України. Я зупинився на ції темі з кількох причин:

• сама база даних представляє собою великий інтерес як поле для плідної творчої діяльності

• накопичення великої кількості інформації, обробка якої стандартними методами забирала б багато часу та робочої сили

• існуюча програма, що повинна забезпечувати потрібні можливості не виконує все, що від неї вимагається

• потрібна програма, яка б працювала в операційній системі Microsoft Windows і була сумісна з такими відомими типами серверів як Oracle, Sybase, InterBase, ODBC Socket та іншими.

Отже, сьогоднішній стан справ на комп'ютерному ринку вимагає негайного написання прикладної програми, яка б дозволяла здійснювати накопичення, збереження, обробку та швидкий пошук потрібної інформації в базі даних ДАІ України.

Саме такою і є “АІС Облік атомобілів“ (надалі просто СУБД) розроблена мною.

2. Розробка програмного забезпечення для АІС “Облік автомобілів”

2.1. Постановка задачі

За більш ніж 25-річну історію розвитку реляційних баз даних виробився ряд нових вимог до методів та засобів доступу до даних. За таку довгу історію в промисловому використанні найшли своє місце велика кількість форматів зберігання даних. Тому одним з наступних питань подальшого розвитку СУБД стало питання про створення єдиного середовище обробки даних. Вирішенням такої проблеми займаються консорціуми провідних постачальників засобів обробки даних X/Open, SAG (SQL Accesss Group), що розвивають на базі стандартів ANSI/ISO єдину специфікацію доступу до даних CLI (call-level interface). На базі цих специфікацій і багаторічного досвіду створення інструментальних засобів компанія Borland представила розробникам свою технологію доступу до даних-BDE (Borland Database Engine), відому також під назвою IDAPI (Integrated Database API). Ідеологія доступу до локальних і клієнт/серверних даних помітно . відрізняються (в одному випадку використовується навігаційний підхід, а в іншому-мова SQL, що орієнтована на множину даних). BDE об'єднує ці підходи без зменьшення функціональних можливостей кожного з них. Тому BDE покладений в основу створення масштабованих систем обробки даних, одним з яких і є Delphi.

СУБД являє собою програму для ведення бази даних в ДАІ України і дозволяє виконувати такі функції:

• проводити реєстрацію автомобілів

• здійснювати корегування документів вже зареєстрованих автомобілів

• зняття з обліку автомобілів

• ведення бази викрадених автомобілів

• здійснення пошуку даних в базі

• ведення довідників

• встановлення гнучкої системи паролів

• передача та отримання інформації

• друк журналу реєстрацій

Прикладна програма досить проста в експлуатації і не вимагає від користувача великих знань. Якщо ви не перший раз сіли за комп'ютер і хоч колись працювали в операційній системі Microsoft Windows 95, то ви зразу можете приступати до роботи з програмою.

Якщо ж ви самі не можете розібратися з програмою, то в цьому вам допоможе розділ "Робота з програмою", в якому ви знайдете повну інформацію про використання СУБД.

Для повного розуміння принципів роботи програми та опису її структури в даній науково-дослідній роботі необхідне ознайомлення з програмуванням в операційній системі Microsoft Windows та з принципами організації роботи з реляційними базами даних.

2.2. Створення проекту «АІС Облік автомобілів»

Необхідно одразу визначитися з якими даними ми будемо мати справу.

Я використав таблиці Paradox for Windows, оскільки вони мають найбільш широкі можливості, нажаль далеко не всі ці властивості доцільно використати при розробці даної АІС.

В даній СУБД об'єктом накопичення та обробки виступає інформація, що використовується для ведення обліку зареєстрованих та викрадених автомобілів. Дана база даних складається з чотирьох таблиць та десяти довідників.

Таблиці:

• Users, db-таблиця приватних власників автомобілів

• Orgs.db-таблиця підприємств-власників автомобілів

• Usercars.db-таблиця приватних автомобілів

• Orgcars.db-таблиця держівних автомобілів

Таблиці аналогічної структури використовуються для зберігання даних про викрадені автомобілі та для збереження даних про автомобілі зняті з обліку.

Довідники:

• Areas, db-довідник регіонів

• Colours.db-довідник кольорів

• Cusovs.db- довідник типів кузовів

• Docs.db- довідник типів документів

• Models, db- довідник моделей автомобілів

• Numbers.db- довідник типів номерних знаків

• Organs, db- довідник підприємств

• States.db- довідник станів автомобілів

• Tecops.db- довідник технічних операцій

• Types.db- довідник типів АМТ

Таблиця Users, db

Дана таблиця призначена для зберігання в ній інформації провласників автомобілів і має таку структуру:

NZA

6

Поле, за допомогою якого зв’язані всі таблиці

SURENAM Е

18

Прізвище

NAME

15

Ім'я

BYFATHER

15

По-батькові

DATE В

Дата народження

PASSPORT

14

№ та серія паспорта

DRIVE

9

№ та серія посвідчення водія

STREET

25

Вулиця проживання

HOUSE

6

Будинок

SUBHOUSE

2

Корпус

FLAT

4

Квартира

PHONE H

7

Домашній телефон

PHONE W

7

Робочий телефон

WORK

15

Де працює

WHOM

10

Ким працює

Таблиця Orgs.db

Дана таблиця призначена для збереження в ній інформації про підприємства-власники автомобілів і має таку структуру:

NZA

6

Поле, за допомогою якого зв'язані всі таблиці

ORG AREA

Код підпрємства Код регіону

STREET 0

25

Вулиця підприємства

HOUSE 0

6

Будинок

SUBHOUSE 0

3

Корпус

PHONE 0

7

Телефон

STREET G

25

Вулиця гаража

HOUSE G

6

Будинок

SUBHOUSE G

3

Корпус

PHONE G

7

Телефон

Таблиця Usercars.db

Дана таблиця призначена для зберігання інформації про зареєстровані приватні автомобілі і має таку структуру:

NZ

A

6

Поле, за допомогою якого зв'язані всі таблиці

TECPAS

9

№ техпаспорту

AREA

Регіон

ТЕС ОР

Технічна операція

DATE ОР

Дата ставлення на облік

NUM ID

7

Номер знаку

TYPE ID

1

Тип знаку

MODEL

20

Марка автомобіля

TYPE AMT

Тип AMT

TYPE CUSO V

Тип кузова

YEAR

Рік випуску

N MOTOR

18

№ мотора

N SHASY

18

№ шасі

N CUSOV

18

№ кузова

COLOUR

Колір

DOC

Тип документу за яким ставиться па

Таблиця Orgcars.db

Дана таблиця призначена для зберігання інформації про зареєстровані державні автомобілі і має структуру таку як таблиця Usercars.db.

Довідники

Всі довідники, крім довідника моделей автомобілів мають однакову структуру:

CD

Код

ТХТ

45

Значення

2.3. Реалізація проекту “АІС Облік автомобілів”

Моя програма написана на мові програмування Delphi 2.0, що розроблена фірмою Borland International. Чому саме Delphi?

Щоб пояснити, чому я вибрав Delphi наведу слова одного з визнаних авторитетів в області клієнт-серверних розробок Кріса Морау: "Delphi posesses by the power of language hooks of C++, into also the time hand-in-hand ussing shockking efficiency and tlie simplicity of training of. Delphi is a most fast and by the comfortable facility of the development of annexs on the modern market of tools. The object-oriented architecture Delphi lets to us really twice utilize existing code and integrate our standards into self tool." ("Delphi володіє потужністю мовних засобів С + +, комбінуючи в той же час високу виробничу спроможність та простоту навчання. Delphi є найбільш швидким та зручним засобом розробки програм на сьогоднішньому ринку інструментальних засобів. Об'єктно-орієнтована архітектура Delphi дозволяє нам дійсно повторно використовувати вже існуючий код та інтегрувати наші стандарти в сам інструмент.")

Іншою причиною є те, що Delphi дозволяє створювати програми для роботи з базами даних на основі BDE.

Інтерфейс програми

Інтерфейс програми є важливим критерієм при оцінюванні програми. Адже ви не захочете працювати з програмою, в якої недосконалий інтерфейс і вам незручно виконувати вашу роботу. Програма повинна якнайбільше забезпечити комфорт користувача при роботі з нею. Керуючись цим правилом я і створював інтерфейс своєї програми.

Весь інтерфейс був розроблений засобами Delphi за допомогою візуального проектування форм. Були використані Windows елементи (компоненти) управління, що зменшує програмний код, тому що самі елементи управління в програмі не реалізовані, а реалізовані тільки додаткові можливості цих елементів, що значно скорочує програмний код.

Головна форма нагадує дещо панель запуску Microsoft Office 95 і містить: меню та кілька функціональних кнопок. З даної форми можна відкрити форма реєстрації автомобілів, форму редагування та перегляду документів зареєстрованих автомобілів, форму зняття автомобілів з обліку, форму для роботи з вкраденими автомобілями та форму для організації функцій адміністратора. Також тут можна викликати допомогу та вікна з інформацією про автора та про програму.

Головна форма (як і всі форми в програмі) є нащадком класу TForm.

З головної форми є доступ до схожих з нею форм; форма для забезпечення функцій адміністратора та форми для ведення обліку викладених автомобілів.

Опис роботи всіх форм описаний в розділі "Робота з програмою", тому перейдемо до опису функціонквання системи доступу та обробки бази даних.

Система обробки бази даних

Як вже було сказано моя програма працює з базами даних за допомогою BDE. За своєю архітектурою BDE є об'сктно-орієнтованим інтерфейсом доступу до даних. Під час виконання програми створюються різні об'єкти BDE. Кожний об'єкт володіє набором властивостей. Відповідно, через функції IDAPI розробник керує наступними об'єктами BDE:

• System-системний об'єкт, що контролює ресурси BDE для всіх програм, що працюютьна даній машині

• Clients-об'єкт клієнт створюється в процесі ініціалізації IDAPI для доної клієнтської програми. Об'єкт клієнт є тим контекстом, в якому виконуються виклики всіх функцій IDAPI і знаходяться системні ресурси BDE даної програми

• Session-сесія. Сесія містить всі інші об'єкти BDE. Будь-який з них, будучи створеним в контексті однієї сесії не може бути використаний в іншій. Сесія також є власником всіх курсорів і блокіровок таблиць/записів створених н її контексті. Іншою особливістю сесії є private-каталог, в якому розміщуються всі тимчасові таблиці та файли

• Drivers-кожний драйвер БД завантажується при першому звертанні до його сервісу

Datadases-база даних, представлена набором взаємозв'язаних таблиць. Внаслідок такої організації доступа до різних типів БД, в якості основного ідентифікатора бази даних в BDE використовується поняття псевдоніма бази даних

• Cursors-BDE здійснює доступ до вмістимого таблиць або результатів запросів за допомогою курсору, що представляє собою колекцію записів. Всі операції з даними виконуються за допомогою курсору. Крім того, курсор відповідає за операції переміщення по набору записів незалежно від природи джерела данихю Це дозволяє назвати курсор інструментом контролю над множиною даних Як я вже згадував, особливе місце в VCL (Visual Component Library) посідає TDataSource. Це положення пояснюється тип, що він ізолює низкорівневу логіку доступу до даних від компонент інтерфецсу користувача.

Основним засобом передачі даних Data Aware-компонентами через джерела даних є обробники повідомлень TDataChangeEvent, що оголошенні як функції класів.

Робота з програмою

Д
ане вікно є основним вікном програми і в ньому проводиться основна робота з програмою.

В
даному вікні проводиться реєстрація автомобілів, а при потребі з нього можна вийти на інші вікна-довідники.

Д
овідник власників авто, в нтому, як і в всіх довідниках можна робити пошук, створювати записи, знищувати і т. д.

Д
овідник областей призначений дл якорегування областей.

Д
овідник моделей авто призначений для корегування моделей авто.

Д
овідник типів АМТ призначений для корегування типів АМТ.

Д
овідник кузовів призначений для корегування типів кузовів авто.

Д
овідник кольорів авто призначений для корегування кольорів авто.

В
даному вікні можна створювати користувачів програми з різними рівнями доступу.

В
даному вікні можна зробити основні установки програми.

Д
ане вікно появляється при під’єднанні до бази для ідентифікації користувача.

Д
ане вікно дає інформацію про автора програми.

Ц
е вікно з’являється при виклику допомоги і тут можна отримати додаткову інформацію про програму.

3. Висновки

Отже метою даного курсового проекту є поглиблення знань з дисципліни "Технологія програмування".

Підсумовуючи свою роботу над проектом можу сказати, що для окремого робочого місця система в значній мірі підвищить продуктивність праці операторів і рівень обслуговування клієнтів. Впровадження цієї системи буде ще одним етапом інформатизації нашої країни. Сподіваюся, що хоча б основна ідея програми буде перейнята і запроваджена на всіх ДАІ для реєстрації авто.

Щодо самої програми, то використовуючи знання, набуті на численних лекціях та лабораторних заняттях з дисципліни “Технологія програмування”, я зміг реалізувати її на досить високому рівні, що само по собі свідчить як про високий професіоналізм викладачів, так і про непогані здібності студента.

В цілому АІС досить зручна в роботі, Для перетворення цієї локальної версії АІС в мережеву потрібно доопрацювати роботу з базою даних і внести ще кілька несуттєвих змін та доповнень.

4. Література

  1. Бердышев Е.М. Новые возможности при использовании RAD систем – М.: ДИАЛОГ-МИФИ, 1998

  2. Бродин В.Б. Программирование интерфейсов современных програм – М.: ДИАЛОГ-МИФИ, 1994

  3. Гук М. Dephi 3.0. Руководство по разработке баз дынных – СПб.: Питер, 1997

  4. Програмирование в среде Inprise Delphi – К.: Логос, 1998

  5. Разработка приложений модели клиент-сервер: особенности и трудности – М.: Намедни, 1998

  6. Персональные вычисления в 1999 году // Компьютерное обозрение.-№50, 1998

  7. Многообразие возможностей обьектно-ориентированного програмирования //Компьютер World.-№22, 1998

5. Додатки

unit Data;

interface

uses

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

DBTables, Db, RxQuery;

type

TdmData = class(TDataModule)

dbMain: TDatabase;

qrHumans: TRxQuery;

qrAutoHumans: TRxQuery;

dsHumans: TDataSource;

dsAutoHumans: TDataSource;

qrAutoView: TRxQuery;

qrHumansID: TIntegerField;

qrHumansSURNAME: TStringField;

qrHumansNAME: TStringField;

qrHumansBYFATHER: TStringField;

qrHumansBIRTHDAY: TDateTimeField;

qrHumansPASSPORT: TStringField;

qrHumansCERTIFICATE: TStringField;

qrHumansSTREET: TStringField;

qrHumansHOUSE: TSmallintField;

qrHumansSUBHOUSE: TStringField;

qrHumansFLAT: TSmallintField;

qrHumansHOMEPHONES: TStringField;

qrHumansWORKPHONES: TStringField;

qrHumansWHEREWORK: TStringField;

qrHumansWHOMWORK: TStringField;

qrAutoHumansID: TIntegerField;

qrAutoHumansTEHPASSPORT: TStringField;

qrAutoHumansAREA: TIntegerField;

qrAutoHumansREGDATE: TDateTimeField;

qrAutoHumansREGNUMBER: TStringField;

qrAutoHumansMODEL: TIntegerField;

qrAutoHumansAMT: TIntegerField;

qrAutoHumansCUSOV: TIntegerField;

qrAutoHumansMAKEYEAR: TSmallintField;

qrAutoHumansMOTORN: TStringField;

qrAutoHumansSHASSYN: TStringField;

qrAutoHumansCUSOVN: TStringField;

qrAutoHumansCOLOUR: TIntegerField;

qrAutoHumansTEHVIEW: TDateTimeField;

qrAutoHumansGOLEGTH: TIntegerField;

dsAutoView: TDataSource;

qrAreas: TRxQuery;

qrModels: TRxQuery;

qrAMTs: TRxQuery;

qrCusovs: TRxQuery;

qrColours: TRxQuery;

dsAreas: TDataSource;

dsModels: TDataSource;

dsAMTs: TDataSource;

dsCusovs: TDataSource;

dsColours: TDataSource;

qrAreasID: TIntegerField;

qrAreasNAME: TStringField;

qrModelsID: TIntegerField;

qrModelsNAME: TStringField;

qrAMTsID: TIntegerField;

qrAMTsNAME: TStringField;

qrColoursID: TIntegerField;

qrColoursNAME: TStringField;

qrCusovsID: TIntegerField;

qrCusovsNAME: TStringField;

qrAutoViewID: TIntegerField;

qrAutoViewREGDATE: TDateTimeField;

qrAutoViewREGNUMBER: TStringField;

qrAutoViewAUTOOWNER: TStringField;

qrAutoViewCERTIFICATE: TStringField;

qrAutoViewTEHPASSPORT: TStringField;

qrAutoViewMODELNAME: TStringField;

qrAutoViewAMTNAME: TStringField;

qrAutoViewMAKEYEAR: TSmallintField;

qrAutoViewCOLOURNAME: TStringField;

qrAutoViewAREANAME: TStringField;

qrAutoViewTEHVIEW: TDateTimeField;

qrUsers: TRxQuery;

qrUsersUserName: TStringField;

qrUsersCPassword: TStringField;

qrUsersAccessLevel: TIntegerField;

dsUsers: TDataSource;

procedure dmDataDestroy(Sender: TObject);

procedure qrHumansNewRecord(DataSet: TDataSet);

procedure qrHumansAfterPost(DataSet: TDataSet);

procedure qrAutoHumansAfterPost(DataSet: TDataSet);

procedure qrAutoHumansNewRecord(DataSet: TDataSet);

procedure qrAreasNewRecord(DataSet: TDataSet);

procedure qrModelsNewRecord(DataSet: TDataSet);

procedure qrAMTsNewRecord(DataSet: TDataSet);

procedure qrColoursNewRecord(DataSet: TDataSet);

procedure qrCusovsNewRecord(DataSet: TDataSet);

procedure qrAreasAfterPost(DataSet: TDataSet);

procedure qrModelsAfterPost(DataSet: TDataSet);

procedure qrAMTsAfterPost(DataSet: TDataSet);

procedure qrColoursAfterPost(DataSet: TDataSet);

procedure qrCusovsAfterPost(DataSet: TDataSet);

procedure dmDataCreate(Sender: TObject);

procedure qrFilterRecord(DataSet: TDataSet; var Accept: Boolean);

procedure qrAreasBeforeDelete(DataSet: TDataSet);

procedure qrModelsBeforeDelete(DataSet: TDataSet);

procedure qrAMTsBeforeDelete(DataSet: TDataSet);

procedure qrColoursBeforeDelete(DataSet: TDataSet);

procedure qrCusovsBeforeDelete(DataSet: TDataSet);

procedure qrUsersAfterPost(DataSet: TDataSet);

private

{ Private declarations }

public

{ Public declarations }

procedure OpenDatabase(AUser:String='');

procedure Closedatabase;

function OpenSQL(SQL:String):TDataSet;

procedure RunSQL(SQL:String);

function GetMaxCode(TableName:String):Integer;

function InputHuman:Integer; // -1 mrCancel

function InputArea:Integer;

function InputModel:Integer;

function InputAMT:Integer;

function InputCusov:Integer;

function InputColour:Integer;

end;

var

dmData: TdmData;

Filters: TStrings;

implementation

uses Humans, Areas, Models, AMTs, Colours, Cusovs, Global, InputPassword;

{$R *.DFM}

procedure TdmData.OpenDatabase(AUser:String='');

begin

try

Screen.Cursor:=crHourGlass;

dbMain.Open;

Filters.Clear;

qrUsers.Open;

if qrUsers.RecordCount>0 then

begin

with TfmInputPassword.Create(Application) do

try

edName.Text:=AUser;

if edName.Text<>'' then

ActiveControl:=edPassword;

Screen.Cursor:=crDefault;

if ShowModal=mrCancel then

begin

CloseDatabase;

Exit;

end;

finally

Free;

end;

end

else

begin

UserName:='=хтiфюьшщ юяхЁрЄюЁ';

Password:='';

AccessLevel:=-1;

end;

Screen.Cursor:=crDefault;

except

Screen.Cursor:=crDefault;

Application.MessageBox('Tшэшъыр яюьшыър яЁш я¦ф''¦фэрээ¦ фю срчш.',PChar(Application.Title),MB_ICONSTOP or MB_OK);

end;

end;

procedure TdmData.CloseDatabase;

begin

dbMain.Close;

end;

procedure TdmData.dmDataDestroy(Sender: TObject);

begin

CloseDatabase;

if Assigned(Filters) then

Filters.Free;

end;

function TdmData.OpenSQL(SQL:String):TDataSet;

var

ResDataSet:TQuery;

begin

Result:=nil;

if SQL='' then

raise Exception.Create('=х ьюцє тшъюэрЄш яєёЄшщ SQL чряшЄ.');

ResDataSet:=TQuery.Create(Self);

:='OpenSQL'+IntToStr(Random(1000000000));

ResDataSet.DatabaseName:=dbMain.DatabaseName;

ResDataSet.SQL.Add(SQL);

ResDataSet.Open;

Result:=ResDataSet;

end;

procedure nSQL(SQL:String);

var

ResDataSet:TQuery;

begin

if SQL='' then

raise Exception.Create('=х ьюцє тшъюэрЄш яєёЄшщ SQL чряшЄ.');

ResDataSet:=TQuery.Create(Self);

:='RunSQL'+IntToStr(Random(1000000000));

ResDataSet.DatabaseName:=dbMain.DatabaseName;

ResDataSet.SQL.Add(SQL);

ResDataSet.ExecSQL;

ResDataSet.Free;

end;

function TdmData.GetMaxCode(TableName:String):Integer;

var

SQL:TDataSet;

begin

try

SQL:=OpenSQL('SELECT MAX(ID) AS MAXID FROM '+TableName);

Result:=SQL.FieldByName('MAXID').AsInteger;

finally

if Assigned(SQL) then

begin

SQL.Active:=False;

SQL.Free;

end;

end;

end;

procedure TdmData.qrHumansNewRecord(DataSet: TDataSet);

begin

qrHumans.FieldByName('ID').AsInteger:=GetMaxCode('HUMANS')+1;

end;

function putHuman:Integer;

begin

Screen.Cursor:=crHourGlass;

Result:=-1;

with TfmHumans.Create(Application) do

try

Screen.Cursor:=crDefault;

if ShowModal=mrOK then

Result:=qrHumans.FieldByName('ID').AsInteger;

finally

Screen.Cursor:=crDefault;

end;

end;

procedure TdmData.qrHumansAfterPost(DataSet: TDataSet);

var

ID:Integer;

begin

try

Screen.Cursor:=crHourGlass;

qrHumans.DisableControls;

ID:=qrHumans.FieldByName('ID').AsInteger;

qrHumans.Close;

qrHumans.Open;

qrHumans.Locate('ID',ID,[]);

finally

qrHumans.EnableControls;

Screen.Cursor:=crDefault;

end;

end;

procedure TdmData.qrAutoHumansAfterPost(DataSet: TDataSet);

var

ID:Integer;

RegNumber:String;

begin

try

Screen.Cursor:=crHourGlass;

qrAutoHumans.DisableControls;

ID:=qrAutoHumans.FieldByName('ID').AsInteger;

RegNumber:=qrAutoHumans.FieldByName('REGNUMBER').AsString;

qrAutoHumans.Close;

qrAutoHumans.Open;

qrAutoHumans.Locate('ID;REGNUMBER',VarArrayOf([ID,RegNumber]),[]);

finally

qrAutoHumans.EnableControls;

Screen.Cursor:=crDefault;

end;

end;

procedure TdmData.qrAutoHumansNewRecord(DataSet: TDataSet);

begin

qrAutoHumans.FieldByName('RegDate').AsDateTime:=Date;

end;

procedure TdmData.qrAreasNewRecord(DataSet: TDataSet);

begin

qrAreas.FieldByName('ID').AsInteger:=GetMaxCode('AREAS')+1;

end;

procedure TdmData.qrModelsNewRecord(DataSet: TDataSet);

begin

qrModels.FieldByName('ID').AsInteger:=GetMaxCode('MODELS')+1;

end;

procedure TdmData.qrAMTsNewRecord(DataSet: TDataSet);

begin

qrAMTs.FieldByName('ID').AsInteger:=GetMaxCode('AMT')+1;

end;

procedure TdmData.qrColoursNewRecord(DataSet: TDataSet);

begin

qrColours.FieldByName('ID').AsInteger:=GetMaxCode('COLOURS')+1;

end;

procedure TdmData.qrCusovsNewRecord(DataSet: TDataSet);

begin

qrCusovs.FieldByName('ID').AsInteger:=GetMaxCode('CUSOVS')+1;

end;

function putArea:Integer;

begin

Screen.Cursor:=crHourGlass;

Result:=-1;

with TfmAreas.Create(Application) do

try

Screen.Cursor:=crDefault;

if ShowModal=mrOK then

Result:=qrAreas.FieldByName('ID').AsInteger;

finally

Screen.Cursor:=crDefault;

end;

end;

procedure TdmData.qrAreasAfterPost(DataSet: TDataSet);

var

ID:Integer;

begin

try

Screen.Cursor:=crHourGlass;

qrAreas.DisableControls;

ID:=qrAreas.FieldByName('ID').AsInteger;

qrAreas.Close;

qrAreas.Open;

qrAreas.Locate('ID',ID,[]);

finally

qrAreas.EnableControls;

Screen.Cursor:=crDefault;

end;

end;

procedure TdmData.qrModelsAfterPost(DataSet: TDataSet);

var

ID:Integer;

begin

try

Screen.Cursor:=crHourGlass;

qrModels.DisableControls;

ID:=qrModels.FieldByName('ID').AsInteger;

qrModels.Close;

qrModels.Open;

qrModels.Locate('ID',ID,[]);

finally

qrModels.EnableControls;

Screen.Cursor:=crDefault;

end;

end;

procedure TdmData.qrAMTsAfterPost(DataSet: TDataSet);

var

ID:Integer;

begin

try

Screen.Cursor:=crHourGlass;

qrAMTs.DisableControls;

ID:=qrAMTs.FieldByName('ID').AsInteger;

qrAMTs.Close;

qrAMTs.Open;

qrAMTs.Locate('ID',ID,[]);

finally

qrAMTs.EnableControls;

Screen.Cursor:=crDefault;

end;

end;

procedure TdmData.qrColoursAfterPost(DataSet: TDataSet);

var

ID:Integer;

begin

try

Screen.Cursor:=crHourGlass;

qrColours.DisableControls;

ID:=qrColours.FieldByName('ID').AsInteger;

qrColours.Close;

qrColours.Open;

qrColours.Locate('ID',ID,[]);

finally

qrColours.EnableControls;

Screen.Cursor:=crDefault;

end;

end;

procedure TdmData.qrCusovsAfterPost(DataSet: TDataSet);

var

ID:Integer;

begin

try

Screen.Cursor:=crHourGlass;

qrCusovs.DisableControls;

ID:=qrCusovs.FieldByName('ID').AsInteger;

qrCusovs.Close;

qrCusovs.Open;

qrCusovs.Locate('ID',ID,[]);

finally

qrCusovs.EnableControls;

Screen.Cursor:=crDefault;

end;

end;

procedure TdmData.dmDataCreate(Sender: TObject);

begin

dbMain.Params.Values['PATH']:=ExtractFilePath(ExpandFileName(ParamStr(0)));

if dbMain.Params.Values['PATH'][Length(dbMain.Params.Values['PATH'])]='\' then

dbMain.Params.Values['PATH']:=dbMain.Params.Values['PATH']+'DATA\'

else

dbMain.Params.Values['PATH']:=dbMain.Params.Values['PATH']+'\DATA\';

Filters:=TStringList.Create;

end;

procedure TdmData.qrFilterRecord(DataSet: TDataSet;

var Accept: Boolean);

var

I:Integer;

S,FName,FValue:String;

begin

Accept:=True;

FName:='';

FValue:='';

I:dexOf('['++']');

if I<>-1 then

begin

S:=Filters[I+1];

FName:=Copy(S,1,Pos('=',S)-1);

Delete(S,1,Pos('=',S));

FValue:=S;

end;

if FName<>'' then

begin

case DataSet.FieldByName(FName).DataType of

ftFixedChar,

ftWideString,

ftString:Accept:=Pos(AnsiUpperCase(FValue),AnsiUpperCase(DataSet.FieldByName(FName).AsString))>0;

ftSmallint,

ftInteger,

ftLargeint,

ftWord:Accept:=StrToInt(FValue)=DataSet.FieldByName(FName).AsInteger;

ftBoolean:Accept:=(AnsiUpperCase(FValue)='TRUE')=DataSet.FieldByName(FName).AsBoolean;

ftFloat,

ftCurrency:Accept:=StrToFloat(FValue)=DataSet.FieldByName(FName).AsCurrency;

ftDate:Accept:=StrToDate(FValue)=DataSet.FieldByName(FName).AsDateTime;

ftTime:Accept:=StrToTime(FValue)=DataSet.FieldByName(FName).AsDateTime;

ftDateTime:Accept:=StrToDateTime(FValue)=DataSet.FieldByName(FName).AsDateTime;

else

raise Exception.Create('=х ьюцэр тёЄрэютшЄш Ї¦ы№ЄЁ эр тшсЁрэх яюых.');

end;

end;

end;

function putModel:Integer;

begin

Screen.Cursor:=crHourGlass;

Result:=-1;

with TfmModels.Create(Application) do

try

Screen.Cursor:=crDefault;

if ShowModal=mrOK then

Result:=qrModels.FieldByName('ID').AsInteger;

finally

Screen.Cursor:=crDefault;

end;

end;

function putAMT:Integer;

begin

Screen.Cursor:=crHourGlass;

Result:=-1;

with TfmAMTs.Create(Application) do

try

Screen.Cursor:=crDefault;

if ShowModal=mrOK then

Result:=qrAMTs.FieldByName('ID').AsInteger;

finally

Screen.Cursor:=crDefault;

end;

end;

function putCusov:Integer;

begin

Screen.Cursor:=crHourGlass;

Result:=-1;

with TfmCusovs.Create(Application) do

try

Screen.Cursor:=crDefault;

if ShowModal=mrOK then

Result:=qrCusovs.FieldByName('ID').AsInteger;

finally

Screen.Cursor:=crDefault;

end;

end;

function putColour:Integer;

begin

Screen.Cursor:=crHourGlass;

Result:=-1;

with TfmColours.Create(Application) do

try

Screen.Cursor:=crDefault;

if ShowModal=mrOK then

Result:=qrColours.FieldByName('ID').AsInteger;

finally

Screen.Cursor:=crDefault;

end;

end;

procedure TdmData.qrAreasBeforeDelete(DataSet: TDataSet);

begin

if Application.MessageBox('Tш тяхтэхэ¦, •ю срцр¦Єх чэш•шЄш тшсЁрэшщ чряшё.',PChar(Application.Title),MB_ICONQUESTION or MB_YESNO)<>IDYES then

Abort;

end;

procedure TdmData.qrModelsBeforeDelete(DataSet: TDataSet);

begin

if Application.MessageBox('Tш тяхтэхэ¦, •ю срцр¦Єх чэш•шЄш тшсЁрэшщ чряшё.',PChar(Application.Title),MB_ICONQUESTION or MB_YESNO)<>IDYES then

Abort;

end;

procedure TdmData.qrAMTsBeforeDelete(DataSet: TDataSet);

begin

if Application.MessageBox('Tш тяхтэхэ¦, •ю срцр¦Єх чэш•шЄш тшсЁрэшщ чряшё.',PChar(Application.Title),MB_ICONQUESTION or MB_YESNO)<>IDYES then

Abort;

end;

procedure TdmData.qrColoursBeforeDelete(DataSet: TDataSet);

begin

if Application.MessageBox('Tш тяхтэхэ¦, •ю срцр¦Єх чэш•шЄш тшсЁрэшщ чряшё.',PChar(Application.Title),MB_ICONQUESTION or MB_YESNO)<>IDYES then

Abort;

end;

procedure TdmData.qrCusovsBeforeDelete(DataSet: TDataSet);

begin

if Application.MessageBox('Tш тяхтэхэ¦, •ю срцр¦Єх чэш•шЄш тшсЁрэшщ чряшё.',PChar(Application.Title),MB_ICONQUESTION or MB_YESNO)<>IDYES then

Abort;

end;

procedure TdmData.qrUsersAfterPost(DataSet: TDataSet);

var

User:String;

begin

try

Screen.Cursor:=crHourGlass;

qrUsers.DisableControls;

User:=qrUsers.FieldByName('USERNAME').AsString;

qrUsers.Close;

qrUsers.Open;

qrUsers.Locate('USERNAME',User,[]);

finally

qrUsers.EnableControls;

Screen.Cursor:=crDefault;

end;

end;

initialization

Randomize;

end.



Скачать документ

Похожие документы:

  1. Зміст (11)

    Документ
    Обираючи тему курсової роботи “Суб’єктивне право та юридичний обов’язок”, я виходила з того, що цей інститут цивільного права в умовах реформування економіки, переходу нашої країни до ринкових відносин, а також з урахуванням положень,
  2. Зміст (14)

    Документ
    В даний час в українському суспільстві відбувається визначена "переоцінка цінностей". Замість колишньої системи цінностей, що розвивається в соціалістичному суспільстві, затверджується нова система.
  3. Зміст (31)

    Документ
    Актуальність теми дослідження. На перехідному етапі становлення ринкової економіки фінансові системи країн в цілому й банківські системи, зокрема, вимагають поглибленого наукового дослідження, оскільки їх розвиток значно відрізняється
  4. Зміст (51)

    Документ
    4.4 Облік, реєстрація та розслідування випадків професійних захворювань, отруєнь і нещасних випадків на виробництві. Організація і проведення медичних оглядів робітників
  5. Зміст (79)

    Документ
    Річна інформаціяЗміна до Річної інформаціїВступРозділ I. Резюме річної інформаціїРозділ IІ. Фактори ризикуРозділ IІІ. Основні відомості про емітентаРозділ IV.
  6. Зміст (1)

    Документ
    Квартальна інформаціяЗміна до Квартальної інформаціїВступРозділ I. Основні відомості про емітентаРозділ II. Фактори ризикуРозділ III. Інформація про господарську діяльність емітентаРозділ IV.

Другие похожие документы..