Главная страница
Навигация по странице:

  • ГЛАВА I . ЭТАПЫ РАЗРАБОТКИ БАЗЫ ДАННЫХ 1.1 Описание предметной области

  • 1.2 Концептуальная модель и ее описание

  • 1.5 Описание таблиц Структура таблицы ПРОЦЕССОРЫ

  • МОДУЛИ ОПЕРАТИВНОЙ ПАМЯТИ

  • ГЛАВА II. ПРОЕКТИРОВАНИЕ ПРИЛОЖЕНИЯ 2.1 Выбор среды программирования 2.1.1 Denwer 3 + MySQL Server 5.5.25

  • 2.1.2 Connector/ODBC 5.2.5

  • 2.2 Разработка интерфейса

  • 2.3.3 Подбор комплектующих

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

  • Диас курсавой. Данный магазин запрос


    Скачать 353.38 Kb.
    НазваниеДанный магазин запрос
    Дата14.05.2022
    Размер353.38 Kb.
    Формат файлаdocx
    Имя файлаДиас курсавой.docx
    ТипРеферат
    #528446



    Содержание

    ВВЕДЕНИЕ.........................................................................................3

    ВВЕДЕНИЕ

    данный магазин запрос

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

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

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

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

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

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

    Система управления базами данных (СУБД) – это система, обеспечивающая поиск, хранение, корректировку данных, формирование ответов на запросы. Система обеспечивает сохранность данных, их конфиденциальность, перемещение и связь с другими программными средствами.

    СУБД становятся наиболее популярным средством обработки табличной информации. Они являются инструментальным средством проектирования баз данных при обработке больших объемов информации.

    СУБД реляционного типа являются наиболее распространенным на всех классах ЭВМ, а на ПК занимают доминирующее положение. СУБД позволяет структурировать, систематизировать и организовать данные для их компьютерного хранения и обработки. В данном курсовом проекте разработана база данных «Магазин компьютерных комплектующих».

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

    Задачи курсового проекта: получить возможность просматривать, редактировать, добавлять данные, получать результаты запросов. В качестве приложения для разработки базы данных использован язык MySQL, а в качестве разработки СУБД использован программный продукт Borland Delphi 7. Разработанная программа предназначена для работы на компьютерах с операционными системами семейства Windows. Программа не требовательна к ресурсам системы и проста в использовании, благодаря удобному пользовательскому интерфейсу.
    ГЛАВА I. ЭТАПЫ РАЗРАБОТКИ БАЗЫ ДАННЫХ

    1.1 Описание предметной области

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

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

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

    Поэтому в базе данных, мне хотелось бы уделить больше внимания товарам, разделив их на типы.
    1.2 Концептуальная модель и ее описание
    Для данной предметной области можно спроецировать простую концептуальную модель, которая будет состоять из 2 объектов, связанных между собой. Объект «Товар», хранит информацию о типе товара, его параметрах, цене и т. д. Объект «ПРОДАЖИ», хранит информацию о проданных товарах, их наименовании, количестве, дате продажи, цене.

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


    1.3 Логическая модель
    Логическая модель отражает логические связи между элементами данных вне зависимости от их содержания и среде хранения.

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

    Как видно из логической модели (см. рисунок 1.), база данных будет состоять из двух сущностей:

    ТОВАРЫ. Сюда заносится вся информация о товарах. Причём, сущность ТОВАРЫ разбита на 4 ‘подсущности’, которые логически связанны между собой:

    МАТЕРИНСКИЕ ПЛАТЫ

    ПРОЦЕССОРЫ

    ВИДЕОКАРТЫ

    МОДУЛИ ОПЕРАТИВНОЙ ПАМЯТИ;

    ПРОДАЖИ. Здесь хранится информация о когда-либо проданных товарах.


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

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

    Все актуальные требования предметной области и адекватные им «скрытые» требования на стадии проектирования должны найти свое отражение в концептуальной модели. Конечно, нельзя предусмотреть все возможные варианты использования и изменения базы данных. Но в большинстве предметных областей такие основные данные, как объекты и их взаимосвязи, относительно стабильны. Меняются только информационные требования, то есть способы использования данных для получения информации.

    Степень независимости данных определяется тщательностью проектирования базы данных. Всесторонний анализ объектов предметной области и их взаимосвязей минимизирует влияние изменения требований к данным в одной программе на другие программы.
    1.5 Описание таблиц

    Структура таблицы ПРОЦЕССОРЫ

    Значение

    Название поля в БД

    Тип данных

    Код товара

    ID_proc

    INT(12), NOT NULL, PRIMARY KEY

    Наименование

    Name

    VARCHAR(40)

    Разъём процессора

    Socket

    VARCHAR(12)

    Ядро

    Core

    VARCHAR(12)

    Количество ядер

    Number_cores

    INT(12)

    Техпроцесс, нм

    Process_tech_nm

    INT(12)

    Частота, МГц

    Frequency_MGz

    INT(12)

    Системная шина

    System_bus

    VARCHAR(12)

    Цена, руб

    Price_rub

    INT(12), NOT NULL


    Структура таблицы ВИДЕОКАРТЫ

    Значение

    Название поля в БД

    Тип данных

    Код товара

    ID_VGA

    INT(12), NOT NULL, PRIMARY KEY

    Наименование

    Name

    VARCHAR(40)

    Разъём процессора

    Graph_proc

    VARCHAR(20)

    Частота граф. процессора

    Frenq_proc_MGz

    INT(12)

    Поддержка интерфейса

    Interface

    VARCHAR(12)

    Граф. память

    VRAM_Mb

    INT(12)

    Тип граф. памяти

    Type_VRAM

    VARCHAR(12)

    Версия шейдеров

    Shaders

    DOUBLE

    Цена, руб

    Price_rub

    INT(12), NOT NULL


    Структура таблицы МАТЕРИНСКИЕ ПЛАТЫ

    Значение

    Название поля в БД

    Тип данных

    Код товара

    ID_MB

    INT(12), NOT NULL, PRIMARY KEY

    Наименование

    Name

    VARCHAR(40)

    Разъём процессора

    CPU_Socket

    VARCHAR(12)

    Чипсет

    Сhipset

    VARCHAR(12)

    Тип памяти

    Memory_type

    VARCHAR(12)

    Слотов памяти

    Memory_stots

    INT(12)

    Макс объём памяти

    Memory_max_Gb

    INT(12)

    Поддержка видеокарт

    VGA_sup

    VARCHAR(12)

    Цена, руб

    Price_rub

    INT(12), NOT NULL


    Структура таблицы МОДУЛИ ОПЕРАТИВНОЙ ПАМЯТИ

    Значение

    Название поля в БД

    Тип данных

    Код товара

    ID_DDR

    INT(12), NOT NULL, PRIMARY KEY

    Наименование

    Name

    VARCHAR(40)

    Тип памяти

    DDR_type

    VARCHAR(12)

    Форм-фактор

    Form

    VARCHAR(12)

    Частота

    Frequency_MGz

    INT(12)

    Объём

    Size_Gb

    INT(12)

    Цена, руб

    Price_rub

    INT(12), NOT NULL


    Структура таблицы ПРОДАЖИ

    Значение

    Название поля в БД

    Тип данных

    Код продажи

    ID_Sale

    INT(12), NOT NULL, PRIMARY KEY AUTO_INCREMENT

    Код товара

    Item_ID

    INT(12)

    Наименование

    Item_Name

    VARCHAR(40)

    Количество

    Number

    INT(12)

    Продавец

    Seller

    INT(12)

    Дата, время продажи

    Data_Time_sale

    INT(12)

    Цена

    Price

    INT(12)


    ГЛАВА II. ПРОЕКТИРОВАНИЕ ПРИЛОЖЕНИЯ

    2.1 Выбор среды программирования

    2.1.1 Denwer 3 + MySQL Server 5.5.25

    В качестве локального сервера MySQL я использовал локальный сервер Денвер версии 3.0. Локальный сервер Денвер 3 включает в себя уже установленные MySQL Server 5.5.25 и PhpMyAdmin 3.5.1, а так же локальный сервер можно перенести на другой компьютер без потери каких либо данных. А PhpMyAdmin более комфортен в работе с сервером MySQL, чем MySQL CommandLine.


    Рисунок 2 - PhpMyAdmin 3.5.1

    2.1.2 Connector/ODBC 5.2.5

    Это стандартный драйвер , который обеспечивает доступ к базе данных MySQL через Open Database Connectivity (ODBC) API. Включает в себя функциональность Unicode и ANSI драйверов ранее разделёных на Connector/ODBC 5.1 и Connector/ODBC 3.51.


    2.1.3 Borland Delphi 7

    Мощность и гибкость Delphi при работе с базами данных основана на
    низкоуровневом ядре - процессоре баз данных Borland Database Engine (BDE). Его интерфейс с прикладными программами называется Integrated Database Application Programming Interface (IDAPI). В принципе. BDE позволяет осуществлять доступ к данным как с использованием традиционного record-ориентированного (навигационного) подхода, так и с использованием set-ориентированного подхода, используемого в SQL-серверах баз данных. Кроме BDE, Delphi позволяет осуществлять доступ к базам данных, используя технологию Open DataBase Connectivity (ODBC) фирмы Microsoft.

    Все инструментальные средства баз данных Borland - Paradox, dBase,
    Database Desktop - используют BDE. Все особенности, имеющиеся в Paradox или dBase, «наследуются» BDE, и поэтому этими же особенностями обладает и Delphi.

    Одним из преимуществ Delphi является то, что он поддерживает все SQL-БД, доступ к которым осуществляется через Borland Database Engine, ADO или драйверы InterBase. Через Borland SQL Links BDE так же возможен доступ к Oracle, Sybase, Informix, MS SQL Server, DB2 и InterBase.
    2.1.4 Технология ADO

    Для применения технологии ADO в Delphi 7 предназначены семь компонентов, расположенных на закладке ADO палитры компонентов.


    рис. 3 Компоненты страницы ADO


    Название

    Описание

    ADOConnection

    Функционально аналогичен компоненту Database закладки BDE. Позволяет указывать местоположение базы данных и работать с транзакциями

    ADOCommand

    Предназначен для выполнения SQL–команды без возврата результирующего набора данных

    ADODataset

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

    ADOTable

    Аналог компонента Table, расположенного на закладке BDE. Используется для доступа к таблице с помощью механизма ADO

    ADOQuery

    Аналог Query. Позволяет формировать запросы к БД, которые возвращают данные из базы (например, командой SELECT) или не формируют результирующего набора данных (например, INSERT)

    ADOStoredProc

    Предназначен для вызова процедуры, хранимой на сервере базы данных. Является потомком TDataSet, в отличие от BDE и InterBase позволяет возвращать набор данных, поэтому может выступать источником данных в компонентах типа DataSource

    RDSConnection

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


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



    рис. 4 Окно доступа к БД

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



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




    рис. 6 Меню программы
    На вкладке товары иформация о товарах предоставлена в виде форм.

    На вкладке “Продажи” информация о продажах представлена в виде таблицы.



    рис. 7 Вкладка Продажи

    2.3 Разработка запросов

    Поиск товара по ID

    На вкладке товары находится панель поиска товара по коду.



    В базе данных каждый тип товара имеет свой префикс в коде товара:

    1xxx – процессоры

    2xxx – видеокарты

    3xxx – материнские платы

    4xxx – оперативная память В зависимости от введённого кода, выполняется поиск по определённой таблице с товарами(см. Приложение 1, procedure TForm1.Button5Click).



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

    Результат работы запроса:


    Занесение данных о покупке в таблицу Продажи

    На вкладке Продажи правая часть – это панель занесения данных в таблицу Продажи.


    Нужно ввести всего лишь код товара и количество. Остальное программа выполнит за вас (см. Приложение 1, procedure TForm1. Timer1Timer).

    Просто нажмите кнопку “Готово” (см. Приложение 1, procedure TForm1.Button17Click).

    На данный момент в можно добавлять до 4 записей в таблицу продажи одновременно.

    Результат работы запроса:




    2.3.3 Подбор комплектующих

    При нажатии на пункт меню “Подбор комплектующих” открывается одноимённая форма:



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

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




    Ознакомиться с работой запроса можно в листинге Unit3.

    ЗАКЛЮЧЕНИЕ
    С помощью спроектированной СУБД можно наглядно демонстрировать информацию о товарах, производить поиск по товарам, осуществлять ввод информации о новых товарах.

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

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

    На основе достигнутых результатов можно сформулировать рекомендации по улучшению программы:

    Использование web-технологий для доступа к данных через Интернет.

    Разработка новых таблиц базы данных для других типов комплектующих

    Добавление информации о поставщиках, поставках, сотрудниках

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

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

    СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
    Фёдоров А.Г. Создание Windows–приложений в среде Delphi. – М.: ТОО «Компьютер Пресс», 1995. – 287с.

    Хоменко А.Д. Delphi 7. – СПб.: БХВ–Петербург, 2003. – 1216с.

    Хоменко А.Д. Основы современных компьютерных технологий. – М.: ТОО «Компьютер Пресс», 2000г. – 467с.

    http://www.site-do.ru/db/db.php Уроки SQL и базы данных.

    http://www.snkey.net/books/delphi/ch4-6.html - создание запросов в Delphi.+2 методички, гост СТО

    ПРИЛОЖЕНИЯ


    Листинг основных процедур Unit1

    procedure TForm1.Button5Click(Sender: TObject);

    var code : Integer;

    begin

    code:=StrToInt(Edit1.Text);

    if ((code>1000) and (code<5000)) then

    begin

    Button6.Click;

    DBNavigator1.Visible:=False;

    Button6.Visible:=True;

    ADOQuery1.Close;

    ADOQuery1.SQL.Clear;

    if ((code>1000) and (code<2000)) then

    begin

    TabSheet3.Show; TabSheet4.TabVisible:=False; TabSheet5.TabVisible:=False; TabSheet6.TabVisible:=False;

    ADOQuery1.SQL.ADD('SELECT*FROM processors WHERE ID_proc ='+#39+IntToStr(code)+#39'');

    ADOQuery1.Open;

    DataSource1.DataSet.Close;

    DataSource1.DataSet:=ADOQuery1;

    if (DBEdit1.Text='') then Error.ShowModal;

    end;

    if ((code>2000) and (code<3000)) then

    begin

    TabSheet4.Show; TabSheet3.TabVisible:=False; TabSheet5.TabVisible:=False; TabSheet6.TabVisible:=False;

    ADOQuery1.SQL.ADD('SELECT*FROM vga WHERE ID_VGA ='+#39+IntToStr(code)+#39'');

    ADOQuery1.Open;

    DataSource2.DataSet.Close;

    DataSource2.DataSet:=ADOQuery1;

    if (DBEdit10.Text='') then Error.ShowModal;

    end;

    if ((code>3000) and (code<4000)) then

    begin

    TabSheet5.Show; TabSheet3.TabVisible:=False; TabSheet4.TabVisible:=False; TabSheet6.TabVisible:=False;

    ADOQuery1.SQL.ADD('SELECT*FROM motherboards WHERE ID_MB ='+#39+IntToStr(code)+#39'');

    ADOQuery1.Open;

    DataSource3.DataSet.Close;

    DataSource3.DataSet:=ADOQuery1;

    if (DBEdit19.Text='') then Error.ShowModal;

    end;

    if ((code>4000) and (code<5000)) then

    begin

    TabSheet6.Show; TabSheet3.TabVisible:=False; TabSheet4.TabVisible:=False; TabSheet5.TabVisible:=False;

    ADOQuery1.SQL.ADD('SELECT*FROM memory WHERE ID_DDR ='+#39+IntToStr(code)+#39'');

    ADOQuery1.Open;

    DataSource4.DataSet.Close;

    DataSource4.DataSet:=ADOQuery1;

    if (DBEdit28.Text='') then Error.ShowModal;

    end;

    end

    else Error.ShowModal;

    end;

    procedure TForm1.Timer1Timer(Sender: TObject);

    var Sum:integer;

    begin

    Sum:=0;

    Label46.Caption := DateToStr(Now);

    Label47.Caption := TimeToStr(Time);

    ///////////////////////////////////////////////////////////////////

    /////1 òîâàð

    if ((Edit2.Text>'1000') and (Edit2.Text<'5000')) then

    begin

    ADOQuery2.Close;

    ADOQuery2.SQL.Clear;

    if ((Edit2.Text>'1000') and (Edit2.Text<'2000')) then

    ADOQuery2.SQL.ADD('SELECT*FROM processors WHERE ID_proc ='+#39+Edit2.Text+#39'');

    if ((Edit2.Text>'2000') and (Edit2.Text<'3000')) then

    ADOQuery2.SQL.ADD('SELECT*FROM vga WHERE ID_VGA ='+#39+Edit2.Text+#39'');

    if ((Edit2.Text>'3000') and (Edit2.Text<'4000')) then

    ADOQuery2.SQL.ADD('SELECT*FROM motherboards WHERE ID_MB ='+#39+Edit2.Text+#39'');

    if ((Edit2.Text>'4000') and (Edit2.Text<'5000')) then

    ADOQuery2.SQL.ADD('SELECT*FROM memory WHERE ID_DDR ='+#39+Edit2.Text+#39'');

    ADOQuery2.Open;

    DataSource5.DataSet.Close;

    DataSource5.DataSet:=ADOQuery2;

    DBText1.DataSource:=DataSource5;

    DBText1.DataField:='Name';

    DBText1.DataSource.DataSet.Active:=true;

    DBText2.DataSource:=DataSource5;

    DBText2.DataField:='Price_rub';

    DBText2.DataSource.DataSet.Active:=true;

    if DBText1.Caption='' then

    begin

    DBText1.Caption:='Òîâàð íå íàéäåí!!!';

    DBText2.Caption:='';

    Label51.Visible:=False;

    Label49.Visible:=False;

    Edit3.Visible:=False;

    end

    else

    begin

    Label51.Visible:=True;

    Label49.Visible:=True;

    Edit3.Visible:=True;

    end;

    end

    else

    begin

    DBText1.Caption:='Òîâàð íå íàéäåí!!!';

    DBText2.Caption:='';

    Label51.Visible:=False;

    Label49.Visible:=False;

    Edit3.Visible:=False;

    end;

    /////////////////////////////////////////////////////////////////////////////

    if ((Edit4.Text>'1000') and (Edit4.Text<'5000')) then

    begin

    ADOQuery3.Close;

    ADOQuery3.SQL.Clear;

    if ((Edit4.Text>'1000') and (Edit4.Text<'2000')) then

    ADOQuery3.SQL.ADD('SELECT*FROM processors WHERE ID_proc ='+#39+Edit4.Text+#39'');

    if ((Edit4.Text>'2000') and (Edit4.Text<'3000')) then

    ADOQuery3.SQL.ADD('SELECT*FROM vga WHERE ID_VGA ='+#39+Edit4.Text+#39'');

    if ((Edit4.Text>'3000') and (Edit4.Text<'4000')) then

    ADOQuery3.SQL.ADD('SELECT*FROM motherboards WHERE ID_MB ='+#39+Edit4.Text+#39'');

    if ((Edit4.Text>'4000') and (Edit4.Text<'5000')) then

    ADOQuery3.SQL.ADD('SELECT*FROM memory WHERE ID_DDR ='+#39+Edit4.Text+#39'');

    ADOQuery3.Open;

    DataSource6.DataSet.Close;

    DataSource6.DataSet:=ADOQuery3;

    DBText3.DataSource:=DataSource6;

    DBText3.DataField:='Name';

    DBText3.DataSource.DataSet.Active:=true;

    DBText4.DataSource:=DataSource6;

    DBText4.DataField:='Price_rub';

    DBText4.DataSource.DataSet.Active:=true;

    if DBText3.Caption='' then

    begin

    DBText3.Caption:=

    DBText4.Caption:='';

    Label53.Visible:=False;

    Label54.Visible:=False;

    Edit5.Visible:=False;

    end

    else

    begin

    Label53.Visible:=True;

    Label54.Visible:=True;

    Edit5.Visible:=True;

    end;

    end

    else

    begin

    DBText3.Caption:=

    DBText4.Caption:='';

    Label53.Visible:=False;

    Label54.Visible:=False;

    Edit5.Visible:=False;

    end;

    ///////////////////////////////////////////////////////////////

    if ((Edit6.Text>'1000') and (Edit6.Text<'5000')) then

    begin

    ADOQuery4.Close;

    ADOQuery4.SQL.Clear;

    if ((Edit6.Text>'1000') and (Edit6.Text<'2000')) then

    ADOQuery4.SQL.ADD('SELECT*FROM processors WHERE ID_proc ='+#39+Edit6.Text+#39'');

    if ((Edit6.Text>'2000') and (Edit6.Text<'3000')) then

    ADOQuery4.SQL.ADD('SELECT*FROM vga WHERE ID_VGA ='+#39+Edit6.Text+#39'');

    if ((Edit6.Text>'3000') and (Edit6.Text<'4000')) then

    ADOQuery4.SQL.ADD('SELECT*FROM motherboards WHERE ID_MB ='+#39+Edit6.Text+#39'');

    if ((Edit6.Text>'4000') and (Edit6.Text<'5000')) then

    ADOQuery4.SQL.ADD('SELECT*FROM memory WHERE ID_DDR ='+#39+Edit6.Text+#39'');

    ADOQuery4.Open;

    DataSource7.DataSet.Close;

    DataSource7.DataSet:=ADOQuery4;

    DBText5.DataSource:=DataSource7;

    DBText5.DataField:='Name';

    DBText5.DataSource.DataSet.Active:=true;

    DBText6.DataSource:=DataSource7;

    DBText6.DataField:='Price_rub';

    DBText6.DataSource.DataSet.Active:=true;

    if DBText5.Caption='' then

    begin

    DBText5.Caption:='Òîâàð íå íàéäåí!!!';

    DBText6.Caption:='';

    Label56.Visible:=False;

    Label57.Visible:=False;

    Edit7.Visible:=False;

    end

    else

    begin

    Label56.Visible:=True;

    Label57.Visible:=True;

    Edit7.Visible:=True;

    end;

    end

    else

    begin

    DBText5.Caption:='Òîâàð íå íàéäåí!!!';

    DBText6.Caption:='';

    Label56.Visible:=False;

    Label57.Visible:=False;

    Edit7.Visible:=False;

    end;

    //////////////////////////////////////////////////////////////

    /// 4 òîâàð

    if ((Edit8.Text>'1000') and (Edit8.Text<'5000')) then

    begin

    ADOQuery5.Close;

    ADOQuery5.SQL.Clear;

    if ((Edit8.Text>'1000') and (Edit8.Text<'2000')) then

    ADOQuery5.SQL.ADD('SELECT*FROM processors WHERE ID_proc ='+#39+Edit8.Text+#39'');

    if ((Edit8.Text>'2000') and (Edit8.Text<'3000')) then

    ADOQuery5.SQL.ADD('SELECT*FROM vga WHERE ID_VGA ='+#39+Edit8.Text+#39'');

    if ((Edit8.Text>'3000') and (Edit8.Text<'4000')) then

    ADOQuery5.SQL.ADD('SELECT*FROM motherboards WHERE ID_MB ='+#39+Edit8.Text+#39'');

    if ((Edit8.Text>'4000') and (Edit8.Text<'5000')) then

    ADOQuery5.SQL.ADD('SELECT*FROM memory WHERE ID_DDR ='+#39+Edit8.Text+#39'');

    ADOQuery5.Open;

    DataSource8.DataSet.Close;

    DataSource8.DataSet:=ADOQuery5;

    DBText7.DataSource:=DataSource8;

    DBText7.DataField:='Name';

    DBText7.DataSource.DataSet.Active:=true;

    DBText8.DataSource:=DataSource8;

    DBText8.DataField:='Price_rub';

    DBText8.DataSource.DataSet.Active:=true;

    if DBText7.Caption='' then

    begin

    DBText7.Caption:='Òîâàð íå íàéäåí!!!';

    DBText8.Caption:='';

    Label59.Visible:=False;

    Label60.Visible:=False;

    Edit9.Visible:=False;

    end

    else

    begin

    Label59.Visible:=True;

    Label60.Visible:=True;

    Edit9.Visible:=True;

    end;

    end

    else

    begin

    DBText7.Caption:='Òîâàð íå íàéäåí!!!';

    DBText8.Caption:='';

    Label59.Visible:=False;

    Label60.Visible:=False;

    Edit9.Visible:=False;

    end;

    ////////////////////////////////////////////////////////////////

    if ((DBText2.Caption<>'') and (Edit3.Text<>'')) then

    Sum:=Sum+StrToInt(DBText2.Caption)*StrToInt(Edit3.Text);

    if ((DBText4.Caption<>'') and (Edit3.Text<>'')) then

    Sum:=Sum+StrToInt(DBText4.Caption)*StrToInt(Edit5.Text);

    if ((DBText6.Caption<>'') and (Edit3.Text<>'')) then

    Sum:=Sum+StrToInt(DBText6.Caption)*StrToInt(Edit7.Text);

    if ((DBText8.Caption<>'') and (Edit3.Text<>'')) then

    Sum:=Sum+StrToInt(DBText8.Caption)*StrToInt(Edit9.Text);

    Label65.Caption:=IntToStr(Sum);

    end;

    procedure TForm1.Button17Click(Sender: TObject);

    begin

    ADOQuery6.Close;

    ADOQuery6.SQL.Clear;

    ADOQuery6.SQL.Add('INSERT INTO sales (Item_ID, Item_Name, Number, Seller, Data_Time_sale, Price) VALUES');

    if (DBText2.Caption<>'') then

    ADOQuery6.SQL.Add('('+#39+Edit2.Text+#39','+#39+DBText1.Caption+#39','+#39+Edit3.Text+#39','+#39+ComboBox1.Text+#39',NOW(),'+#39+IntToStr(StrToInt(DBText2.Caption)*StrToInt(Edit3.Text))+#39')');

    if (DBText4.Caption<>'') then ADOQuery6.SQL.Add(',('+#39+Edit4.Text+#39','+#39+DBText3.Caption+#39','+#39+Edit5.Text+#39','+#39+ComboBox1.Text+#39',NOW(),'+#39+IntToStr(StrToInt(DBText4.Caption)*StrToInt(Edit5.Text))+#39')');

    if (DBText6.Caption<>'') then

    ADOQuery6.SQL.Add(',('+#39+Edit6.Text+#39','+#39+DBText5.Caption+#39','+#39+Edit7.Text+#39','+#39+ComboBox1.Text+#39',NOW(),'+#39+IntToStr(StrToInt(DBText6.Caption)*StrToInt(Edit7.Text))+#39')');

    if (DBText8.Caption<>'') then

    ADOQuery6.SQL.Add(',('+#39+Edit8.Text+#39','+#39+DBText7.Caption+#39','+#39+Edit9.Text+#39','+#39+ComboBox1.Text+#39',NOW(),'+#39+IntToStr(StrToInt(DBText8.Caption)*StrToInt(Edit9.Text))+#39')');

    ADOQuery6.SQL.Add(';');

    ADOQuery6.ExecSQL;

    Button18.Click;

    Button16.Click;

    end;

    procedure TForm1.Button18Click(Sender: TObject);

    begin

    if Panel1.Width>25 then Button8.Click;

    if Panel2.Width>25 then Button10.Click;

    if Panel3.Width>25 then Button12.Click;

    if Panel4.Width>25 then Button14.Click;

    Panel2.Visible:=False;

    Panel3.Visible:=False;

    Panel4.Visible:=False;

    Panel5.Visible:=False;

    end;

    procedure TForm1.Button16Click(Sender: TObject);

    var date1, date2:string;

    begin

    DataSource9.DataSet:=ADOTable5;

    DBGrid1.DataSource:=DataSource9;

    date1:=FormatDateTime('yyyy-mm-dd 00-00-00',DateTimePicker1.DateTime);

    date2:=FormatDateTime('yyyy-mm-dd 23-59-59',DateTimePicker2.DateTime);

    ADOQuery7.Close;

    ADOQuery7.SQL.Clear;

    ADOQuery7.SQL.Add('SELECT*FROM sales WHERE ((Data_Time_sale >='+#39+date1+#39') and (Data_Time_sale <='+#39+date2+#39'));');

    ADOQuery7.Open;

    DataSource9.DataSet.Close;

    DataSource9.DataSet:=ADOQuery7;

    DBGrid1.DataSource:=DataSource9;

    end;


    написать администратору сайта