Проектирование БД "Склад" в среде СУБД Access
Характеристика MS Access, технологии ADO, SQL. Проектирование базы данных "Склад" ER-методом с применением диаграмм ER-типа в системе управления базами данных Access. Функциональные зависимости, архитектура программно-аппаратного комплекса, код программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 20.09.2014 |
Размер файла | 3,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание
Введение
1 Теоретическая часть
1.1 MS Access
1.2 Технология ADO
1.3 Технология SQL
2 Практическая часть
2.1 Цель работы
2.2 Датологическое проектирование, диаграмма
2.3 Проектирование БД «Склад» в среде СУБД Access
2.4 Содержание работы
2.5 Функциональные зависимости
2.6 Задание
2.7 Схема решения задачи
2.8 Функциональная схема программы
3 Логика работы программы
3.1 Архитектура программно-аппаратного комплекса
3.2 Руководство пользователя
4 Код программы и его краткое описание
Заключение
Список использованной литературы
Введение
Основные идеи современной информационной технологии базируются на концепции, согласно которой данные должны быть организованы в базы данных с целью адекватного отображения изменяющегося реального мира и удовлетворения информационных потребностей пользователей. Эти базы данных создаются и функционируют под управлением специальных программных комплексов, называемых системами управления базами данных (СУБД). access база данные программа
База данных - это поименованная совокупность структурированных данных предметной области.
Учитывая интегрирование компьютерных технологий в повседневную жизнь, такие учреждения как, например, склады могут использовать компьютерные программы для хранения различных данных (информация о поставщиках, товарах, покупателях и т.д.).
Целью курсовой работы является создание программы, которая упрощает работу сотрудников склада, что приводит к экономии большого количества времени.
Задачами курсовой работы является систематизация, закрепление и расширение теоретических и практических знаний по использованию готовых и созданию собственных баз данных, применяя систему объектно-ориентированного программирования Delphi, а также развитие навыков ведения самостоятельной работы.
Предметом исследования является склад.
1 Теоретическая часть
1.1 MS Access
Приложение Microsoft Access является мощной и высокопроизводительной 32-разрядной системой управления реляционной базой данных (СУБД).
База данных - это совокупность структурированных и взаимосвязанных данных и методов, обеспечивающих добавление выборку и отображение данных.
Реляционная база данных. Практически все СУБД позволяют добавлять новые данные в таблицы. С этой точки зрения СУБД не отличаются от программ электронных таблиц (Excel) ,которые могут эмулировать некоторые функции баз данных. Существует три принципиальных отличия между СУБД и программами электронных таблиц:
· СУБД разрабатываются с целью обеспечения эффективной обработки больших объёмов информации, больших, чем те, с которыми справляются электронные таблицы.
· СУБД может легко связывать две таблицы так, что для пользователя они будут представляться одной таблицей. Реализовать такую возможность в электронных таблицах практически невозможно.
· СУБД минимизируют общий объём базы данных. Для этого таблицы, содержащие повторяющиеся данные, разбиваются на несколько связанных таблиц.
Access - мощное приложение Windows. При этом производительность СУБД органично сочетаются со всеми удобствами и преимуществами Windows.
Как реляционная СУБД Access обеспечивает доступ ко всем типам данных и позволяет одновременно использовать несколько таблиц базы данных. Можно использовать таблицы, созданные в среде Paradox или dBase. Работая в среде Microsoft Office , пользователь получает в своё распоряжение полностью совместимые с Access текстовые документы(Word) , электронные таблицы(Excel) , презентации(PowerPoint).С помощью новых расширений для Internet можно напрямую взаимодействовать с данными из World Wide Web и транслировать представление данных на языке HTML, обеспечивая работу с такими приложениями как Internet Explorer и Netscape Navigator.
Access специально спроектирован для создания многопользовательских приложений , где файлы базы данных являются разделяемыми ресурсами в сети. В Access реализована надёжная система защиты от несанкционированного доступа к файлам.
База данных храниться в одном файле, но профессиональные пользователи предпочитают разделять базу данных на два файла: в одном хранятся объекты данных (таблицы, запросы), в другом объекты приложения (формы, отчёты, макросы, модули).
Microsoft Access -- реляционная СУБД корпорации Microsoft. Имеет широкий спектр функций, включая связанные запросы, сортировку по разным полям, связь с внешними таблицами и базами данных. Благодаря встроенному языку VBA, в самом Access можно писать приложения, работающие с базами данных.
База данных. В общем смысле - совокупность сведений о конкретных объектах реального мира в какой-либо предметной области или разделе предметной области. В терминах СУБД MS Access база данных - это набор данных и объектов, связанных общей задачей. Каждая база данных - это совокупность таблиц, запросов, форм, отчётов, макросов и модулей, которая хранится в файле с произвольным именем и расширением .MDB.
Microsoft Access объединяет сведения из разных источников в одной реляционной базе данных. Создаваемые формы, запросы и отчеты позволяют быстро и эффективно обновлять данные, получать ответы на вопросы, осуществлять поиск нужных данных, анализировать данные, печатать отчеты.
1.2 Технология ADO
Наряду с традиционными инструментами доступа к данным Borland Database Engine и ODBC в приложениях Delphi можно применять технологию Microsoft ActiveX Data Objects (ADO), которая основана на возможностях СОМ, а именно интерфейсов OLE DB.
Технология ADO завоевала популярность у разработчиков, благодаря универсальности -- базовый' набор интерфейсов OLE DB имеется в каждой современной операционной системе Microsoft. Поэтому для обеспечения доступа приложения к данным достаточно лишь правильно указать провайдер соединения ADO и затем переносить программу на любой компьютер, где имеется требуемая база данных и, конечно, установленная ADO.
1. Провайдеры ADO обеспечивают соединение приложения, использующего данные через ADO, с источником данных (сервером SQL, локальной СУБД, файловой системой и т. д.). Для каждого типа хранилища данных должен существовать провайдер ADO.
2. Провайдер "знает" о местоположении хранилища данных и его содержании, умеет обращаться к данным с запросами и интерпретировать возвращаемую служебную информацию и результаты запросов с целью их передачи приложению.
3. Список установленных в данной операционной системе провайдеров доступен для выбора при установке соединения через компонент TADOConnection.
4. При инсталляции Microsoft ActiveX Data Objects в операционной системе устанавливаются следующие стандартные провайдеры.
· Microsoft Jet OLE DB Provider обеспечивает соединение с данными СУБД Access при посредстве технологии ОАО.
· Microsoft OLE DB Provider for Microsoft Indexing Service обеспечивает доступ только для чтения к файлам и Internet-ресурсам Microsoft Indexing Service.
· Microsoft OLE DB Provider for Microsoft Active Directory Service обеспечивает доступ к ресурсам службы каталогов (Active Directory Service).
· Microsoft OLE DB Provider for Internet Publishing позволяет использовать ресурсы, предоставляемые Microsoft FrontPage, Microsoft Internet Information Server, HTTP-файлы.
· Microsoft Data Shaping Service for OLE DB позволяет использовать иерархические наборы данных.
· Microsoft OLE DB Simple Provider предназначен для организации доступа к источникам данных, поддерживающим только базисные возможности OLE DB.
· Microsoft OLE DB Provider for ODBC drivers обеспечивает доступ к данным, которые уже "прописаны" при помощи драйверов ODBC. Однако реальное использование столь экзотичных вариантов соединений представляется проблематичным. Драйверы ODBC и так славятся своей медлительностью, поэтому дополнительный слой сервисов здесь ни к чему.
· Microsoft OLE DB Provider for Oracle обеспечивает соединение с сервером Oracle.
· Microsoft OLE DB Provider for SQL Server обеспечивает соединение с сервером Microsoft SQL Server.
· Microsoft.ACE.OLEDB.12.0 обеспечивает соединение с Access 2007 и выше
В программе используется провайдер Microsoft.ACE.OLEDB.12.0, так как таблицы данных, с которыми она взаимодействует, были созданы в СУБД Access 2013.
Компоненты Delphi для работы с базами данных были созданы в расчете на работу с SQL и архитектурой клиент/сервер. При работе с ними вы можете воспользоваться характеристиками расширенной поддержки удаленных серверов. Delphi осуществляет эту поддержку двумя способами. Во-первых, непосредственные команды из Delphi позволяют разработчику управлять таблицами, устанавливать пределы, удалять, вставлять и редактировать существующие записи. Второй способ заключается в использовании запросов на языке SQL, где строка запроса передается на сервер для ее разбора, оптимизации, выполнения и передачи обратно результатов.
Delphi поддерживает статический и динамический SQL. В Delphi имеется объект TQuery, который используется для хранения и выполнения SQL-запросов.
Свойство TАDOQuery SQL содержит текст SQL-запроса, выполняемых TADOQuery.
Данное свойство имеет тип TStrings, означающее, что оно может хранить в списке целую серию строк. Список ведет себя подобно массиву, но в действительности это специальный класс с уникальными возможностями.
Компонент TADOQuery позволяет выполнять два типа SQL-запросов:
§ Статические SQL-запросы
§ Динамические SQL-запросы
Статический SQL-запрос устанавливается во время проектирования и не содержит никаких параметров или переменных. Например, следующая строка является статическим SQL-запросом:
SELECT * FROM CUSTOMER WHERE CUST_NO = 1234
Динамический SQL-запрос, или, как его еще называют, параметрический запрос, включает в себя параметры для колонок или имени таблицы. Например, следующая строка является динамическим SQL-запросом:
SELECT * FROM CUSTOMER WHERE CUST_NO = :Number
Переменная Number, указанная после двоеточия - параметр, который вы назначаете во время выполнения приложения. Во время выполнения запроса параметр может изменяться.
Компонент TADOCommand предназначен в основном для реализации SQL-запросов, не возвращающих никаких данных (DDL)
TADOCommand способен за один раз исполнять одну и только одну команду. Текст исполняемой команды хранится в свойстве CommandText. Имеет специализированный текстовый редактор, с помощью которого можно сформировать команду. В него включены целых три реализации метода Execute, два из которых как раз и предназначены для создания наборов записей. Использование возвращаемого НД возможно с помощью компонента-посредника TADODataSet. Для создания НД множество ExecuteOptions не должно содержать eoExecuteNo-Records. Базовый объект ADO Command Ему соответствуют целых четыре компонента Delphi - TADOCommand, TADOQuery TADOTable и TADOStoredProc.
2 Практическая часть
2.1 Цель работы
Закрепление и углубление знаний, полученных при изучении дисциплины “Информационное обеспечение систем управления”. Развитие навыков самостоятельной работы при проектировании реляционных баз данных и создании прикладных программ (приложений) для работы с реляционными базами данных.
2.2 Даталогическое проектирование, диаграмма
Логическая структура реляционной базы данных Access является адекватным отображением полученной информационно-логической модели предметной области. Для канонической модели не требуется дополнительных преобразований. Каждый информационный объект модели данных отображается реляционной таблицей. Структура реляционной таблицы определяется реквизитным составом соответствующего информационного объекта, где каждое поле соответствует одному из реквизитов объекта. Ключевые реквизиты объекта образуют уникальный ключ реляционной таблицы. Для каждого поля задается тип, размер данных и др. свойства. Записи таблицы соответствуют экземплярам объекта и формируются при загрузке таблицы.
Связи между объектами данных реализуются одинаковыми реквизитами - ключами связи в соответствующих таблицах. При этом ключом связи типа 1:М всегда является уникальный ключ главной таблицы.
Рис.1 Даталогическая модель
2.3 Проектирование БД «Склад» в среде СУБД Access
1. Структура таблицы «Поставщики»:
2. Структура таблицы «Приход»:
3. Структура таблицы «Подробности прихода(состав приходных накладных)»:
4. Структура таблицы «Товары»:
5. Структура таблицы «Подробности расхода(состав расходных накладных)»:
6. Структура таблицы «Расход»:
7. Структура таблицы «Покупатели»:
2.4 Содержание работы
На основании описания предметной области спроектировать базу данных ER-методом с применением диаграмм ER-типа. Разработанные в результате проектирования таблицы должны находиться в нормальной форме Бойса-Кодда.
Разработать программу для работы пользователя с базой данных. Программа должна обеспечивать
а)ввод, редактирование и удаление записей таблиц базы данных без нарушения целостности данных, хранящихся в базе данных;
б)выборку данных по заданным условиям и предъявление результатов выборки на экране в удобном для пользователя виде;
в)обработку данных по заданному алгоритму;
г)создание заданных отчетов по базе данных.
2.5 Функциональные зависимости
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
2.6 Задание
Варианты 6
Склад с движением товаров за месяц и подведением итогов за месяц, с отметкой об оплате и со списком поставщиков и покупателей.
Оптовая фирма (название фирмы, фамилия, имя, отчество директора, адрес, телефон, расчетный счет с банке, у которого есть название и адрес) получает продовольственные товары (код товара (артикул), название товара, стоимость за единицу, отпускная цена за единицу) от разных поставщиков (код поставщика, название фирмы, фамилия, имя, отчество директора, телефон, адрес, банк поставщика, расчетный счет поставщика). Каждый товар может поставляться разными поставщиками и каждый поставщик поставляет несколько видов товара. При поставке товаров фирма получает приходную накладную, в которой указаны товары (код и название), их количество, стоимость за единицу и за товар и общая стоимость по накладной. Эта накладная служит затем для оплаты товаров поставщику. При оплате делается соответствующая отметка (дата оплаты). Данные приходной накладной хранятся до конца того месяца, когда она будет оплачена. Купленные товары поступают на склад, где фиксируются в графе приход для соответствующего товара. При продаже товара оформляется расходная накладная аналогично приходной, а проданные товары заносятся в графу расход. В расходной накладной указывается название фирмы покупателя, дата оформления, номер накладной и перечень проданных товаров с указанием отпускной цены за единицу, суммы по каждому товару и общей суммы. В конце месяца подводятся итоги по складу и по оплате накладных.
По складу для каждого товара подсчитывается остаток (количество и сумма в рублях) на первое число как остаток на первое число предыдущего месяца + приход за месяц - расход за месяц. Также по каждому товару нужно видеть текущий остаток. По списку приходных накладных проверяются оплаченные накладные и удаляются из списка. Также поступают со списком расходных накладных. Это проделывают на первое число нового месяца.
Программа должна обеспечить:
Возможность ввода данных по приходным накладным (поставщик, данные товаров).
Возможность ввода данных по расходным накладным с выпуском распечатанной расходной накладной. При вводе данных в расходную накладную должно проверяться наличие товара на складе.
Занесение принятых и отпущенных товаров в склад и возможность просмотра склада в приведенной ниже форме с подсчетом сумм по остаткам, приходу и расходу.
Таблица 2
код товара |
назв. товара |
цена за ед. |
ост. начало месяца |
приход |
расход |
тек. остаток |
|||||
кол. |
стоим. |
кол. |
стоим. |
кол. |
стоим. |
кол. |
стоим. |
||||
сумма |
сумма |
сумма |
сумма |
4.Возможность занесения отметок об оплате приходных накладных с предъявлением списка всех приходных накладных по форме:
Таблица 3
код накладной |
дата поступления |
фирма поставщик |
сумма по накладной |
дата оплаты |
сумма оплаты |
|
сумма по всем накладным |
сумма всех оплат |
5.Тоже по расходным накладным.
6.Возможность оперативного предъявления суммы задолженности по каждому поставщику.
7.Такие же данные по задолженности каждого покупателя с перечнем неоплаченных накладных (номер накладной, сумма по накладной и дата отпуска товара).
Отличия вариантов приведены в таблице 1.
Таблица 1
вариант ситуация |
6 |
|
Одинаковые товары могут иметь разную приходную цену в разных накладных |
+ |
|
Приходная накладная может оплачиваться частями. В итогах за месяц по накладной показывают неоплаченный остаток |
+ |
|
В расходную накладную нельзя включать один и тот же товар, имеющий разные стоимости на складе |
+ |
|
Расходная накладная должна оплачиваться покупателем в один прием |
+ |
2.7 Схема решения задачи
Главная форма(красн.) программы имеет 4 функциональных блока(оранж.): «Операции с товарами», «Накладные», «Клиентская база», «Статистика за месяц», в каждом из которых находятся кнопки вызова форм для выполнения той или задачи.
3 Логика работы программы
3.1 Архитектура программно-аппаратного комплекса
Для корректной работы приложения необходимы следующие аппаратные и системные программные средства:
ADO
Использование ADO является альтернативой Borland Database Engine (BDE), обеспечивающей более эффективную работу с данными. Для использования этой возможности на вашем компьютере должна быть установлена система ADO 2.1 или более старшая версия. Кроме того должна быть установлена клиентская система доступа к данным, например, Microsoft SQL Server, а в ODBC должен иметься драйвер OLE DB для того типа баз данных, с которыми вы работаете.
Microsoft Office Access 2013
Microsoft Office Access 2013 является системой управления базами данных в которой можно создавать и редактировать базы данных.
Microsoft Office Access 2013 позволяет просматривать сведения о зависимостях между объектами базы данных. Просмотр списка объектов, используемых указанным объектом, помогает осуществлять поддержку базы данных и предотвращать ошибки, связанные с потерей источников записей.
3.2 Руководство пользователя
При открытии приложения появляется главное окно программы (Рис. 2)
Рис.2 Главное окно программы
Для того, чтобы начать работу с программой необходимо убедиться в том, что дата в окне программы совпадает с фактической и нажать кнопку
.
Такая организация необходима во избежание частичной или полной потери данных в связи со сбившимися настройками операционной системы или BIOS.
ь Операции с товарами->Приём
С помощью данной формы Вы можете осуществить приём товара по приходным накладным. Для этого нужно нажать по кнопке , после чего откроется форма приёма товара (Рис. 3).
Рис.3 Форма приёма товара
Для добавления накладной необходимо указать данные накладной(«Код поставщика», «Приход», «Дата прихода», «Дата оплаты»), внесённую сумму в поле «Внесено», ввести количество позиций из накладной, нажать кнопку и заполнить таблицу «Артикул/Количество». После этого нажать кнопку .
Для приведения формы в первоначальное состояния необходимо нажать кнопку .
Для закрытия формы - кнопку .
ь Операции с товарами->Продажа
Отпуск товара осуществляется по аналогии с пунктом «Приём товара» и имеет схожий интерфейс. После формирования накладной происходит создание отчёта с составом накладной и возможностью печати. Для проведения данных операций требуется нажать кнопку , после чего откроется форма отпуска товара (Рис. 4).
Рис.4 Форма отпуска товара
Для создания накладной необходимо указать данные накладной(«Код покупателя», «Оплачено», «Дата прихода», «Дата оплаты»), ввести количество позиций из накладной, нажать кнопку и заполнить таблицу «Артикул/Количество». После этого нажать кнопку . После этого необходимые данные занесутся в базу данных и создастся отчёт по текущей накладной с возможностью дальнейшей печати(Рис. 5).
Рис.5 Пример расходной накладной
В случае нехватки необходимого товара на складке программа выдаст сообщение о нехватке количества и прервёт выполнение(Рис. 6).
Рис.6 Пример сообщения, вызванного в связи с нехваткой товара
Для приведения формы в первоначальное состояния необходимо нажать кнопку .
Для закрытия формы - кнопку .
ь Операции с товарами->Наличие на складе
На данной форме отображается весь список товаров с возможностью добавления, удаления, редактирования и фильтрования по наличию(Рис. 7).
Для того, чтобы осуществлять операции над записями необходимо воспользоваться кнопками DBNavigator .
Для применения фильтра на форме расположены объекты типа RadioGroup:
Рис.7 Список товаров и их наличие
Для закрытия формы необходимо нажать кнопку .
ь Накладные->Приходные
В данном меню реализовано отображение списка приходных накладных и состав любой выбранной из них с возможностью проставления отметок о прибытии, дате прибытия, об оплате, дате оплаты и денежной сумме накладной(Рис. 8).
Для отображения списка приходных накладных необходимо кликнуть по кнопке .
Для осуществления операций над накладными необходимо выбрать накладную из списка, проставить необходимые отметки и нажать кнопку .
Так же, на данной форме реализован поиск по коду накладной. Для этого необходимо ввеси код искомой накладной в поле «Код выбранной накладной» и нажать кнопку .
Для закрытия формы необходимо нажать кнопку .
Рис.8 Форма списка приходных накладных
ь Накладные->Расходные
В данном меню, по аналогии с предыдущим, реализовано отображение списка расходных накладных и состав любой выбранной из них с возможностью проставления отметок об оплате и дате оплаты накладной, выполнена реализация печати выбранной накладной(Рис. 9).
Для отображения списка расходных накладных необходимо кликнуть по кнопке .
Для изменения отметок накладной необходимо выбрать накладную из списка, проставить необходимые отметки и нажать кнопку .
Так же, на данной форме реализован поиск по коду накладной. Для этого необходимо ввеси код искомой накладной в поле «Код выбранной накладной» и нажать кнопку .
Печать накладной осуществляется с помощью кнопки (пример на Рис.10).
Для открытия папки с сохранёнными накладными необходимо нажать кнопку
Для закрытия формы необходимо нажать кнопку .
Рис.9 Форма списка расходных накладных
Рис.10 Пример расходной накладной
ь Клиентская база->Поставщики
По нажатии на кнопку происходит отображение списка поставщиков с возможностью добавления и редактирования записей(Рис 11).
Рис.11 Поставщики
Для того, чтобы осуществлять операции над записями необходимо воспользоваться кнопками DBNavigator .
Для закрытия формы необходимо нажать кнопку .
ь Клиентская база->Покупатели
По нажатии на кнопку происходит отображение списка покупателей с возможностью добавления и редактирования записей(Рис. 12).
Рис.12 Покупатели
ь Статистика за месяц->Товарооборот
Представление статистической информации в соответствии с таблицей:
код товара |
назв. товара |
цена за ед. |
ост. начало месяца |
приход |
расход |
тек. остаток |
|||||
кол. |
стоим. |
кол. |
стоим. |
кол. |
стоим. |
кол. |
стоим. |
||||
сумма |
сумма |
сумма |
сумма |
Для отображения данной формы необходимо нажать кнопку на главной форме программы.
Рис. 13 Товарооборот
Для закрытия формы необходимо нажать кнопку .
ь Статистика за месяц->Финансы
Представление информации о задолженностях по поставщикам и покупателям(Рис.14-15).
Для отображения данной формы необходимо нажать кнопку на главной форме программы.
Для выбора типа задолженности на форме расположены вкладки: .
Перемещение по записям осуществляется с помощью взаимодействия курсора с таблицей либо кнопок DBNavigator: .
Для закрытия формы необходимо нажать кнопку .
Для выхода из программы необходимо воспользоваться кнопкой .
Рис. 14 Задолженности по поставщикам
Рис. 15 Задолженности по покупателям
4. Код программы и его краткое описание
Код проекта.
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {MainForm},
Unit2 in 'Unit2.pas' {DBComponents: TDataModule},
Unit3 in 'Unit3.pas' {Priem},
Unit4 in 'Unit4.pas' {Rashod},
Unit5 in 'Unit5.pas' {Nalichie},
Unit6 in 'Unit6.pas' {Priem_naklad},
Unit7 in 'Unit7.pas' {Rashod_naklad},
Unit8 in 'Unit8.pas' {Postavshiki},
Unit9 in 'Unit9.pas' {Pokupateli},
Unit10 in 'Unit10.pas' {Tovarooborot},
Unit11 in 'Unit11.pas' {Finansy},
Unit12 in 'Unit12.pas' {Rashod_Print};
{$R *.res}
begin
Application.Initialize;
Application.Title := 'Склад';
Application.CreateForm(TMainForm, MainForm);
Application.CreateForm(TDBComponents, DBComponents);
Application.CreateForm(TRashod_Print, Rashod_Print);
Application.Run;
end.
Главное окно программы - «MainForm»(управляющая форма).
Служит для вызова той или иной формы управления складом.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8, Unit9, Unit10, Unit11, DateUtils;
type
TMainForm = class(TForm)
GroupBox1: TGroupBox;
Button_Priem: TButton;
Button_Rashod: TButton;
Button_Nalichie: TButton;
GroupBox2: TGroupBox;
Button_Priem_Naklad: TButton;
Button_Rashod_Naklad: TButton;
Button_Close: TButton;
GroupBox3: TGroupBox;
GroupBox4: TGroupBox;
Button_Postavshiki: TButton;
Button_Pokupateli: TButton;
Button_Tovarooborot: TButton;
Button_Finansy: TButton;
Label1: TLabel;
Button5: TButton;
Label2: TLabel;
procedure Button_CloseClick(Sender: TObject);
procedure Button_PriemClick(Sender: TObject);
procedure Button_RashodClick(Sender: TObject);
procedure Button_NalichieClick(Sender: TObject);
procedure Button_Priem_NakladClick(Sender: TObject);
procedure Button_Rashod_NakladClick(Sender: TObject);
procedure Button_PostavshikiClick(Sender: TObject);
procedure Button_PokupateliClick(Sender: TObject);
procedure Button_TovarooborotClick(Sender: TObject);
procedure Button_FinansyClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
{$R *.dfm}
procedure TMainForm.Button_CloseClick(Sender: TObject);
begin
close;
end;
procedure TMainForm.Button_PriemClick(Sender: TObject);
begin
Application.CreateForm(TPriem, Priem);
Priem.Show;
end;
procedure TMainForm.Button_RashodClick(Sender: TObject);
begin
Application.CreateForm(TRashod, Rashod);
Rashod.Show;
end;
procedure TMainForm.Button_NalichieClick(Sender: TObject);
begin
Application.CreateForm(TNalichie, Nalichie);
Nalichie.Show;
end;
procedure TMainForm.Button_Priem_NakladClick(Sender: TObject);
begin
Application.CreateForm(TPriem_naklad, Priem_naklad);
Priem_naklad.Show
end;
procedure TMainForm.Button_Rashod_NakladClick(Sender: TObject);
begin
Application.CreateForm(TRashod_naklad, Rashod_naklad);
Rashod_naklad.Show;
end;
procedure TMainForm.Button_PostavshikiClick(Sender: TObject);
begin
Application.CreateForm(TPostavshiki, Postavshiki);
Postavshiki.Show;
end;
procedure TMainForm.Button_PokupateliClick(Sender: TObject);
begin
Application.CreateForm(TPokupateli, Pokupateli);
Pokupateli.Show;
end;
prcedure TMainForm.Button_TovarooborotClick(Sender: TObject);
begin
Application.CreateForm(TTovarooborot, Tovarooborot);
Tovarooborot.Show;
end;
procedure TMainForm.Button_FinansyClick(Sender: TObject);
begin
Application.CreateForm(TFinansy, Finansy);
Finansy.Show;
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
Label2.Caption:=DateToStr(Now);
end;
procedure TMainForm.Button5Click(Sender: TObject);
var
ost,i:integer;
art:string;
begin
if DayOfTheMonth(Now)=1
then
begin
DBComponents.ADOQuery_Priem.SQL.Text:='DELETE FROM Приход WHERE Оплачено=True';
DBComponents.ADOQuery_Priem.ExecSQL;
DBComponents.ADOQuery_Rashod_Naklad.SQL.Text:='SELECT [Код накладной] FROM Расход WHERE Оплачено=True';
DBComponents.ADOQuery_Rashod_Naklad.Active:=True;
i:=DBComponents.ADOQuery_Rashod_Naklad.RecNo;
DBComponents.ADOQuery_Rashod_Naklad.First;
while not(DBComponents.ADOQuery_Rashod_Naklad.Eof) do
begin
art:=DBComponents.ADOQuery_Rashod_Naklad.FieldByName('Код накладной').AsString;
DeleteFile('Накладные\Накладная_№_'+art+'.txt');
DBComponents.ADOQuery_Rashod_Naklad.Next;
end;
DBComponents.ADOQuery_Rashod_Naklad.RecNo:=i;
DBComponents.ADOQuery_Rashod.SQL.Text:='DELETE FROM Расход WHERE Оплачено=True';
DBComponents.ADOQuery_Rashod.ExecSQL;
DBComponents.ADOQuery_Tovari.SQL.Text:='SELECT Артикул,[Остаток на 1 число] FROM Товары ORDER BY Артикул';
DBComponents.ADOQuery_Tovari.Active:=True;
i:=DBComponents.ADOQuery_Tovari.RecNo;
DBComponents.ADOQuery_Tovari.First;
while not(DBComponents.ADOQuery_Tovari.Eof) do
begin
art:=DBComponents.ADOQuery_Tovari.FieldByName('Артикул').AsString;
ost:=DBComponents.ADOQuery_Tovari.FieldByName('Остаток на 1 число').AsInteger;
DBComponents.ADOQuery_Priem.SQL.Text:='SELECT SUM(Количество) AS Приход FROM [Подробности прихода] WHERE [Подробности прихода].Артикул='+art+'';
DBComponents.ADOQuery_Priem.Active:=True;
ost:=ost+DBComponents.ADOQuery_Priem.FieldByName('Приход').AsInteger;
DBComponents.ADOQuery_Priem.SQL.Text:='SELECT SUM(Количество) AS Расход FROM [Подробности расхода] WHERE [Подробности расхода].Артикул='+art+'';
DBComponents.ADOQuery_Priem.Active:=True;
ost:=ost-DBComponents.ADOQuery_Priem.FieldByName('Расход').AsInteger;
DBComponents.ADOQuery_Priem.SQL.Text:='UPDATE Товары SET [Остаток на 1 число]='+IntToStr(ost)+' WHERE Артикул='+art+'';
DBComponents.ADOQuery_Priem.ExecSQL;
DBComponents.ADOQuery_Tovari.Next;
end;
DBComponents.ADOQuery_Tovari.RecNo:=i;
end;
DBComponents.ADOQuery_Prihod_Naklad.SQL.Text:='DELETE FROM Приход WHERE Оплачено=True AND [Дата оплаты]<dateadd("m", -1, now)';
DBComponents.ADOQuery_Prihod_Naklad.ExecSQL;
DBComponents.ADOQuery_Rashod_Naklad.SQL.Text:='SELECT [Код накладной] FROM Расход WHERE Оплачено=True AND [Дата оплаты]<dateadd("m", -1, now)';
DBComponents.ADOQuery_Rashod_Naklad.Active:=True;
i:=DBComponents.ADOQuery_Rashod_Naklad.RecNo;
DBComponents.ADOQuery_Rashod_Naklad.First;
while not(DBComponents.ADOQuery_Rashod_Naklad.Eof) do
begin
art:=DBComponents.ADOQuery_Rashod_Naklad.FieldByName('Код накладной').AsString;
DeleteFile('Накладные\Накладная_№_'+art+'.txt');
DBComponents.ADOQuery_Rashod_Naklad.Next;
end;
DBComponents.ADOQuery_Rashod_Naklad.RecNo:=i;
DBComponents.ADOQuery_Rashod_Naklad.SQL.Text:='DELETE FROM Расход WHERE Оплачено=True AND [Дата оплаты]<dateadd("m", -1, now)';
DBComponents.ADOQuery_Rashod_Naklad.ExecSQL;
Button_Priem.Enabled:=True;
Button_Rashod.Enabled:=True;
Button_Nalichie.Enabled:=True;
Button_Priem_Naklad.Enabled:=True;
Button_Rashod_Naklad.Enabled:=True;
Button_Postavshiki.Enabled:=True;
Button_Pokupateli.Enabled:=True;
Button_Tovarooborot.Enabled:=True;
Button_Finansy.Enabled:=True;
end;
end.
Модуль данных программы - «DBComponents».
Содержит XPMan, а так же ADOConnection, DataSource, ADOQuery, соответствующие каждой функции программы.
unit Unit2;
interface
uses
SysUtils, Classes, XPMan, DB, ADODB;
type
TDBComponents = class(TDataModule)
ADOConnection1: TADOConnection;
ADOQuery_Priem: TADOQuery;
DataSource_Priem: TDataSource;
XPManifest1: TXPManifest;
ADOQuery_Rashod: TADOQuery;
DataSource_Rashod: TDataSource;
ADOQuery_Prihod_Naklad: TADOQuery;
DataSource_Prihod_Naklad: TDataSource;
ADOQuery_Rashod_Naklad: TADOQuery;
DataSource_Rashod_Naklad: TDataSource;
ADOQuery_Tovari: TADOQuery;
DataSource_Tovari: TDataSource;
ADOQuery_Prihod_Details: TADOQuery;
DataSource_Prihod_Details: TDataSource;
ADOQuery_Rashod_Details: TADOQuery;
DataSource_Rashod_Details: TDataSource;
ADOQuery_Postavshiki: TADOQuery;
DataSource_Postavshiki: TDataSource;
ADOQuery_Pokupateli: TADOQuery;
DataSource_Pokupateli: TDataSource;
ADOQuery_Tovarooborot: TADOQuery;
DataSource_Tovarooborot: TDataSource;
ADOQuery_Finansy_Pokup_1: TADOQuery;
DataSource_Finansy_Pokup_1: TDataSource;
ADOQuery_Print_1: TADOQuery;
DataSource_Print_1: TDataSource;
ADOQuery_Print_2: TADOQuery;
DataSource_Print_2: TDataSource;
ADOQuery_Finansy_Post: TADOQuery;
DataSource_Finansy_Post: TDataSource;
ADOQuery_Finansy_Pokup_2: TADOQuery;
DataSource_Finansy_Pokup_2: TDataSource;
private
{ Private declarations }
public
{ Public declarations }
end;
var
DBComponents: TDBComponents;
implementation
{$R *.dfm}
end.
Окно приёма товара - «Priem».
В этой форме реализована возможность приёма товара по приходным накладным.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls, DBCtrls, Grids, DBGrids,
Mask, Unit2;
type
TPriem = class(TForm)
GroupBox1: TGroupBox;
Edit1: TEdit;
CheckBox1: TCheckBox;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
GroupBox2: TGroupBox;
Button2: TButton;
StringGrid1: TStringGrid;
Label9: TLabel;
Edit4: TEdit;
Button1: TButton;
Button3: TButton;
Label10: TLabel;
Button4: TButton;
Edit3: TEdit;
Label11: TLabel;
Edit5: TEdit;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Priem: TPriem;
n:integer;
implementation
{$R *.dfm}
procedure TPriem.Button2Click(Sender: TObject);
begin
close;
end;
procedure TPriem.Button3Click(Sender: TObject);
var
i,cost,summ,razn,vznos:integer;
kod,cost_1,kol:string;
begin
summ:=0;
DBComponents.ADOQuery_Priem.SQL.Text:='INSERT INTO Приход([Код поставщика],Приход,[Дата прихода],Внесено) VALUES ('+Edit1.Text+','+BoolToStr(CheckBox1.Checked)+',"'+DateToStr(DateTimePicker1.Date)+'",'+Edit2.Text+')';
DBComponents.ADOQuery_Priem.ExecSQL;
DBComponents.ADOQuery_Priem.SQL.Text:='SELECT max([Код накладной]) FROM Приход';
DBComponents.ADOQuery_Priem.Active:=True;
kod:=DBComponents.ADOQuery_Priem.Fields[0].AsString;
Edit3.Text:=kod;
Edit3.Enabled:=True;
for i:=1 to n do
begin
DBComponents.ADOQuery_Priem.SQL.Text:='SELECT [Цена покупки] FROM Товары WHERE Товары.Артикул='+StringGrid1.Cells[1,i]+'';
DBComponents.ADOQuery_Priem.Active:=True;
cost_1:=DBComponents.ADOQuery_Priem.Fields[0].AsString;
cost:=StrToInt(cost_1)*StrToInt(StringGrid1.Cells[2,i]);
DBComponents.ADOQuery_Priem.SQL.Text:='SELECT Количество FROM Товары WHERE Товары.Артикул='+StringGrid1.Cells[1,i]+'';
DBComponents.ADOQuery_Priem.Active:=True;
kol:=DBComponents.ADOQuery_Priem.Fields[0].AsString;
kol:=IntToStr(StrToInt(kol)+StrToInt(StringGrid1.Cells[2,i]));
DBComponents.ADOQuery_Priem.SQL.Clear;
DBComponents.ADOQuery_Priem.SQL.Text:='UPDATE Товары SET Количество='+kol+' WHERE Товары.Артикул='+StringGrid1.Cells[1,i]+'';
DBComponents.ADOQuery_Priem.ExecSQL;
DBComponents.ADOQuery_Priem.SQL.Text:='INSERT INTO [Подробности прихода] ([Код накладной],Артикул,Количество,[Стоимость единицы],Стоимость) VALUES ('+kod+','+StringGrid1.Cells[1,i]+','+StringGrid1.Cells[2,i]+','+cost_1+','+IntToStr(cost)+')';
DBComponents.ADOQuery_Priem.ExecSQL;
summ:=summ+cost;
end;
Edit5.Text:=IntToStr(summ);
vznos:=StrToInt(Edit2.Text);
razn:=summ-vznos;
if razn>0
then
begin
DBComponents.ADOQuery_Priem.SQL.Text:='UPDATE Приход SET Оплачено=False,Сумма='+Edit5.Text+' WHERE [Код накладной]='+kod+'';
DBComponents.ADOQuery_Priem.ExecSQL;
ShowMessage('Не хватает '+IntToStr(razn)+' рублей');
end
else
begin
DBComponents.ADOQuery_Priem.SQL.Text:='UPDATE Приход SET Оплачено=True,[Дата оплаты]="'+DateToStr(DateTimePicker2.Date)+'",Внесено='+Edit5.Text+',Сумма='+Edit5.Text+' WHERE [Код накладной]='+kod+'';
DBComponents.ADOQuery_Priem.ExecSQL;
if razn<>0 then ShowMessage('Сдача '+IntToStr(abs(razn))+' рублей');
end;
Label10.Visible:=True;
end;
procedure TPriem.Button4Click(Sender: TObject);
begin
Label10.Visible:=False;
Edit3.Enabled:=False;
Edit3.Clear;
Edit1.Clear;
Edit2.Clear;
Edit4.Clear;
StringGrid1.Enabled:=False;
StringGrid1.RowCount:=2;
CheckBox1.Checked:=False;
Button3.Enabled:=False;
StringGrid1.Cells[1,1]:='';
StringGrid1.Cells[2,1]:='';
end;
procedure TPriem.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[1,0]:=' Артикул';
StringGrid1.Cells[2,0]:=' Количество';
StringGrid1.Cells[0,1]:='1';
StringGrid1.ColWidths[0]:=30;
end;
procedure TPriem.Button1Click(Sender: TObject);
var
i:integer;
begin
if Edit4.Text='0'
then
begin
ShowMessage('Количество позиций должно быть больше 0');
Exit;
end;
Try
n:=StrtoInt(Edit4.Text);
Except
ShowMessage('Задайте верное количество позиций');
Exit;
end;
StringGrid1.RowCount:=n+1;
for i:=1 to n do
StringGrid1.Cells[0,i]:=IntToStr(i);
StringGrid1.Enabled:=True;
Button3.Enabled:=True;
end;
end.
Окно отпуска товара - «Rashod».
В этой форме, по аналогии с предыдущей, реализована возможность отпуска товара по расходным накладным, после формирования накладной происходит создание отчёта с составом накладной и возможностью печати.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, ComCtrls, Unit2, Unit12;
type
TRashod = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label4: TLabel;
Label7: TLabel;
Label8: TLabel;
Edit1: TEdit;
DateTimePicker1: TDateTimePicker;
Edit2: TEdit;
Edit3: TEdit;
GroupBox2: TGroupBox;
Label9: TLabel;
Label10: TLabel;
StringGrid1: TStringGrid;
Edit4: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Label3: TLabel;
Label13: TLabel;
Label6: TLabel;
DateTimePicker2: TDateTimePicker;
Label5: TLabel;
CheckBox1: TCheckBox;
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Rashod: TRashod;
n:integer;
implementation
{$R *.dfm}
procedure TRashod.Button2Click(Sender: TObject);
begin
close;
end;
procedure TRashod.Button3Click(Sender: TObject);
var
i,cost,summ:integer;
kod,cost_1,kol:string;
begin
summ:=0;
for i:=1 to n do
begin
DBComponents.ADOQuery_Rashod.SQL.Text:='SELECT Количество FROM Товары WHERE Товары.Артикул='+StringGrid1.Cells[1,i]+'';
DBComponents.ADOQuery_Rashod.Active:=True;
kol:=DBComponents.ADOQuery_Rashod.Fields[0].AsString;
kol:=IntToStr(StrToInt(kol)-StrToInt(StringGrid1.Cells[2,i]));
if StrToInt(kol)<0
then
begin
ShowMessage('Не хватает '+IntToStr(Abs(StrToInt(kol)))+' позиций на складе с артикулом '+StringGrid1.Cells[1,i]+'');
Exit;
end;
end;
DBComponents.ADOQuery_Rashod.SQL.Text:='INSERT INTO Расход([Код покупателя],[Дата отпуска]) VALUES ('+Edit1.Text+',"'+DateToStr(DateTimePicker1.Date)+'")';
DBComponents.ADOQuery_Rashod.ExecSQL;
DBComponents.ADOQuery_Rashod.SQL.Text:='SELECT max([Код накладной]) FROM Расход';
DBComponents.ADOQuery_Rashod.Active:=True;
kod:=DBComponents.ADOQuery_Rashod.Fields[0].AsString;
Edit3.Text:=kod;
Edit3.Enabled:=True;
for i:=1 to n do
begin
DBComponents.ADOQuery_Rashod.SQL.Text:='SELECT [Цена продажи] FROM Товары WHERE Товары.Артикул='+StringGrid1.Cells[1,i]+'';
DBComponents.ADOQuery_Rashod.Active:=True;
cost_1:=DBComponents.ADOQuery_Rashod.Fields[0].AsString;
cost:=StrToInt(cost_1)*StrToInt(StringGrid1.Cells[2,i]);
DBComponents.ADOQuery_Rashod.SQL.Text:='SELECT Количество FROM Товары WHERE Товары.Артикул='+StringGrid1.Cells[1,i]+'';
DBComponents.ADOQuery_Rashod.Active:=True;
kol:=DBComponents.ADOQuery_Rashod.Fields[0].AsString;
kol:=IntToStr(StrToInt(kol)-StrToInt(StringGrid1.Cells[2,i]));
DBComponents.ADOQuery_Rashod.SQL.Clear;
DBComponents.ADOQuery_Rashod.SQL.Text:='UPDATE Товары SET Количество='+kol+' WHERE Товары.Артикул='+StringGrid1.Cells[1,i]+'';
DBComponents.ADOQuery_Rashod.ExecSQL;
DBComponents.ADOQuery_Rashod.SQL.Text:='INSERT INTO [Подробности расхода] ([Код накладной],Артикул,Количество,[Стоимость единицы],Стоимость) VALUES ('+kod+','+StringGrid1.Cells[1,i]+','+StringGrid1.Cells[2,i]+','+cost_1+','+IntToStr(cost)+')';
DBComponents.ADOQuery_Rashod.ExecSQL;
summ:=summ+cost;
end;
Edit2.Text:=IntToStr(summ);
DBComponents.ADOQuery_Priem.SQL.Text:='UPDATE Расход SET Сумма='+Edit2.Text+' WHERE [Код накладной]='+kod+'';
DBComponents.ADOQuery_Priem.ExecSQL;
if Checkbox1.Checked=True
then
begin
DBComponents.ADOQuery_Priem.SQL.Text:='UPDATE Расход SET Оплачено=True,[Дата оплаты]="'+DateToStr(DateTimePicker1.Date)+'" WHERE [Код накладной]='+kod+'';
DBComponents.ADOQuery_Priem.ExecSQL;
end;
Label10.Visible:=True;
DBComponents.ADOQuery_Print_2.SQL.Text:='SELECT Расход.[Код покупателя],[Название фирмы],Фамилия,Имя,Отчество,Телефон,Адрес,[Банк покупателя],[Расчётный счёт] FROM Расход,Покупатели WHERE Расход.[Код накладной]='+kod+' AND Расход.[Код покупателя]=Покупатели.[Код покупателя]';
DBComponents.ADOQuery_Print_2.Active:=True;
DBComponents.ADOQuery_Print_1.SQL.Text:='SELECT [Код накладной],Товары.Артикул,Название,[Подробности расхода].Количество,[Стоимость единицы],Стоимость FROM [Подробности расхода],Товары WHERE [Код накладной]='+kod+' AND Товары.Артикул=[Подробности расхода].Артикул';
DBComponents.ADOQuery_Print_1.Active:=True;
Rashod_Print.QuickRep1.ExportToFilter(TQRAsciiExportFilter.Create('Накладные\Накладная_№_'+Edit3.Text+'.txt'));
Rashod_Print.QuickRep1.Preview;
end;
procedure TRashod.Button4Click(Sender: TObject);
begin
Label10.Visible:=False;
Edit3.Enabled:=False;
Edit3.Clear;
Edit1.Clear;
Edit2.Clear;
Edit4.Clear;
StringGrid1.Enabled:=False;
StringGrid1.RowCount:=2;
Button3.Enabled:=False;
StringGrid1.Cells[1,1]:='';
StringGrid1.Cells[2,1]:='';
end;
procedure TRashod.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[1,0]:=' Артикул';
StringGrid1.Cells[2,0]:=' Количество';
StringGrid1.Cells[0,1]:='1';
StringGrid1.ColWidths[0]:=30;
end;
procedure TRashod.Button1Click(Sender: TObject);
var
i:integer;
begin
if Edit4.Text='0'
then
begin
ShowMessage('Количество позиций должно быть больше 0');
Exit;
end;
Try
n:=StrtoInt(Edit4.Text);
Except
ShowMessage('Задайте верное количество позиций');
Exit;
end;
StringGrid1.RowCount:=n+1;
for i:=1 to n do
StringGrid1.Cells[0,i]:=IntToStr(i);
StringGrid1.Enabled:=True;
Button3.Enabled:=True;
end;
end.
Наличие на складе - «Nalichie».
На данной форме отображается весь список товаров с возможностью добавления, удаления, редактирования и фильтрования по наличию.
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, Unit2, StdCtrls, ExtCtrls, DBCtrls;
type
TNalichie = class(TForm)
DBGrid1: TDBGrid;
Button1: TButton;
DBNavigator1: TDBNavigator;
RadioGroup1: TRadioGroup;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Nalichie: TNalichie;
implementation
{$R *.dfm}
procedure TNalichie.FormCreate(Sender: TObject);
begin
DBComponents.ADOQuery_Tovari.SQL.Text:='SELECT * FROM Товары ORDER BY Артикул';
DBComponents.ADOQuery_Tovari.Active:=True;
end;
procedure TNalichie.Button1Click(Sender: TObject);
begin
close;
end;
procedure TNalichie.RadioGroup1Click(Sender: TObject);
begin
case RadioGroup1.ItemIndex of
0:begin
DBComponents.ADOQuery_Tovari.SQL.Text:='SELECT * FROM Товары ORDER BY Артикул';
DBComponents.ADOQuery_Tovari.Active:=True;
end;
1:begin
DBComponents.ADOQuery_Tovari.SQL.Text:='SELECT * FROM Товары WHERE Количество>0 ORDER BY Артикул';
DBComponents.ADOQuery_Tovari.Active:=True;
end;
2:begin
DBComponents.ADOQuery_Tovari.SQL.Text:='SELECT * FROM Товары WHERE Количество<=0 ORDER BY Артикул';
DBComponents.ADOQuery_Tovari.Active:=True;
end;
end;
end;
end.
Список приходных накладных - «Priem_naklad».
В данном меню реализовано отображение списка приходных накладных и состав любой выбранной из них с возможностью проставления отметок о прибытии, дате прибытия, об оплате, дате оплаты и денежной суммы накладной.
unit Unit6;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids, Unit2, ComCtrls;
type
TPriem_naklad = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
DBGrid2: TDBGrid;
DBNavigator2: TDBNavigator;
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
Button2: TButton;
Label2: TLabel;
Label3: TLabel;
Edit2: TEdit;
Edit3: TEdit;
Label4: TLabel;
Label5: TLabel;
GroupBox3: TGroupBox;
Label6: TLabel;
Edit4: TEdit;
Label7: TLabel;
Edit5: TEdit;
CheckBox1: TCheckBox;
Button3: TButton;
CheckBox2: TCheckBox;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
procedure Button2Click(Sender: TObject);
procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
procedure CheckBox2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Priem_naklad: TPriem_naklad;
kod_naklad,summ,vneseno,summ_pos,vneseno_pos,prihod,oplacheno:string;
implementation
{$R *.dfm}
procedure TPriem_naklad.Button1Click(Sender: TObject);
begin
close;
end;
procedure TPriem_naklad.FormCreate(Sender: TObject);
begin
DBComponents.ADOQuery_Prihod_Naklad.SQL.Text:='SELECT SUM(Внесено),SUM(Сумма) FROM Приход';
DBComponents.ADOQuery_Prihod_Naklad.Active:=True;
vneseno:=DBComponents.ADOQuery_Prihod_Naklad.Fields[0].AsString;
summ:=DBComponents.ADOQuery_Prihod_Naklad.Fields[1].AsString;
Edit2.Text:=vneseno;
Edit3.Text:=summ;
DBComponents.ADOQuery_Prihod_Naklad.SQL.Text:='SELECT [Код накладной],Поставщики.[Название фирмы],Приход.[Код поставщика],Приход,[Дата прихода],Оплачено,[Дата оплаты],Внесено,Сумма FROM Приход,Поставщики WHERE Приход.[Код поставщика]=Поставщики.[Код поставщика]';
DBComponents.ADOQuery_Prihod_Naklad.Active:=True;
kod_naklad:=DBGrid1.DataSource.DataSet.FieldValues['Код накладной'];
vneseno_pos:=DBGrid1.DataSource.DataSet.FieldValues['Внесено'];
summ_pos:=DBGrid1.DataSource.DataSet.FieldValues['Сумма'];
prihod:=DBGrid1.DataSource.DataSet.FieldValues['Приход'];
oplacheno:=DBGrid1.DataSource.DataSet.FieldValues['Оплачено'];
Edit1.Text:=kod_naklad;
Edit4.Text:=vneseno_pos;
Edit5.Text:=summ_pos;
if StrToBool(oplacheno)=True
then
begin
Edit4.ReadOnly:=True;
Edit4.Color:=clScrollBar;
CheckBox2.Checked:=True;
end
else
begin
Edit4.ReadOnly:=False;
Edit4.Color:=clWindow;
CheckBox2.Checked:=False;
end;
CheckBox1.Checked:=StrToBool(prihod);
CheckBox2.Checked:=StrToBool(oplacheno);
DBComponents.ADOQuery_Prihod_Details.SQL.Text:='SELECT Товары.Артикул,Товары.Название,[Подробности прихода].Количество,[Подробности прихода].[Стоимость единицы],[Подробности прихода].Стоимость FROM Товары,[Подробности прихода] WHERE [Код накладной]='+kod_naklad+' AND Товары.Артикул=[Подробности прихода].Артикул ORDER BY Товары.Артикул';
DBComponents.ADOQuery_Prihod_Details.Active:=True;
end;
procedure TPriem_naklad.DBGrid1CellClick(Column: TColumn);
begin
kod_naklad:=DBGrid1.DataSource.DataSet.FieldValues['Код накладной'];
vneseno_pos:=DBGrid1.DataSource.DataSet.FieldValues['Внесено'];
summ_pos:=DBGrid1.DataSource.DataSet.FieldValues['Сумма'];
prihod:=DBGrid1.DataSource.DataSet.FieldValues['Приход'];
oplacheno:=DBGrid1.DataSource.DataSet.FieldValues['Оплачено'];
Edit1.Text:=kod_naklad;
Edit4.Text:=vneseno_pos;
Edit5.Text:=summ_pos;
if StrToBool(oplacheno)=True
then
begin
Edit4.ReadOnly:=True;
Edit4.Color:=clScrollBar;
CheckBox2.Checked:=True;
end
else
begin
Edit4.ReadOnly:=False;
Edit4.Color:=clWindow;
CheckBox2.Checked:=False;
end;
CheckBox1.Checked:=StrToBool(prihod);
DBComponents.ADOQuery_Prihod_Details.SQL.Text:='SELECT Товары.Артикул,Товары.Название,[Подробности прихода].Количество,[Подробности прихода].[Стоимость единицы],[Подробности прихода].Стоимость FROM Товары,[Подробности прихода] WHERE [Код накладной]='+kod_naklad+' AND Товары.Артикул=[Подробности прихода].Артикул ORDER BY Товары.Артикул';
DBComponents.ADOQuery_Prihod_Details.Active:=True;
end;
procedure TPriem_naklad.Button2Click(Sender: TObject);
begin
kod_naklad:=Edit1.Text;
DBGrid1.DataSource.DataSet.RecNo:=StrToInt(kod_naklad);
DBComponents.ADOQuery_Prihod_Details.SQL.Text:='SELECT Товары.Артикул,Товары.Название,[Подробности прихода].Количество,[Подробности прихода].[Стоимость единицы],[Подробности прихода].Стоимость FROM Товары,[Подробности прихода] WHERE [Код накладной]='+kod_naklad+' AND Товары.Артикул=[Подробности прихода].Артикул ORDER BY Товары.Артикул';
DBComponents.ADOQuery_Prihod_Details.Active:=True;
end;
procedure TPriem_naklad.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
begin
DBGrid1CellClick(nil);
end;
procedure TPriem_naklad.CheckBox2Click(Sender: TObject);
begin
if CheckBox2.Checked=True
then
begin
Edit4.ReadOnly:=True;
Edit4.Color:=clScrollBar;
end
else
begin
Edit4.ReadOnly:=False;
Edit4.Color:=clWindow;
end;
end;
procedure TPriem_naklad.Button3Click(Sender: TObject);
var
date_prihod:string;
begin
date_prihod:='';
if CheckBox1.Checked=True
then
date_prihod:=',[Дата прихода]="'+DateToStr(DateTimePicker1.Date)+'"';
if (CheckBox2.Checked=True) OR (StrToInt(Edit4.Text)=StrToInt(Edit5.Text))
then
begin
DBComponents.ADOQuery_Priem.SQL.Text:='UPDATE Приход SET Приход='+BoolToStr(CheckBox1.Checked)+''+date_prihod+',Оплачено=True,[Дата оплаты]="'+DateToStr(DateTimePicker2.Date)+'",Внесено=Сумма WHERE [Код накладной]='+kod_naklad+'';
DBComponents.ADOQuery_Priem.ExecSQL;
end
else
begin
DBComponents.ADOQuery_Priem.SQL.Text:='UPDATE Приход SET Приход='+BoolToStr(CheckBox1.Checked)+''+date_prihod+',Оплачено=False,Внесено='+Edit4.Text+' WHERE [Код накладной]='+kod_naklad+'';
...Подобные документы
Краткая характеристика и функциональные возможности MS Access. Базы данных и системы управления базами данных. Проектирование в теории и создание на практике базы данных в продукте корпорации Microsoft для управления базами данных "Microsoft Access".
курсовая работа [1,6 M], добавлен 07.03.2015Системы управления базами данных: сущность и характеристика. Типы данных и свойства полей СУБД Access. Объекты базы данных: таблицы, схемы данных, формы, запросы, отчеты. Разработка и проектирование базы данных "Продажи книг" в среде Microsoft Access.
курсовая работа [1,8 M], добавлен 04.02.2013Виды связей между объектами в системе управления базами данных MS Access. Ввод и редактирование данных в таблицах, обработка информации базы данных. Архитектура БД по принципу файл-сервер. Создания формы в окне базы данных, использование отчетов.
презентация [511,9 K], добавлен 20.01.2014Изучение основных понятий баз данных: структура простейшей базы данных, компоненты базы данных Microsoft Access. Проектирование базы данных "Туристическое агентство" в СУБД Access 2010, в которой хранятся данные о клиентах, которые хотят поехать отдыхать.
курсовая работа [3,3 M], добавлен 20.09.2013Создание базы данных в среде MS Access. Создание и работа с базой данных в ателье. Алгоритм решения задачи. Выбор пакета прикладных программ. Проектирование форм выходных документов с использованием СУБД MS Access. Структура записи таблиц базы данных.
курсовая работа [1,6 M], добавлен 30.01.2009Microsoft Access как система управления базами данных (СУБД), ее предназначение. Организованная структура для хранения данных. Типы данных при работе с Microsoft Access 2003 и Microsoft Access 2007. Проектирование баз данных и построение ER-диаграммы.
контрольная работа [16,3 K], добавлен 10.10.2010Проектирование базы данных Access. Система управления базами данных. Создание и обслуживание базы данных, обеспечение доступа к данным и их обработка. Постановка задач и целей, основных функций, выполняемых базой данных. Основные виды баз данных.
лабораторная работа [14,4 K], добавлен 16.11.2008Понятие и сущность базы данных, их классификация и характеристика. Системы управления базами данных. СУБД структуры "сервер-клиент", его суть. Microsoft Access - функционально полная реляционная СУБД. Предназначение СУБД Access, и описание ее работы.
реферат [44,3 K], добавлен 27.02.2009Краткая характеристика, главные преимущества и область применения MS Access. Базы данных и системы управления базами данных. Описание пошагового создания базы данных, таблиц, форм, запроса и отчета. Особенности и функциональные возможности MS Access.
курсовая работа [3,4 M], добавлен 23.09.2010Проектирование базы данных "Магазин автомобилей" в среде СУБД Microsoft Office Access. Схема решения задачи. Архитектура программно-аппаратного комплекса. Логика работы программы. Минимальные системные требования, разработка руководства пользователя.
курсовая работа [2,1 M], добавлен 07.10.2015Проектирование базы данных с использованием комплекса программных и языковых средств Microsoft Access. Модель данных, доступ к ним. Назначение, основные возможности и версии Access. Запуск программы; окно базы данных, формы для их ввода и редактирования.
курсовая работа [1,1 M], добавлен 30.12.2014Основные этапы проектирования базы данных. Access как система управления базами данных (СУБД), ее предназначение, отличительные возможности. Работа с таблицами, их создание и редактирование. Порядок создания запросов. Способы защиты баз данных.
лабораторная работа [3,1 M], добавлен 18.08.2009Хранение и обработка данных. Компоненты системы баз данных. Физическая структура данных. Создание таблиц в MS Access. Загрузка данных, запросы к базе данных. Разработка информационной системы с применением системы управления базами данных MS Access.
курсовая работа [694,0 K], добавлен 17.12.2016Анализ баз данных и систем управления ими. Проектирование и создание реляционной базы данных в среде MS Access для ресторана "Дельфин": построение информационно логической модели, разработка структур таблиц базы данных и схемы данных, создание Web-узла.
курсовая работа [3,7 M], добавлен 15.11.2010Запросы к базам данных: SQL, QBE, UDF, транзакции. Создание таблиц в системе управления базами данных MS Access, определение основных свойств полей. Проектирование базы данных "ТМЦ". Создание файла базы данных в MS Access, конструкторы и мастера.
контрольная работа [1,6 M], добавлен 15.03.2011Основные понятия, используемые в теории управления базами данных. Характеристика объектов MS Access. Построение базы данных, содержащей информацию об учебном процессе текущего семестра. Свойства полей таблицы, работа с записями, импортирование данных.
лабораторная работа [46,0 K], добавлен 23.12.2010Принципы работы с реляционными базами данных в среде Microsoft Access. Основные положения базы данных Access. Составление таблиц, запросов, отчетов, страниц и модулей. Основные структуры представления базы данных. Определение связей между таблицами.
контрольная работа [2,6 M], добавлен 03.04.2014Сущность, понятие баз данных. Краткая характеристика MS Access. Обеспечение сохраняемости объектов. Архитектура Object Data Management Group. Объектные расширения реляционных СУБД. Концептуальные особенности систем управления активными базами данных.
курсовая работа [48,1 K], добавлен 17.05.2013Виды и функции системы управления базами данных Microsoft Access. Иерархическая, сетевая, реляционная модель описания баз данных. Основные понятия таблицы базы данных. Особенности создания объектов базы данных, основные формы. Доступ к Internet в Access.
контрольная работа [19,8 K], добавлен 08.01.2011Основные возможности системы управления реляционными базами данных (СУБД) Microsoft Access. Пользовательский интерфейс MS Access 2003. Команды панели инструментов окна БД. Область возможных режимов создания объектов. Создание таблиц в базе данных.
реферат [5,5 M], добавлен 08.11.2010