Программа управления базой данных курсовых работ по теоретической механике

Разработка программы, выполняющей управление базой данных. Реализация механизма sql запросов. Характеристика методов работы с БД в среде Делфи 7 и отображения данных на форме. Анализ работы с компонентами Delphi, генерирующими sql запросы автоматически.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 17.11.2017
Размер файла 1,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Министерство науки и образования российской федерации

Самарский государственный аэрокосмический
университет имени академика С.П.Королева

Кафедра теоретической механики

Пояснительная записка

Программа управления базой данных курсовых работ по теоретической механике

Выполнил студент гр. 1305

Куркин Е.И.

Руководитель курсовой работы

Кислов А.В.

Самара 2005г.

Задание

программа база delphi запрос

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

Реферат

Курсовая работа.

Пояснительная записка с.79, рис.12.

БАЗА ДАННЫХ, INTERBASE, SQL, ЗАПРОС, DELPI, QUERY, DATASOURCE, RAVE REPORT.

Разработана программа выполняющая управление базой данных. В программе реальзован механизм sql запросов. Показано множество методов работы с БД в среде Делфи 7 и отображения данных на форме. В программе применяется как непосредственное использование языка sql, так и работа с компонентами Delphi, генерирующими sql запросы автоматически (TUpdateSql).

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

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

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

