Диас курсавой. Данный магазин запрос
Скачать 353.38 Kb.
|
Содержание ВВЕДЕНИЕ.........................................................................................3 ВВЕДЕНИЕ данный магазин запрос За последние двадцать лет значительно возрос объём и оборот информации во всех сферах жизнедеятельности человека: экономической, финансовой, политической, духовной. И процесс накопления, обработки и использования знаний постоянно ускоряется. Учёные утверждают, что каждые десять лет количество информации увеличивается вдвое. В связи с этим возникает необходимость использования автоматических средств, позволяющих эффективно хранить, обрабатывать и распределять накопленные данные. Исходя из современных требований, предъявляемых к качеству работы финансового звена крупного предприятия, нельзя не отметить, что эффективная работа его всецело зависит от уровня оснащения компании информационными средствами на базе компьютерных систем. В сферах деятельности современных предприятий получили реализацию различные базы данных. Это обосновано тем, что данный раздел информационных технологий имеет значительную степень применимости в практических ситуациях и довольно просто внедряется в каждом конкретном случае. К тому же в настоящее время существует множество всевозможных реализаций баз данных (БД) и систем управления базами данных (СУБД). База данных (БД) – это специальным образом организованное хранение информационных ресурсов в виде интегрированной совокупности файлов, обеспечивающей удобное взаимодействие между ними и быстрый доступ к данным. База данных – это динамичный объект, меняющий значения при изменении состояния отражаемой предметной области (внешних условий по отношению к базе). Под предметной областью понимается часть реального мира (объектов, процессов), которая должна быть адекватно, в полном информационном объеме представлена в базе данных. Данные в базе организуются в единую целостную систему что обеспечивает более производительную работу пользователей с большими объемами данных. Система управления базами данных (СУБД) – это система, обеспечивающая поиск, хранение, корректировку данных, формирование ответов на запросы. Система обеспечивает сохранность данных, их конфиденциальность, перемещение и связь с другими программными средствами. СУБД становятся наиболее популярным средством обработки табличной информации. Они являются инструментальным средством проектирования баз данных при обработке больших объемов информации. СУБД реляционного типа являются наиболее распространенным на всех классах ЭВМ, а на ПК занимают доминирующее положение. СУБД позволяет структурировать, систематизировать и организовать данные для их компьютерного хранения и обработки. В данном курсовом проекте разработана база данных «Магазин компьютерных комплектующих». Целью курсовой работы является закрепление основ и углубление знаний в области проектирования структуры базы данных, разработке и реализации модели базы данных, а также в приобретении практических навыков проектирования реляционной базы данных. Задачи курсового проекта: получить возможность просматривать, редактировать, добавлять данные, получать результаты запросов. В качестве приложения для разработки базы данных использован язык MySQL, а в качестве разработки СУБД использован программный продукт Borland Delphi 7. Разработанная программа предназначена для работы на компьютерах с операционными системами семейства Windows. Программа не требовательна к ресурсам системы и проста в использовании, благодаря удобному пользовательскому интерфейсу. ГЛАВА I. ЭТАПЫ РАЗРАБОТКИ БАЗЫ ДАННЫХ 1.1 Описание предметной области В магазине компьютерных комплектующих, как и в любом другом магазине главное – это товары и их продажи. Поэтому базу данных можно разделить на две части: собственно сами товары (куда входит подробная информация о каждом товаре, и об его специфике) и операции с товарами (закупка, поставки, продажа, хранение на складе и т. д.). Отличие магазина компьютерных комплектующих, практически от любого другого магазина заключается в том, что каждый товар имеет собственные параметры, также товары могут быть совместимы друг с другом или нет. Поэтому в базе данных, мне хотелось бы уделить больше внимания товарам, разделив их на типы. 1.2 Концептуальная модель и ее описание Для данной предметной области можно спроецировать простую концептуальную модель, которая будет состоять из 2 объектов, связанных между собой. Объект «Товар», хранит информацию о типе товара, его параметрах, цене и т. д. Объект «ПРОДАЖИ», хранит информацию о проданных товарах, их наименовании, количестве, дате продажи, цене. Концептуальная модель транслируется затем в модель данных, совместимую с выбранной системой управления базами данных (далее СУБД). Возможно, что отраженные в концептуальной модели взаимосвязи между объектами окажутся впоследствии нереализуемыми средствами выбранной СУБД. Это потребует изменения концептуальной модели. Версия концептуальной модели, которая может быть обеспечена конкретной СУБД, называется логической моделью. 1.3 Логическая модель Логическая модель отражает логические связи между элементами данных вне зависимости от их содержания и среде хранения. Логическая модель данных может быть реляционной, иерархической или сетевой. Пользователям выделяются подмножества этой логической модели, называемые внешними моделями, отражающие их представления о предметной области. Внешняя модель соответствует представлениям, которые пользователи получают на основе логической модели, в то время как концептуальные требования отражают представления, которые пользователи первоначально желали иметь и которые легли в основу разработки концептуальной модели. Логическая модель отображается в физическую память, такую, как диск, лента или какой-либо другой носитель информации. Как видно из логической модели (см. рисунок 1.), база данных будет состоять из двух сущностей: ТОВАРЫ. Сюда заносится вся информация о товарах. Причём, сущность ТОВАРЫ разбита на 4 ‘подсущности’, которые логически связанны между собой: МАТЕРИНСКИЕ ПЛАТЫ ПРОЦЕССОРЫ ВИДЕОКАРТЫ МОДУЛИ ОПЕРАТИВНОЙ ПАМЯТИ; ПРОДАЖИ. Здесь хранится информация о когда-либо проданных товарах. 1.4 Физическая модель Физическая модель, определяющая размещение данных, методы доступа и технику индексирования, называется внутренней моделью системы. Внешние модели никак не связаны с типом физической памяти, в которой будут храниться данные, и с методами доступа к этим данным. Это положение отражает первый уровень независимости данных. С другой стороны, если концептуальная модель способна учитывать расширение требований к системе в будущем, то вносимые в нее изменения не должны оказывать влияния на существующие внешние модели. Это – второй уровень независимости данных. Построение логической модели обусловлено требованиями используемой СУБД. Все актуальные требования предметной области и адекватные им «скрытые» требования на стадии проектирования должны найти свое отражение в концептуальной модели. Конечно, нельзя предусмотреть все возможные варианты использования и изменения базы данных. Но в большинстве предметных областей такие основные данные, как объекты и их взаимосвязи, относительно стабильны. Меняются только информационные требования, то есть способы использования данных для получения информации. Степень независимости данных определяется тщательностью проектирования базы данных. Всесторонний анализ объектов предметной области и их взаимосвязей минимизирует влияние изменения требований к данным в одной программе на другие программы. 1.5 Описание таблиц Структура таблицы ПРОЦЕССОРЫ
Структура таблицы ВИДЕОКАРТЫ
Структура таблицы МАТЕРИНСКИЕ ПЛАТЫ
Структура таблицы МОДУЛИ ОПЕРАТИВНОЙ ПАМЯТИ
Структура таблицы ПРОДАЖИ
ГЛАВА 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
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; |