Содержание

  • Введение
  • 1. Описание программы
  • 1.1 Общие сведения
  • 1.2 Предметная область
  • 1.3 Постановка задачи
  • 1.4 Функциональная задача программы
  • 2. Логическая структура программы
  • 2.1 Алгоритм работы программы
  • 2.2 Состав программы
  • 2.3 Добавление новых записей в БД
  • 2.4 Сводная таблица БД - выбор курсовой работы
  • 2.5 Добавление новых записей в БД
  • 2.6 Удаление записей из БД
  • 2.7 Общие данные
  • 2.8 Задание
  • 2.9 Формирование отчетов
  • Введение
  • В повседневной работе часто приходится сталкиваться с необходимостью хранения и совместного использования больших объемов информации. Применение баз данных упрощает данную задачу. Базы данных делятся на локальные, удаленные и распределенные. Данная работа показывает построение приложения для работы как с локальными так и удаленными базами данных. Основной подход к обработке информации - формирование и выполнение sql запросов. Полученные данные могут быть представлены пользователю в разных форматах - в виде совокупности чисел в отдельных ячейках, таблиц, а так же графиков и отчетов. Для примера рассмотрим создание СУБД для базы данных по курсовым работам по ТМ.
  • 1. Описание программы
  • 1.1 Общие сведения
  • Программа выполняет работу с базой данных, проводится чтение базы, запись новых значения а также изменения и удаление имеющихся.
  • 1.2 Предметная область
  • Необходимо написать базу данных и СУБД для анализа и накопления информации по курсовым работам по теоретической механике. Курсовая работа посвящена исследованию механической системы с 2мя степенями свободы в поле действия силы тяжести. Механическая система определяется геометрическими параметрами, массами рамки и материальной точки и жесткостью находящейся в системе пружины. Курсовая работа состоит из 3х частей.
  • Первая часть работы - динамика системы при заданном законе движения тела, с заданной начальной скоростью рамки (скорость вращения постоянна и равна начальной скорости). При этом происходит вырождение одной из степеней свободы. Рассматриваемая в первой части система имеет уже одну степень свободы. Первая часть курсовой работы делиться на 2 раздела. Первый - определение закона движения материальной точки при вращении рамки с постоянной угловой скоростью и сил реакции действующих на материальную точку со стороны рамки. Основным уравнением анализа движения является основное уравнение динами материальной точки. Второй раздел рассматривает силы и моменты действующие на рамку со стороны опор. Силы реакции и поддерживающий постоянство угловой скорости момент находятся на базе основного уравнения динамики механической системы.
  • Вторая часть работы - движение системы при заданных внешних скоростях также делиться на 2 раздела. В первом разделе 2ой части проводится анализ движения системы с двумя степенями свободы на базе уравнений Лагранжа 2ого рода. Определяющими движения системы параметрами являются параметры системы указанные ранее, начальные условия - начальные обобщенные координаты и скорости а так же положение равновесия материальной точи на рамке (зависит от характеристик пружины). Во второй части производится проверка выполнения закона кинетической энегргии. В результате второго раздела получены значения реакций в опорах для случая первой части. Проведено сравнение результатов полученных с помощью метода кинетостатики и теорем динамики механической системы.
  • Третья часть работы - исследование малых колебаний рамки вокруг положения равновесия. В первом разделе 3ей части для исследуемой системы определяются положения равновесия и проверяется их устойчивость. Во втором разделе определяется характер движения системы на базе приятого допущения о малости отклонений.
  • Приведем пример постановки задачи курсовой работы.
  • Исходные данные и схема механической системы
  • РАСЧЕТНАЯ СХЕМА 13
  • Рис1. Схема механической системы
  • Форма тела 1

    однородное тонкое кольцо

    Масса тела 1

    m1

    кг

    0.5

    Масса материальной точки 2

    m2

    кг

    0.1

    Размеры

    R

    м

    0.3

    d

    м

    0.1

    Обобщенные координаты

    Обозначения

    Начальные значения для I этапа

    q1 =

    рад

    0 = 0

    q2 =

    рад

    0 =

    Жесткость пружины

    с

    Н/м

    200

    Длина свободной пружины

    l0

    м

    Угловая скорость тела 1

    1

    рад/с

    10

    Начальная угловая скорость тела 2

    02

    рад/с

    1

    Конец I этапа движения

    t1

    с

    5

    • 1.3 Постановка задачи
    • В пакетах IBase Expert и ErWin сгенерирована база данных по курсовым работам по теоретической механике, описания логической и физической структуры представлены на рис1 и 2.
    • База данных состоит из 6ти таблиц.
    • Первая таблица Title хранит совокупную информацию о курсовой работе (тему, автора, преподавателей, дату защиты и др).
    • Вторая таблица Mex Sxema хранит информацию о параметрах механической схемы, - типы шарниров, длину нерастяженной пружины, число степеней свободы и размеры рамки (радиус кольца). Для возможности варьирования параметров и исключения аномалий представленные данные разнесены в 4 таблицы (Length0, Rad_Koltza, TipSh_A, TipShB), имеющие связь OneToMany с таблицей Mex Sxema.
    • Третья таблица Medlenno_men_param хранит информацию о медленно меняющихся (варьируемых в ходе выполнения курсовой) параметрах механической системы - массах и жесткости пружины. Номер схемы передается связью OneToMany из таблицы Mex Sxema, массы и жесткости так же хранятся в обособленных таблицах (Massa1, Massa2, Zhestkost).
    • Четвертая и пятая таблицы Part1_NachUsl и Part2_NachUsl хранят начальные условия для интегрирования первой и второй частей курсовой работы. Причем условия хранятся в вынесенных таблицах Psi0_tab, Dpsi0_tab, Phi0_tab, Dphi0_tab, откуда проведены связи OneToMany как в Part1_NachUsl так и Part2_NachUsl. Для первого интегрирования начальные данные объединяются с параметрами системы в таблице Parametri_Integrir.
    • Характеристики 3ей части являются совокупными и полностью определяются параметрами выбранной механической системы. Поэтому таблицы Koeff3ei_chasti а так же Part3 связаны идентифицирующей связью с таблицей Melenno_men_param.
    • База данных сгенерирована для работы через драйвер InterBase 3его диалекта, и подключена к операционной системе Windows при помощи консоли Источников данных ODBC и драйвера InterBase производителя FireBird.
    • В среде Delphi необходимо построить СУБД для введенной базы.
    • Рис2. Логическая структура базы даннях
    • 1.4 Функциональная задача программы
    • Программа позволяет производить чтение и запись данных БД, проводит визуализацию данных построением графиков, а так же формирует отчет.
    • 2. Логическая структура программы
    • 2.1 Алгоритм работы программы
    • Программа организует представление данных в виде общего списока работ с краткими характеристиками каждой из них и подробного списока значений полей для выбранной пользователем курсовой работы. Причем параметры зависящие от времени отображаются для момента времени, так же определяемого пользователем.
    • Для работы с данными используется язык Sql запросов. Для организации запросов применяются компоненты TQuery и TUpdateSql.
    • 2.2 Состав программы
    • Программа создана в среде Delphi7.0. Основой данной среды является язык программирования Pascal, (более точно Object Pascal). В момент создания программа сохраняется в нескольких файлах, в которых записана информация о каждом из основных ее аспектах. Такими файлами являются:
    • - bdPr.dpr - файл, содержащий информацию о модулях проекта и связывающий их в единое целое,
    • - uFormBd.dfm, - файл формы, несущий информацию о выводимых формах и компонентах, находящихся на представленных формах,
    • - uFormBd.pas,- файл несущий исполняемый алгоритм, написанный на языке Pascal пользователем,
    • - ряд других файлов со служебной информацией.
    • После завершения разработки программы генерируется исполнимый файл bdPr.exe, исполняемый в операционных системах семейства Windows.
    • На рис.3 представлен вид основного окна программы, представленного формой fMain в момент разработки. Форма поделена на 2 части. В левой части на компоненте TGrid выведен список курсовых работ, содержащихся в БД. Справа на компоненте TPageControl размещена информация по выбранной базе данных.
    • Рис 3. Главная форма программы
    • Для управления базой данный на главной форме предусмотрены следующие кнопки:
    • - Подключиться: подключает приложения к базе данных, с помощью метода Open компонентов TQuery;
    • - Отключиться: отключается от базы, методом Close.
    • - Добавить запись: добавление в БД новой записи;
    • - Удалить запись: удаляет выделенную запись в таблице.
    • На закладках TabSheet компонента PageControl размещены также ряд кнопок, управляющих записью данных в базу.
    • 2.4 Сводная таблица БД - выбор курсовой работы
    • Рассмотрим подробнее работу программы. На главной форме размещены 2 кнопки для подключения / разрыва соединения с базой. Для соединения с базой используется метод Open для объектов типа Query (qMain.Open и тд). Для разрыва соединения - метод Close.
    • Список курсовых работ, хранимых в Бд отображается на объекте dbgMain (типа TDBGrid), который связан с таблицей Title БД компонентами qMain (TQuery) и dsMain (TDataSource). Запрос Sql в qMain имеет вид:
    • Select * from Title .
    • При этом в компонент qMain включены поля Number, Date_Defence, Student_Family, Mark. В результате выполнения метода Open на форме отображается краткая информация по работам студентов, хранящихся в БД.
    • 2.5 Добавление новых записей в БД
    • При нажатии на кнопку Добавить запись происходит добавление в БД новой записи. При этом используется объект qUpdate (TQuery) в котором формируется запрос
    • Insert into Title (<Список полей>) values (<Список значений>).
    • Список полей содержит все поля таблицы Title, значения для их заполнения берутся из свойств Text компонентов TLabelEdit закладки Общие данные. Для формирования sql запроса используются следующие строковые переменные: sPole:=''; sParam:='';s:=#39; p:= ' , '. В стрке sPole хранится список полей, sParam - список значений этих полей, переменная s - представляет собой символ одиночной кавычки (используется для обрамления строковых значений в списке sParam, вводится в виде кода #39 таблицы символов из-за конфликта с компилятором Delphi так же использующим символ ` для ограничения строковых переменных). p - запятая, часто применяемая в записи sql запроса. В результате добавление каждого поля выглядит следующим образом:
    • sPole:=sPole+'Minist, ';
    • sParam:=sParam+s+leMinist.Text+s+p;
    • После перечисления всех полей из запроса вырезаются последние запятые:
    • lPole:=length(sPole);
    • lParam:=length(sParam);
    • sPole:=copy(sPole,1,lPole-2);
    • sParam:=copy(sParam,1,lParam-3);
    • В результате выполняется следующий запрос (внутри with qUpdate do):
    • Sql.Clear;
    • Sql.Add('Insert into Title ('+sPole+') values ('+sParam+')');
    • Close;
    • ExecSql;
    • После создания записи в таблице Title создаются строки в таблицах Zadanie, Part1, Part2, Part3 для этого номера. В дальнейшем выполняется лишь занесение в них значений путем путем изменения значений полей.
    • 2.6 Удаление записей из БД
    • Удаление записи из БД производится выполнением запроса 'Delete from Part1_Time Where Number= '+IntToStr(N), где в переменной N содержится номер удаляемой записи. Запрос выполняенся в объекте qUpdate (TQuery) для шести таблиц при нажатии на кнопку Удалить запись.
    • 2.7 Общие данные
    • Выше было отмечено деление формы программы на 2 части и рассмотрена работа с левой частью - выбором курсовой работы из списка работ в БД. Покажем работу с информацией по каждой курсовой. Содержание полей БД располагается на элементах компонента TPageControl. На закладке tsTitle находятся компоненты типа TLableEdit. Вид закладки Общие данные показан на рис 4.
    • Рис 4. Закладка Общие данные
    • При нажатии на кнопку Показать в их значения свойства Text копируются значения полей таблицы Title БД:
    • leMinist.Text:=qTitleMinist.AsString;
    • Следует отметить, что данные поставляются отдельным компонентом qTitle (TQuery) который запрашивает их из таблицы Title для выбранной пользователем работы. Выбор пользователя передается при помощи связи qTitle.DataSorce:=dsMain, и фильтрацией записей в таблице Title по номеру выбранной пользователем курсовой работы: Select * from Title where Number=:Number.
    • При нажатии на кнопку Изменить происходит изменение данных хранящихся в БД в таблице Title. Изменение осуществляется при помощи Sql запроса
    • Update Title SET <Имя поля1>= <Значение поля1>, <Имя поля n>= < Значение поля n> Where Number = <Номер записи>
    • Запрос формируется только для измененных полей:
    • sSql:='Update Title SET ';
    • s:=#39; p:=' , '; k:=0; m:=0;
    • if qTitleMinist.AsString<>leMinist.Text
    • then begin
    • sSql:=sSql+' Minist= '+s+leMinist.Text+s+p;
    • k:=k+1;
    • end;
    • l:=length(sSql);
    • sSql:=Copy(sSql,1,l-3);
    • if k<>0 then
    • with qUpdate do begin
    • N:=qTitleNumber.AsInteger;
    • Sql.Clear;
    • Sql.Add(sSql+' Where Number = '+IntToStr(N));
    • Close;
    • ExecSql;
    • Sql.Clear;
    • Sql.Add('Select * from title');
    • end;
    • При работе с закладкой Общие данные работа с БД происходит в виде написания запросов вручную и непосредственной работой с БД. При этом все визуальные компоненты LableEdit получают значения как строковые переменные. Такой подход более трудоемок но позволяет более тонко работать с БД, добавляя например новые записи при помощи тех же визуальных компонентов.
    • 2.8 Задание
    • На закладке Задание размещаются характеристики механической системы, выдаваемые в задании к курсовой работе - массы и геометрические размеры тел, жесткости пружин и др.
    • В отличии от вкладки Общие данные на вкладке Задание используются визуальные компоненты для работы с БД - имеющие тип BDEdit (рис 5). Они связаны с БД при помощи цепочки qZadanie-dsZadanie-dbeNuzhnoePole. Где TQuery qZadanie связано с qMain и выполняет запрос select * from zadanie where number=:number.
    • При нажатии на кнопку Изменить производиться изменение данных в таблице Zadanie. Для этого с компонентом qZadanie связывается компонент updZadanie (TUpdateSql) при вызове метода
    • updZadanie.Apply(ukModify);
    • измененные данные заносятся в БД. Для работы updZadanie в обекте qZadanie разрешается кеширование изменией (свойство CachedUpdate = True ).
    • Рис 5. Вкладка Задание
    • Часть 1
    • Первая часть курсовой работы по ТМ описывает движение материальной точки на рамке, вращающийся с постоянной скоростью В закладку Часть 1 (рис 6) вынесены неизменные параметры первой части - начальные данные движения точки, угловая скорость вращения рамки и оценки погрешностей вызванных сделанными в работе допущениями.
    • Для отображения данных используются компоненты типа DBEdit связанные с объектам qPart1 (TQuery, DataSource=dsMain, Sql: Select * from Part1 where Number=:Number) через dsPart1(TDataSource).
    • При нажатии на кнопку Изменить выполняется метод Apply(ukModify) объекта udpPart1, связанного с qPart1.
    • Рис 6. Закладка Часть 1
    • Кинематика 1ой части
    • На закладках Кинематика 1ой части, Реакции 1ой части и Силы действующие на точку (рис7-9) представлены данные, хранящиеся в таблице Part1_Time. Большое количество столбцов таблицы а так же необходимость выведения значений для нескольких моментов времени потребовали новой организации отображения данных - в ячейках 3 таблиц компонентов типа TDBGrid. Визуальные компоненты dbgPart1_TimeKin, dbgPart1_TimeDin1, dbgPart1_TimeDin2 подключены к источникам данных dsPart1_TimeKin dsPart1_TimeDin1 dsPart1_TimeDin2 dsPart1_TimeKin, qPart1_TimeDin1 dsPart1_TimeDin2 которые в свою очередь связаны с запросами qPart1_TimeKin, qPart1_TimeDin1, qPart1_TimeDin2 с элементами обновления updPart1_TimeKin updPart1_TimeDin1, updPart1_TimeDin2.
    • Закладка Кинематика 1ой части среди них первостепенная - она позволяет добавлять новые записи к таблице Part1_Time (при помощи запроса Insert into Part1_Time).
    • Рис 7. Закладка Кинематика 1ой части
    • Рис 8. Закладка Реакции первой части
    • Рис 9. Закладка Силы действующие на точку
    • Графики
    • Следующей закладкой является закладка Графики. На ней представлена возможность визуального отображения БД с помощью компонента DBChar. Компоненты TDBChar связаны с источником данных dsPart1_TimeKin. По оси абсцисс отложено значения поля t, по оси ординат значения полей Phi, Psi (первый график), Phi_Dot, Psi_Dot (второй график).
    • Рис 10. Закладка Графики.
    • Часть 2 и Часть 3.
    • На закладках Часть 2 и Часть 3 отображаются значения параметров 2ой и 3ей части курсовой работы по ТМ. 2ая часть - метод Лагранжа 2ого рода. Значения зависят от времени и для одной курсовой работы присутствует множество записей. Поэтому данные отображаются на компоненте TDBGrid, с фильтрацией значений по номеру выбранной работы.
    • Третья часть работы - Исследование движения на устойчивость содержит лишь совокупные для работы характеристики. Одной работе соответствует одна запись данной таблицы. Данные отображаются на компонентах TDBEdit связанных с dsPart3, qPart3 и updPart3.
    • Рис 11. Закладка Часть 2
    • Рис 12. Закладка Часть 3
    • 2.9 Формирование отчетов
    • Для формирования отчетов в Delphi 7 предусмотрена закладка компонентов Rave. Она включает в себя компоненты для связи с данными RvDataSetConnection, платформу отчетов RvSystem и компонет создания отчета RvReport. При вызове метода Execute компонента RvReport формируется отчет по заранее составленному шаблону (рис 13). Шаблоны создаются в меню Tools/Rave Disigner в Delphi 7 и храняться в файлах .rav в каталоге компиляции программы.
    • Рис 12. Общий отчет по БД.
    • Текст программы

    1.1. prBd.dpr

    program prBd;

    uses

    Forms,

    uFormBd in 'uFormBd.pas' {fMain};

    {$R *.res}

    begin

    Application.Initialize;

    Application.CreateForm(TfMain, fMain);

    Application.Run;

    end.

    1.2. uFormBb.pas

    unit uFormBd;

    interface

    uses

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

    Dialogs, DB, DBTables, Grids, DBGrids, StdCtrls, Mask, DBCtrls, ComCtrls,

    ExtCtrls, TeEngine, Series, TeeProcs, Chart, DbChart, RpDefine, RpCon,

    RpConDS, Menus, XPMan, RpBase, RpSystem, RpRave;

    type

    TfMain = class(TForm)

    dsMain: TDataSource;

    dbgMain: TDBGrid;

    bActive: TButton;

    bPassive: TButton;

    pcTablitzi: TPageControl;

    tsTitle: TTabSheet;

    tsPart1: TTabSheet;

    qMain: TQuery;

    qMainSTUDENT_FAMILY: TStringField;

    qMainMARK: TIntegerField;

    qMainDATE_DEFENCE: TStringField;

    qMainNUMBER: TIntegerField;

    updSqlVkladka: TUpdateSQL;

    qUpdate: TQuery;

    dsUpdate: TDataSource;

    leMinist: TLabeledEdit;

    leUniver: TLabeledEdit;

    leDepartment: TLabeledEdit;

    leStudent_Family: TLabeledEdit;

    leStudent_Name: TLabeledEdit;

    leYear: TLabeledEdit;

    leRukovod: TLabeledEdit;

    leExaminator: TLabeledEdit;

    leMark: TLabeledEdit;

    leDate_Begining: TLabeledEdit;

    leDate_Defence: TLabeledEdit;

    leVariant_N: TLabeledEdit;

    leFirst_Part_Name: TLabeledEdit;

    leSecond_Part_Name: TLabeledEdit;

    leThird_Part_Name: TLabeledEdit;

    leFirst_Part_Date: TLabeledEdit;

    leSecond_Part_Date: TLabeledEdit;

    leThird_Part_Date: TLabeledEdit;

    qUpdateNUMBER: TIntegerField;

    qUpdateMINIST: TStringField;

    qUpdateUNIVER: TStringField;

    qUpdateDEPARTMENT: TStringField;

    qUpdateSTUDENT_FAMILY: TStringField;

    qUpdateSTUDENT_NAME: TStringField;

    qUpdateYEAR: TIntegerField;

    qUpdateRUKOVOD: TStringField;

    qUpdateEXAMINATOR: TStringField;

    qUpdateMARK: TIntegerField;

    qUpdateDATE_BEGINING: TIntegerField;

    qUpdateDATE_DEFENCE: TStringField;

    qUpdateVARIANT_N: TIntegerField;

    qUpdateFIRST_PART_NAME: TStringField;

    qUpdateSECOND_PART_NAME: TStringField;

    qUpdateTHIRD_PART_NAME: TStringField;

    qUpdateFIRST_PART_DATE: TIntegerField;

    qUpdateSECOND_PART_DATE: TStringField;

    qUpdateTHIRD_PART_DATE: TStringField;

    qUpdateNUMB_PAGES: TStringField;

    qUpdateNUMB_PICT: TStringField;

    qUpdateNUMB_IST: TStringField;

    leNumb_Pages: TLabeledEdit;

    leNumb_Pict: TLabeledEdit;

    leNumb_Ist: TLabeledEdit;

    qTitle: TQuery;

    qTitleNUMBER: TIntegerField;

    qTitleMINIST: TStringField;

    qTitleUNIVER: TStringField;

    qTitleDEPARTMENT: TStringField;

    qTitleSTUDENT_FAMILY: TStringField;

    qTitleSTUDENT_NAME: TStringField;

    qTitleYEAR: TIntegerField;

    qTitleRUKOVOD: TStringField;

    qTitleEXAMINATOR: TStringField;

    qTitleMARK: TIntegerField;

    qTitleDATE_BEGINING: TIntegerField;

    qTitleDATE_DEFENCE: TStringField;

    qTitleVARIANT_N: TIntegerField;

    qTitleFIRST_PART_NAME: TStringField;

    qTitleSECOND_PART_NAME: TStringField;

    qTitleTHIRD_PART_NAME: TStringField;

    qTitleFIRST_PART_DATE: TIntegerField;

    qTitleSECOND_PART_DATE: TStringField;

    qTitleTHIRD_PART_DATE: TStringField;

    qTitleNUMB_PAGES: TStringField;

    qTitleNUMB_PICT: TStringField;

    qTitleNUMB_IST: TStringField;

    qPart1: TQuery;

    qPart1NUMBER: TIntegerField;

    qPart1PSI0: TStringField;

    qPart1PSI_DOT0: TStringField;

    qPart1PHI0: TStringField;

    qPart1OMEGA0: TIntegerField;

    qPart1POGR10_1: TIntegerField;

    qPart1POGR10_2: TIntegerField;

    qPart1POGR: TIntegerField;

    tsPart1_TimeKin: TTabSheet;

    dbgPart1_TimeKin: TDBGrid;

    qPart1_TimeKin: TQuery;

    updPart1_TimeKin: TUpdateSQL;

    dsPart1_TimeKin: TDataSource;

    qPart1_TimeKinNUMBER: TIntegerField;

    qPart1_TimeKinT: TIntegerField;

    qPart1_TimeKinPHI: TIntegerField;

    qPart1_TimeKinPSI: TIntegerField;

    qPart1_TimeKinPHI_DOT: TIntegerField;

    qPart1_TimeKinPSI_DOT: TIntegerField;

    qPart1_TimeKinPHI_DOT2: TIntegerField;

    qPart1_TimeKinPSI_DOT2: TIntegerField;

    qPart1_TimeKinV_R: TIntegerField;

    qPart1_TimeDin1: TQuery;

    IntegerField1: TIntegerField;

    IntegerField2: TIntegerField;

    updPart1_TimeDin1: TUpdateSQL;

    dsPart1_TimeDin1: TDataSource;

    tsPart1_TimeDin1: TTabSheet;

    dbgPart1_TimeDin1: TDBGrid;

    qPart1_TimeDin1M: TIntegerField;

    qPart1_TimeDin1XA: TIntegerField;

    qPart1_TimeDin1YA: TIntegerField;

    qPart1_TimeDin1XB: TIntegerField;

    qPart1_TimeDin1YB: TIntegerField;

    qPart1_TimeDin1ZB: TIntegerField;

    qPart1_TimeDin2: TQuery;

    IntegerField3: TIntegerField;

    IntegerField4: TIntegerField;

    IntegerField11: TIntegerField;

    IntegerField12: TIntegerField;

    IntegerField13: TIntegerField;

    IntegerField14: TIntegerField;

    IntegerField15: TIntegerField;

    IntegerField16: TIntegerField;

    IntegerField17: TIntegerField;

    IntegerField18: TIntegerField;

    updPart1_TimeDin2: TUpdateSQL;

    dsPart1_TimeDin2: TDataSource;

    tsPart1_TimeDin2: TTabSheet;

    dbgPart1_TimeDin2: TDBGrid;

    qPart1_TimeKinPSI_RAV: TIntegerField;

    dbnPart1_TimeKin: TDBNavigator;

    tsGraph: TTabSheet;

    dbcKoordinati: TDBChart;

    dbcSkorosti: TDBChart;

    Series1: TLineSeries;

    Series2: TLineSeries;

    Series3: TLineSeries;

    Series4: TLineSeries;

    bInsWork: TButton;

    leNumber: TLabeledEdit;

    bDelite: TButton;

    tsZadanie: TTabSheet;

    dbeMassa_Tochki: TDBEdit;

    dbeMassa_Ramki: TDBEdit;

    dbeRadius_Koltza: TDBEdit;

    dbeOtklonenie_D: TDBEdit;

    qZadanie: TQuery;

    qZadanieNUMBER: TIntegerField;

    qZadanieMASSA_TOCHKI: TIntegerField;

    qZadanieMASSA_RAMKI: TIntegerField;

    qZadanieRADIUS_KOLTZA: TIntegerField;

    qZadanieOTKLONENIE_D: TIntegerField;

    qZadanieNUMB_FREEDOMS: TIntegerField;

    qZadanieLENGTH0: TIntegerField;

    qZadanieZHESTKOST: TIntegerField;

    qZadanieUGL_ZHESTKOST: TIntegerField;

    qZadanieTYPE_SHARNIR_A: TStringField;

    qZadanieTYPE_SHARNIR_B: TStringField;

    qZadanieT0: TIntegerField;

    qZadanieTK: TIntegerField;

    qZadanieINT_POINTS_NUMBER: TIntegerField;

    dbeNumb_Freedoms: TDBEdit;

    dbeLenglth0: TDBEdit;

    dbeZhestkost: TDBEdit;

    dbeUgl_Zhestkost: TDBEdit;

    dbeType_Sharnir_A: TDBEdit;

    dbeType_Sharnir_B: TDBEdit;

    dbeT0: TDBEdit;

    dbeTK: TDBEdit;

    dbeInt_Points_Number: TDBEdit;

    lMassa_Tochki: TLabel;

    lMassa_Ramki: TLabel;

    lRadius_Koltza: TLabel;

    lOtklonenie_D: TLabel;

    lNumb_Freedoms: TLabel;

    lLenglth0: TLabel;

    lZhestkost: TLabel;

    lUgl_Zhestkost: TLabel;

    lType_Sharnir_A: TLabel;

    lType_Sharnir_B: TLabel;

    lT0: TLabel;

    lTK: TLabel;

    lInt_Points_Number: TLabel;

    dsZadanie: TDataSource;

    dbePsi0: TDBEdit;

    dbePsi_Dot0: TDBEdit;

    dbePhi0: TDBEdit;

    dbeOmega0: TDBEdit;

    dbePogr10_1: TDBEdit;

    dbePogr: TDBEdit;

    dbePogr10_2: TDBEdit;

    lPsi0: TLabel;

    lPsi_Dot0: TLabel;

    lPhi0: TLabel;

    lOmega0: TLabel;

    lPogr10_1: TLabel;

    lPogr10_2: TLabel;

    lPogr: TLabel;

    dsPart1: TDataSource;

    tsPart2: TTabSheet;

    tsPart3: TTabSheet;

    qPart2: TQuery;

    qPart3: TQuery;

    dsPart2: TDataSource;

    dsPart3: TDataSource;

    dbgPart2: TDBGrid;

    qPart2NUMBER: TIntegerField;

    qPart2T: TIntegerField;

    qPart2PSI: TIntegerField;

    qPart2PHI: TIntegerField;

    qPart2PSI_DOT: TIntegerField;

    qPart2PHI_DOT: TIntegerField;

    qPart2E_T: TIntegerField;

    qPart2E_P: TIntegerField;

    qPart2Q_PSI: TIntegerField;

    qPart2Q_PHI: TIntegerField;

    qPart2E_FULL: TIntegerField;

    updPart2: TUpdateSQL;

    dbnPart2: TDBNavigator;

    dbeA11: TDBEdit;

    dbeA22: TDBEdit;

    dbeC11: TDBEdit;

    dbeC22: TDBEdit;

    dbePhi1: TDBEdit;

    dbePsi1: TDBEdit;

    dbePhi2: TDBEdit;

    dbePsi2: TDBEdit;

    dbeOmega_Phi: TDBEdit;

    dbeOmega_Psi: TDBEdit;

    dbeFaza_Phi: TDBEdit;

    dbeFaza_Psi: TDBEdit;

    lA11: TLabel;

    lA22: TLabel;

    lC11: TLabel;

    lC22: TLabel;

    lPhi1: TLabel;

    lPsi1: TLabel;

    lPhi2: TLabel;

    lPsi2: TLabel;

    lOmega_Phi: TLabel;

    lOmega_Psi: TLabel;

    lFaza_Phi: TLabel;

    lFaza_Psi: TLabel;

    dbeA_Phi: TDBEdit;

    dbeA_Psi: TDBEdit;

    dbeE_T: TDBEdit;

    dbeE_P: TDBEdit;

    lA_Phi: TLabel;

    lA_Psi: TLabel;

    lE_T: TLabel;

    lE_P: TLabel;

    dbeE_Full: TDBEdit;

    lE_Full: TLabel;

    dbeStabiliti1: TDBEdit;

    dbeStabiliti2: TDBEdit;

    lStabiliti1: TLabel;

    lStabiliti2: TLabel;

    updZadanie: TUpdateSQL;

    updPart3: TUpdateSQL;

    bZadModify: TButton;

    bPart1Modify: TButton;

    updPart1: TUpdateSQL;

    bPart3Modify: TButton;

    bShow: TButton;

    bTitleModify: TButton;

    bKinInsert: TButton;

    bKinModify: TButton;

    bKinDelete: TButton;

    bDin1Modify: TButton;

    bDin2Modify: TButton;

    DBNavigator1: TDBNavigator;

    dbnDin2: TDBNavigator;

    bPart2Modify: TButton;

    bPart2Insert: TButton;

    bPart2Delete: TButton;

    mMenu1: TMainMenu;

    mFile: TMenuItem;

    mActive: TMenuItem;

    mPassive: TMenuItem;

    mExit: TMenuItem;

    qPart3NUMBER: TIntegerField;

    qPart3A11: TIntegerField;

    qPart3A22: TIntegerField;

    qPart3C11: TIntegerField;

    qPart3C22: TIntegerField;

    qPart3PHI1: TIntegerField;

    qPart3PSI1: TIntegerField;

    qPart3PHI2: TIntegerField;

    qPart3PSI2: TIntegerField;

    qPart3STABILITI1: TIntegerField;

    qPart3STABILITI2: TIntegerField;

    qPart3OMEGA_PHI: TIntegerField;

    qPart3OMEGA_PSI: TIntegerField;

    qPart3FAZA_PHI: TIntegerField;

    qPart3FAZA_PSI: TIntegerField;

    qPart3A_PHI: TIntegerField;

    qPart3A_PSI: TIntegerField;

    qPart3E_T: TIntegerField;

    qPart3E_P: TIntegerField;

    qPart3E_FULL: TIntegerField;

    lPogrOkr: TLabel;

    XPManifest1: TXPManifest;

    RvSystemMain: TRvSystem;

    bRaveKin: TButton;

    RvDsMain: TRvDataSetConnection;

    qMainRave: TQuery;

    IntegerField5: TIntegerField;

    StringField1: TStringField;

    StringField2: TStringField;

    IntegerField6: TIntegerField;

    RvMain: TRvProject;

    RvKursach: TRvProject;

    qPart1_Time: TQuery;

    RvDsPart1: TRvDataSetConnection;

    RvDsPart1_Time: TRvDataSetConnection;

    RvDsTitle: TRvDataSetConnection;

    RvDsZadanie: TRvDataSetConnection;

    qPart1_TimeNUMBER: TIntegerField;

    qPart1_TimeT: TIntegerField;

    qPart1_TimePHI: TIntegerField;

    qPart1_TimePSI: TIntegerField;

    qPart1_TimePHI_DOT: TIntegerField;

    qPart1_TimePSI_DOT: TIntegerField;

    qPart1_TimePHI_DOT2: TIntegerField;

    qPart1_TimePSI_DOT2: TIntegerField;

    qPart1_TimeV_R: TIntegerField;

    qPart1_TimeM: TIntegerField;

    qPart1_TimeXA: TIntegerField;

    qPart1_TimeYA: TIntegerField;

    qPart1_TimeXB: TIntegerField;

    qPart1_TimeYB: TIntegerField;

    qPart1_TimeZB: TIntegerField;

    qPart1_TimeF_UPR: TIntegerField;

    qPart1_TimeN: TIntegerField;

    qPart1_TimeN_B: TIntegerField;

    qPart1_TimeN_N: TIntegerField;

    qPart1_TimeFIN1_TZ: TIntegerField;

    qPart1_TimeFIN2E_TZ: TIntegerField;

    qPart1_TimeFIN2R_N: TIntegerField;

    qPart1_TimeFIN2R_TAU: TIntegerField;

    qPart1_TimePSI_RAV: TIntegerField;

    RvDsPart2: TRvDataSetConnection;

    RvDsPart3: TRvDataSetConnection;

    bRaveKurs: TButton;

    procedure bActiveClick(Sender: TObject);

    procedure bPassiveClick(Sender: TObject);

    procedure bTestClick(Sender: TObject);

    procedure FormDestroy(Sender: TObject);

    procedure bShowClick(Sender: TObject);

    procedure bInsertKinClick(Sender: TObject);

    procedure bModifyKinClick(Sender: TObject);

    procedure bInsWorkClick(Sender: TObject);

    procedure bDeliteClick(Sender: TObject);

    procedure bZadModifyClick(Sender: TObject);

    procedure bPart1ModifyClick(Sender: TObject);

    procedure bPart3ModifyClick(Sender: TObject);

    procedure bShow1Click(Sender: TObject);

    procedure bTitleModifyClick(Sender: TObject);

    procedure bKinInsertClick(Sender: TObject);

    procedure bKinModifyClick(Sender: TObject);

    procedure bKinDeleteClick(Sender: TObject);

    procedure bDin1ModifyClick(Sender: TObject);

    procedure bDin2ModifyClick(Sender: TObject);

    procedure bPart2ModifyClick(Sender: TObject);

    procedure bPart2InsertClick(Sender: TObject);

    procedure bPart2DeleteClick(Sender: TObject);

    procedure mActiveClick(Sender: TObject);

    procedure mPassiveClick(Sender: TObject);

    procedure mExitClick(Sender: TObject);

    procedure bRaveKinClick(Sender: TObject);

    procedure bRaveKursClick(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;

    var

    fMain: TfMain;

    implementation

    {$R *.dfm}

    procedure TfMain.bActiveClick(Sender: TObject);

    begin

    qMain.Close;

    qMain.Open;

    qUpdate.Close;

    qUpdate.Open;

    qTitle.Close;

    qTitle.Open;

    qPart1.Close;

    qPart1.Open;

    qPart1_TimeKin.Close;

    qPart1_TimeKin.Open;

    qPart1_TimeDin1.Close;

    qPart1_TimeDin1.Open;

    qPart1_TimeDin2.Close;

    qPart1_TimeDin2.Open;

    qZadanie.Close;

    qZadanie.Open;

    qPart2.Close;

    qPart2.Open;

    qPart3.Close;

    qPart3.Open;

    qMainRave.Close;

    qMainRave.Open;

    end;

    procedure TfMain.bPassiveClick(Sender: TObject);

    begin

    qMain.Close;

    qUpdate.Close;

    qTitle.Close;

    qPart1.Close;

    qPart1_TimeKin.Close;

    qPart1_TimeDin1.Close;

    qPart1_TimeDin2.Close;

    qZadanie.Close;

    qPart2.Close;

    qPart3.Close;

    qMainRave.Close;

    end;

    procedure TfMain.bTestClick(Sender: TObject);

    begin

    qUpdate.CachedUpdates:=True;

    end;

    procedure TfMain.FormDestroy(Sender: TObject);

    begin

    qMain.Close;

    qUpdate.Close;

    qTitle.Close;

    qPart1.Close;

    qPart1_TimeKin.Close;

    qPart1_TimeDin1.Close;

    qPart1_TimeDin2.Close;

    qZadanie.Close;

    qPart2.Close;

    qPart3.Close;

    qMainRave.Close;

    end;

    procedure TfMain.bShowClick(Sender: TObject);

    begin

    {----------------------------- Часть первая -----------------------------------}

    { lePsi0.Text:=qPart1Psi0.AsString;

    lePsi_Dot0.Text:=qPart1Psi_Dot0.AsString;

    lePhi0.Text:=qPart1Phi0.AsString;

    leOmega0.Text:=qPart1Omega0.AsString;

    lePogr10_1.Text:=qPart1Pogr10_1.AsString;

    lePogr10_2.Text:=qPart1Pogr10_2.AsString;

    lePogr.Text:=qPart1Pogr.AsString; }

    end;

    procedure TfMain.bInsertKinClick(Sender: TObject);

    begin

    updPart1_TimeKin.Apply(ukInsert);

    end;

    procedure TfMain.bModifyKinClick(Sender: TObject);

    begin

    updPart1_TimeKin.Apply(ukModify);

    end;

    procedure TfMain.bInsWorkClick(Sender: TObject);

    var

    lPole,lParam: word;

    N,sPole,sParam,s,p:string;

    begin

    sPole:='';

    sParam:='';

    s:=#39; p:= ' , ';

    with qUpdate do begin

    N:=leNumber.Text;

    Sql.Clear;

    {------------ Номер, Министерство, Универ, Кафедра ------------------}

    sPole:=sPole+'Number, ';

    sParam:=sParam+leNumber.Text+p;

    sPole:=sPole+'Minist, ';

    sParam:=sParam+s+leMinist.Text+s+p;

    sPole:=sPole+'Univer, ';

    sParam:=sParam+s+leUniver.Text+s+p;

    sPole:=sPole+'Department, ';

    sParam:=sParam+s+leDepartment.Text+s+p;

    {-------- Фамилия, Имя Студента, Год выполения работы ---------------}

    sPole:=sPole+'Student_Family, ';

    sParam:=sParam+s+leStudent_Family.Text+s+p;

    sPole:=sPole+'Student_Name, ';

    sParam:=sParam+s+leStudent_Name.Text+s+p;

    {sPole:=sPole+'Year, ';

    sParam:=sParam+leYear.Text+p;

    {-------------- Руководитель, Экзаменатор, Оценка -------------------}

    sPole:=sPole+'Rukovod, ';

    sParam:=sParam+s+leRukovod.Text+s+p;

    sPole:=sPole+'Examinator, ';

    sParam:=sParam+s+leExaminator.Text+s+p;

    sPole:=sPole+'Mark, ';

    sParam:=sParam+s+leMark.Text+s+p;

    {------------------- Дата начала, Защиты, Вариант -------------------}

    sPole:=sPole+'Date_Begining, ';

    sParam:=sParam+s+leDate_Begining.Text+s+p;

    sPole:=sPole+'Date_Defence, ';

    sParam:=sParam+s+leDate_Defence.Text+s+p;

    sPole:=sPole+'Variant_N, ';

    sParam:=sParam+s+leVariant_N.Text+s+p;

    {----------------- Имя первой, второй, третий частей ----------------}

    sPole:=sPole+'First_Part_Name, ';

    sParam:=sParam+s+leFirst_Part_Name.Text+s+p;

    sPole:=sPole+'Second_Part_Name, ';

    sParam:=sParam+s+leSecond_Part_Name.Text+s+p;

    sPole:=sPole+'Third_Part_Name, ';

    sParam:=sParam+s+leFirst_Part_Name.Text+s+p;

    {----------------- Дата первой, второй, третий частей ---------------}

    sPole:=sPole+'First_Part_Date, ';

    sParam:=sParam+s+leFirst_Part_Date.Text+s+p;

    sPole:=sPole+'Second_Part_Date, ';

    sParam:=sParam+s+leSecond_Part_Date.Text+s+p;

    sPole:=sPole+'Third_Part_Date, ';

    sParam:=sParam+s+leFirst_Part_Date.Text+s+p;

    {------------ Количество источников, страниц, картинок --------------}

    sPole:=sPole+'Numb_Pages, ';

    sParam:=sParam+s+leNumb_Pages.Text+s+p;

    sPole:=sPole+'Numb_Pict, ';

    sParam:=sParam+s+leNumb_Pict.Text+s+p;

    sPole:=sPole+'Numb_Ist, ';

    sParam:=sParam+s+leNumb_Ist.Text+s+p;

    {--------------------- Подготовка запроса ---------------------------}

    lPole:=length(sPole);

    lParam:=length(sParam);

    sPole:=copy(sPole,1,lPole-2);

    sParam:=copy(sParam,1,lParam-3);

    {------------- Формирование, выполение запроса ----------------------}

    Sql.Add('Insert into Title ('+sPole+') values ('+sParam+')');

    Close;

    ExecSql;

    Sql.Clear;

    Sql.Add('select * from title where (NUMBER= :NUMBER)');

    Open;

    {------------- Вставка строки в остальные таблицы -------------------}

    Sql.Clear;

    Sql.Add('Insert into Zadanie (Number) values ('+N+')');

    Close;

    ExecSql;

    Sql.Clear;

    Sql.Add('Insert into Part1 (Number) values ('+N+')');

    Close;

    ExecSql;

    Sql.Clear;

    Sql.Add('Insert into Part3 (Number) values ('+N+')');

    Close;

    ExecSql;

    Sql.Clear;

    Sql.Add('select * from title where (NUMBER= :NUMBER)');

    Open;

    end;

    end;

    procedure TfMain.bDeliteClick(Sender: TObject);

    var

    N: word;

    begin

    with qUpdate do begin

    N:=qMainNumber.AsInteger;

    Sql.Clear;

    Sql.Add('Delete from Title Where Number= '+IntToStr(N));

    Close;

    ExecSql;

    Sql.Clear;

    Sql.Add('Delete from Zadanie Where Number= '+IntToStr(N));

    Close;

    ExecSql;

    Sql.Clear;

    Sql.Add('Delete from Part1 Where Number= '+IntToStr(N));

    Close;

    ExecSql;

    Sql.Clear;

    Sql.Add('Delete from Part1_Time Where Number= '+IntToStr(N));

    Close;

    ExecSql;

    Sql.Clear;

    Sql.Add('Delete from Part2 Where Number= '+IntToStr(N));

    Close;

    ExecSql;

    Sql.Clear;

    Sql.Add('Delete from Part3 Where Number= '+IntToStr(N));

    Close;

    ExecSql;

    Sql.Clear;

    Sql.Add('select * from title where (NUMBER= :NUMBER)');

    end;

    end;

    procedure TfMain.bZadModifyClick(Sender: TObject);

    begin

    updZadanie.Apply(ukModify);

    end;

    procedure TfMain.bPart1ModifyClick(Sender: TObject);

    begin

    updPart1.Apply(ukModify);

    end;

    procedure TfMain.bPart3ModifyClick(Sender: TObject);

    begin

    updPart3.Apply(ukModify);

    end;

    procedure TfMain.bShow1Click(Sender: TObject);

    begin

    {--------------------- Закладка общие данные ----------------------------------}

    leMinist.Text:=qTitleMinist.AsString;

    leUniver.Text:=qTitleUniver.AsString;

    leDepartment.Text:=qTitleDepartment.AsString;

    leStudent_Family.Text:=qTitleStudent_Family.AsString;

    leStudent_Name.Text:=qTitleStudent_Name.AsString;

    leYear.Text:=qTitleYear.AsString;

    leRukovod.Text:=qTitleRukovod.AsString;

    leExaminator.Text:=qTitleExaminator.AsString;

    leMark.Text:=qTitleMark.AsString;

    leDate_Begining.Text:=qTitleDate_Begining.AsString;

    leDate_Defence.Text:=qTitleDate_Defence.AsString;

    leVariant_N.Text:=qTitleVariant_N.AsString;

    leFirst_Part_Name.Text:=qTitleFirst_Part_Name.AsString;

    leSecond_Part_Name.Text:=qTitleSecond_Part_Name.AsString;

    leThird_Part_Name.Text:=qTitleThird_Part_Name.AsString;

    leFirst_Part_Date.Text:=qTitleFirst_Part_Date.AsString;

    leSecond_Part_Date.Text:=qTitleSecond_Part_Date.AsString;

    leThird_Part_Date.Text:=qTitleThird_Part_Date.AsString;

    leNumb_Pages.Text:=qTitleNumb_Pages.AsString;

    leNumb_Pict.Text:=qTitleNumb_Pict.AsString;

    leNumb_Ist.Text:=qTitleNumb_Ist.AsString;

    leNumber.Text:=qTitleNumber.AsString;

    end;

    procedure TfMain.bTitleModifyClick(Sender: TObject);

    var

    k,m,l:integer;

    N: word;

    sSql,s,p:string;

    begin

    // sSql:='Minist= '+leMinist.Text;

    sSql:='Update Title SET ';

    s:=#39;

    p:=' , ';

    k:=0; m:=0;

    {------------------------Министерство, вуз, кафедра----------------------------}

    if qTitleMinist.AsString<>leMinist.Text

    then begin

    sSql:=sSql+' Minist= '+s+leMinist.Text+s+p;

    k:=k+1;

    end;

    if qTitleUniver.AsString<>leUniver.Text

    then begin

    sSql:=sSql+' Univer= '+s+leUniver.Text+s+p;

    k:=k+1;

    end;

    if qTitleDepartment.AsString<>leDepartment.Text

    then begin

    sSql:=sSql+' Department= '+s+leDepartment.Text+s+p;

    k:=k+1;

    end;

    {----------------------- Студент, год работы ----------------------------------}

    if qTitleStudent_Family.AsString<>leStudent_Family.Text

    then begin

    sSql:=sSql+' Student_Family= '+s+leStudent_Family.Text+s+p;

    k:=k+1;

    end;

    if qTitleStudent_Name.AsString<>leStudent_Name.Text

    then begin

    sSql:=sSql+' Student_Name= '+s+leStudent_Name.Text+s+p;

    k:=k+1;

    end;

    if qTitleYear.AsString<>leYear.Text

    then begin

    sSql:=sSql+' Year= '+s+leYear.Text+s+p;

    k:=k+1;

    end;

    { if qTitleYear.AsString<>leYear.Text

    then begin

    sSql:=sSql+' Year= '+s+leYear.Text+s+p;

    k:=k+1;

    end;

    {------------------- Руководитель, экзаминатор, оценка ------------------------}

    if qTitleRukovod.AsString<>leRukovod.Text

    then begin

    sSql:=sSql+' Rukovod= '+s+leRukovod.Text+s+p;

    k:=k+1;

    end;

    if qTitleExaminator.AsString<>leExaminator.Text

    then begin

    sSql:=sSql+' Examinator= '+s+leExaminator.Text+s+p;

    k:=k+1;

    end;

    if qTitleMark.AsString<>leMark.Text

    then begin

    sSql:=sSql+' Mark= '+s+leMark.Text+s+p;

    k:=k+1;

    end;

    {------------------- Дата начала, защиты, вариант -----------------------------}

    if qTitleDate_Begining.AsString<>leDate_Begining.Text

    then begin

    sSql:=sSql+' Date_Begining= '+s+leDate_Begining.Text+s+p;

    k:=k+1;

    end;

    if qTitleDate_Defence.AsString<>leDate_Defence.Text

    then begin

    sSql:=sSql+' Date_Defence= '+s+leDate_Defence.Text+s+p;

    k:=k+1;

    end;

    if qTitleVariant_N.AsString<>leVariant_N.Text

    then begin

    sSql:=sSql+' Variant_N= '+s+leVariant_N.Text+s+p;

    k:=k+1;

    end;

    {--------------------------- Имена частей -------------------------------------}

    if qTitleFirst_Part_Name.AsString<>leFirst_Part_Name.Text

    then begin

    sSql:=sSql+' First_Part_Name= '+s+leFirst_Part_Name.Text+s+p;

    k:=k+1;

    end;

    if qTitleSecond_Part_Name.AsString<>leSecond_Part_Name.Text

    then begin

    sSql:=sSql+' Second_Part_Name= '+s+leSecond_Part_Name.Text+s+p;

    k:=k+1;

    end;

    if qTitleThird_Part_Name.AsString<>leThird_Part_Name.Text

    then begin

    sSql:=sSql+' Third_Part_Name= '+s+leThird_Part_Name.Text+s+p;

    k:=k+1;

    end;

    {---------------------------- Даты сдачи частей -------------------------------}

    if qTitleFirst_Part_Date.AsString<>leFirst_Part_Date.Text

    then begin

    sSql:=sSql+' First_Part_Date= '+s+leFirst_Part_Date.Text+s+p;

    k:=k+1;

    end;

    if qTitleSecond_Part_Date.AsString<>leSecond_Part_Date.Text

    then begin

    sSql:=sSql+' Second_Part_Date= '+s+leSecond_Part_Date.Text+s+p;

    k:=k+1;

    end;

    if qTitleThird_Part_Date.AsString<>leThird_Part_Date.Text

    then begin

    sSql:=sSql+' Third_Part_Date= '+s+leThird_Part_Date.Text+s+p;

    k:=k+1;

    end;

    {---------------------- Страницы, источники, иллюстрации ----------------------}

    if qTitleNumb_Pages.AsString<>leNumb_Pages.Text

    then begin

    sSql:=sSql+' Numb_Pages= '+s+leNumb_Pages.Text+s+p;

    k:=k+1;

    end;

    if qTitleNumb_Pict.AsString<>leNumb_Pict.Text

    then begin

    sSql:=sSql+' Numb_Pict= '+s+leNumb_Pict.Text+s+p;

    k:=k+1;

    end;

    if qTitleNumb_Ist.AsString<>leNumb_Ist.Text

    then begin

    sSql:=sSql+' Numb_Ist= '+s+leNumb_Ist.Text+s+p;

    k:=k+1;

    end;

    {----------------------- Генерация запроса ------------------------------------}

    l:=length(sSql);

    sSql:=Copy(sSql,1,l-3);

    if k<>0 then

    with qUpdate do begin

    N:=qTitleNumber.AsInteger;

    Sql.Clear;

    Sql.Add(sSql+' Where Number = '+IntToStr(N));

    Close;

    ExecSql;

    Sql.Clear;

    Sql.Add('Select * from title');

    end;

    end;

    procedure TfMain.bKinInsertClick(Sender: TObject);

    begin

    updPart1_TimeKin.Apply(ukInsert);

    end;

    procedure TfMain.bKinModifyClick(Sender: TObject);

    begin

    updPart1_TimeKin.Apply(ukModify);

    end;

    procedure TfMain.bKinDeleteClick(Sender: TObject);

    var

    N,Time:integer;

    begin

    with qUpdate do begin

    N:=qMainNumber.AsInteger;

    Time:=qPart1_TimeKinT.AsInteger;

    Sql.Clear;

    Sql.Add('Delete from Part1_Time Where Number= '+IntToStr(N)+' and t= '+IntToStr(Time));

    Close;

    ExecSql;

    Sql.Clear;

    Sql.Add('select * from title where (NUMBER= :NUMBER)');

    end;

    end;

    procedure TfMain.bDin1ModifyClick(Sender: TObject);

    begin

    updPart1_TimeDin1.Apply(ukModify);

    end;

    procedure TfMain.bDin2ModifyClick(Sender: TObject);

    begin

    updPart1_TimeDin2.Apply(ukModify);

    end;

    procedure TfMain.bPart2ModifyClick(Sender: TObject);

    begin

    updPart2.Apply(ukModify);

    end;

    procedure TfMain.bPart2InsertClick(Sender: TObject);

    begin

    updPart2.Apply(ukInsert);

    end;

    procedure TfMain.bPart2DeleteClick(Sender: TObject);

    var

    N,Time:integer;

    begin

    with qUpdate do begin

    N:=qMainNumber.AsInteger;

    Time:=qPart2T.AsInteger;

    Sql.Clear;

    Sql.Add('Delete from Part2 Where Number= '+IntToStr(N)+' and t= '+IntToStr(Time));

    Close;

    ExecSql;

    Sql.Clear;

    Sql.Add('select * from title where (NUMBER= :NUMBER)');

    end;

    end;

    procedure TfMain.mActiveClick(Sender: TObject);

    begin

    qMain.Close;

    qMain.Open;

    qUpdate.Close;

    qUpdate.Open;

    qTitle.Close;

    qTitle.Open;

    qPart1.Close;

    qPart1.Open;

    qPart1_TimeKin.Close;

    qPart1_TimeKin.Open;

    qPart1_TimeDin1.Close;

    qPart1_TimeDin1.Open;

    qPart1_TimeDin2.Close;

    qPart1_TimeDin2.Open;

    qZadanie.Close;

    qZadanie.Open;

    qPart2.Close;

    qPart2.Open;

    qPart3.Close;

    qPart3.Open;

    end;

    procedure TfMain.mPassiveClick(Sender: TObject);

    begin

    qMain.Close;

    qUpdate.Close;

    qTitle.Close;

    qPart1.Close;

    qPart1_TimeKin.Close;

    qPart1_TimeDin1.Close;

    qPart1_TimeDin2.Close;

    qZadanie.Close;

    qPart2.Close;

    qPart3.Close;

    end;

    procedure TfMain.mExitClick(Sender: TObject);

    begin

    fMain.Close;

    end;

    procedure TfMain.bRaveKinClick(Sender: TObject);

    begin

    RvMain.Execute;

    end;

    procedure TfMain.bRaveKursClick(Sender: TObject);

    begin

    RvKursach.Execute;

    end;

    end.

    1.3. uFormBd.dfm

    object fMain: TfMain

    Left = 380

    Top = 244

    Width = 643

    Height = 641

    Caption = #1041#1044' '#1087#1086' '#1082#1091#1088#1089#1086#1074#1099#1084' '#1088#1072#1073#1086#1090#1072#1084' '#1058#1052'. '#1050#1091#1088#1082#1080#1085' '#1045#1074#1075'. '#1075#1088' 135'

    Color = clBtnFace

    Font.Charset = DEFAULT_CHARSET

    Font.Color = clWindowText

    Font.Height = -11

    Font.Name = 'MS Sans Serif'

    Font.Style = []

    Menu = mMenu1

    OldCreateOrder = False

    OnDestroy = FormDestroy

    PixelsPerInch = 96

    TextHeight = 13

    object dbgMain: TDBGrid

    Left = 8

    Top = 104

    Width = 209

    Height = 425

    DataSource = dsMain

    TabOrder = 0

    TitleFont.Charset = DEFAULT_CHARSET

    TitleFont.Color = clWindowText

    TitleFont.Height = -11

    TitleFont.Name = 'MS Sans Serif'

    TitleFont.Style = []

    end

    object bActive: TButton

    Left = 8

    Top = 16

    Width = 97

    Height = 25

    Caption = #1055#1086#1076#1082#1083#1102#1095#1080#1090#1100#1089#1103

    TabOrder = 1

    OnClick = bActiveClick

    end

    object bPassive: TButton

    Left = 120

    Top = 16

    Width = 97

    Height = 25

    Caption = #1054#1090#1082#1083#1102#1095#1080#1090#1100#1089#1103

    TabOrder = 2

    OnClick = bPassiveClick

    end

    object pcTablitzi: TPageControl

    Tag = 23

    Left = 232

    Top = 8

    Width = 385

    Height = 561

    ActivePage = tsTitle

    MultiLine = True

    TabOrder = 3

    object tsTitle: TTabSheet

    Caption = #1054#1073#1097#1080#1077' '#1076#1072#1085#1085#1099#1077

    object leMinist: TLabeledEdit

    Left = 8

    Top = 40

    Width = 105

    Height = 21

    EditLabel.Width = 73

    EditLabel.Height = 13

    EditLabel.Caption = #1052#1080#1085#1080#1089#1090#1077#1088#1089#1090#1074#1086

    TabOrder = 0

    end

    object leUniver: TLabeledEdit

    Left = 128

    Top = 40

    Width = 105

    Height = 21

    EditLabel.Width = 66

    EditLabel.Height = 13

    EditLabel.Caption = #1059#1085#1080#1074#1077#1088#1089#1080#1090#1077#1090

    TabOrder = 1

    end

    object leDepartment: TLabeledEdit

    Left = 248

    Top = 40

    Width = 105

    Height = 21

    EditLabel.Width = 45

    EditLabel.Height = 13

    EditLabel.Caption = #1050#1072#1092#1077#1076#1088#1072

    TabOrder = 2

    end

    object leStudent_Family: TLabeledEdit

    Left = 8

    Top = 88

    Width = 105

    Height = 21

    EditLabel.Width = 97

    EditLabel.Height = 13

    EditLabel.Caption = #1060#1072#1084#1080#1083#1080#1103' '#1089#1090#1091#1076#1077#1085#1090#1072

    TabOrder = 3

    end

    object leStudent_Name: TLabeledEdit

    Left = 128

    Top = 88

    Width = 105

    Height = 21

    EditLabel.Width = 70

    EditLabel.Height = 13

    EditLabel.Caption = #1048#1084#1103' '#1089#1090#1091#1076#1077#1085#1090#1072

    TabOrder = 4

    end

    object leYear: TLabeledEdit

    Left = 248

    Top = 88

    Width = 105

    Height = 21

    EditLabel.Width = 18

    EditLabel.Height = 13

    EditLabel.Caption = #1043#1086#1076

    TabOrder = 5

    end

    object leRukovod: TLabeledEdit

    Left = 8

    Top = 136

    Width = 105

    Height = 21

    EditLabel.Width = 71

    EditLabel.Height = 13

    EditLabel.Caption = #1056#1091#1082#1086#1074#1086#1076#1080#1090#1077#1083#1100

    TabOrder = 6

    end

    object leExaminator: TLabeledEdit

    Left = 128

    Top = 136

    Width = 105

    Height = 21

    EditLabel.Width = 68

    EditLabel.Height = 13

    EditLabel.Caption = #1069#1082#1079#1072#1084#1077#1085#1072#1090#1086#1088

    TabOrder = 7

    end

    object leMark: TLabeledEdit

    Left = 248

    Top = 136

    Width = 105

    Height = 21

    EditLabel.Width = 38

    EditLabel.Height = 13

    EditLabel.Caption = #1054#1094#1077#1085#1082#1072

    TabOrder = 8

    end

    object leDate_Begining: TLabeledEdit

    Left = 8

    Top = 184

    Width = 105

    Height = 21

    EditLabel.Width = 104

    EditLabel.Height = 13

    EditLabel.Caption = #1044#1072#1090#1072' '#1085#1072#1095#1072#1083#1072' '#1088#1072#1073#1086#1090#1099

    TabOrder = 9

    end

    object leDate_Defence: TLabeledEdit

    Left = 128

    Top = 184

    Width = 105

    Height = 21

    EditLabel.Width = 69

    EditLabel.Height = 13

    EditLabel.Caption = #1044#1072#1090#1072' '#1079#1072#1097#1080#1090#1099

    TabOrder = 10

    end

    object leVariant_N: TLabeledEdit

    Left = 248

    Top = 184

    Width = 105

    Height = 21

    EditLabel.Width = 84

    EditLabel.Height = 13

    EditLabel.Caption = #1053#1086#1084#1077#1088' '#1074#1072#1088#1080#1072#1085#1090#1072

    TabOrder = 11

    end

    object leFirst_Part_Name: TLabeledEdit

    Left = 8

    Top = 232

    Width = 105

    Height ...


Подобные документы

  • СУБД - многопользовательские системы управления базой данных, специализирующиеся на управлении массивом информации. Запросы на выборку и изменение данных, формирование отчетов по запросам выборки. Схема базы данных. Программа по управлению базой данных.

    реферат [1,9 M], добавлен 27.12.2013

  • Программа для работы с однотабличной ненормализованной базой данных. Цель программы: обеспечение инструментарием для работы с базой данных различных школьных соревнований. Работа с базой данных на физическом и логическом уровнях. Элементы языка.

    курсовая работа [114,3 K], добавлен 02.03.2009

  • Разработка информационной системы административного управления. Выбор языка и среды программирования. Структура взаимодействия информации. Требования к программно-аппаратному окружению. Создание программы в Delphi и связывание ее с базой данных.

    курсовая работа [1010,9 K], добавлен 08.10.2015

  • Классификация баз данных. Выбор системы управления базами данных для создания базы данных в сети. Быстрый доступ и получение конкретной информации по функциям. Распределение функций при работе с базой данных. Основные особенности иерархической модели.

    отчет по практике [1,2 M], добавлен 08.10.2014

  • Разработка программных продуктов на языке программирования Borland Delphi. Применяемые таблицы и связи между ними. Пользовательский интерфейс работы с базой данных. Алгоритм работы программы "Футбольные команды и игроки". Защита от ввода неверных данных.

    курсовая работа [788,1 K], добавлен 22.06.2011

  • Появление системы управления базами данных. Этапы проектирования базы данных "Строительная фирма". Инфологическая и даталогическая модель данных. Требования к информационной и программной совместимости для работы с базой данных "Строительная фирма".

    курсовая работа [93,0 K], добавлен 31.03.2010

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

    курсовая работа [1,5 M], добавлен 23.01.2010

  • Даталогическая и инфологическая модели системы управления базой данных футбольного клуба. Обоснование выбора даталогической модели данных. Разработка структуры и системы управления базой данных. Выбор системы программирования, создание форм ввода.

    курсовая работа [406,0 K], добавлен 24.12.2014

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

    дипломная работа [1,6 M], добавлен 25.04.2015

  • Определение (задание структуры) данных. Обработка данных. Управление данными. Microsoft Access - нечто большее, чем СУБД. Проектирование, создание и управление базой данных на примере переплетной мастерской в пакете MS Access.

    курсовая работа [470,8 K], добавлен 30.10.2002

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

    курсовая работа [425,2 K], добавлен 07.07.2012

  • Реализация программы, разработанной в среде Turbo C++. Обработка динамической структуры данных, содержащей сведения об авторах книг. Моделирование работы со структурой как с базой данных. Метод сортировки и описание работы пользовательских подпрограмм.

    курсовая работа [124,3 K], добавлен 23.12.2010

  • Разработка базы данных для учета размещения и услуг гостиницы-отеля "Баташев". Анализ предметной области, проектирование базы данных. Реализация SQL-запросов для создания объектов и получения отчетов. Реализация приложения для работы с базой данных.

    курсовая работа [336,0 K], добавлен 05.01.2014

  • Анализ предметной области. Предположительный набор необходимых функций. Даталогическое и инфологическое проектирование. Реляционная модель данных. Создание запросов и атрибутов. Физическая модель данных. Разработка приложения для работы с базой данных.

    курсовая работа [720,8 K], добавлен 26.04.2015

  • Особенности кадрового дела. Разработка схемы базы данных для отдела кадров. Реализация разработанной схемы в конкретной СУБД (MS Access). Создание экранных форм для ввода данных, отчетов, запросов. Автоматизация работы с созданной базой данных.

    курсовая работа [2,8 M], добавлен 10.05.2011

  • Разработка программы "Игроки КХЛ 2012-2013" на языке С++ с использованием классов списков структур для обработки данных. Описание глобальных переменных, разработанных функций. Главное меню программы. Чтение данных из файла, их просмотр и сохранение.

    курсовая работа [2,2 M], добавлен 17.03.2016

  • Управление базами данных. Система управления базой данных MS Access. Виды логической связи. Макросы и модули. Обеспечение целостности данных. Создание запросов и форм. Свойства полей базы данных Access. Взаимосвязь между сущностями в предметной области.

    курсовая работа [943,4 K], добавлен 13.03.2014

  • Разработка системы управления базой данных "Структура ВУЗа". Требования к программе: функциональным характеристикам, надежности, эксплуатации, составу и параметрам технических средств. Требования к программной документации. Порядок контроля и приемки.

    курсовая работа [982,7 K], добавлен 08.06.2015

  • Программа перенесения данных из таблицы Word в таблицу базы данных. Алгоритм решения задачи в виде текстового описания. Описание базы данных (структура таблиц, схема). Копии с экрана форм для работы с базой данных при разработке их в конструкторе.

    контрольная работа [914,3 K], добавлен 26.03.2011

  • Понятие баз данных и принципы проектирования информационных систем. Разработка программы для отслеживания финансовой стороны работы компании в среде Delphi 7. Создание таблиц и схемы данных. Разработка клиентского приложения и процедуры добавления данных.

    курсовая работа [1,4 M], добавлен 25.04.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.