Разработка приложений для баз данных. 2

Федеральное агентство  по образованию РФ

ГОУ ВПО

«Уральский государственный  горный университет»

 

 

Кафедра информатики

 

 

 

 

АИС «Билайн»

Курсовая работа по дисциплине «Разработка приложений для баз данных»

 

 

 

 

                                                                                  Преподаватель: Петров Ю.С.

                                                                                  Студент: Павлова Ю.В.

                                                                                  Группа: АСУ-08-2

 

 

 

 

 

Екатеринбург 

2011

 

 

 

 

 

 

Фамилия: Павлова

Имя: Юлия

Отчество: Валерьевна

Группа АСУ 08-2

 

Среда разработки: MS Access 2003, Turbo Delphi 6

 

 

 

 

 

                                       

Формулировка задания

    

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

Задача курсовой работы - разработка законченного программного модуля автоматизированной системы обработки информации и управления.

 

 

 

 

 

 

 

 

 

 

 

 

 

Дата выдачи задания:

Дата сдачи отчёта:

Отчёт принял: Петров Ю. С.

 

 

 

 

 

 

Содержание:

1. Описание предметной  области      4

2. Описание системы        5

    а) Реляционная  модель данных      5

    б) Таблица  атрибутов       6

3. Проектирование базы  данных      7

    а) ER-диаграмма        7

    б) Диаграмма  экземпляров       7

    в) Схема  таблиц и связей       8

    г) Проверка на НФБК       8

    д) Концептуальная  схема базы данных     9

    е) Ссылочная  целостность       9

    ж) Реализация SQL-команд      10

4) Архитектура системы       11

    а) Архитектура  СУБД       11

    б) СУБД          12

    в) Метод  связи приложения и базы данных    12

    г) Язык программирования       13

5) Разработка программы       14

    а) Разработка меню        14

    б) Разработка пункта  «Справочники»     15

    в) Разработка пункта  «Запросы»      17

    г) Разработка пункта  «Отчеты»      25

6) Список использованной литературы     29

7) Приложение «Бланк Билайн»      30

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

ОАО «ВымпелКом» входит в группу компаний «ВымпелКом Лтд», которая является одной из крупнейших в мире групп операторов и включает в себя компании, осуществляющие операции в России, Украине, Казахстане, Узбекистане, Таджикистане, Армении, Грузии, Кыргызстане, Вьетнаме, Камбодже, Лаосе, Алжире, Бангладеше, Пакистане, Бурунди, Зимбабве, Намибии, Центральноафриканской Республике, Италии и имеет косвенное участие в акционерном капитале Globalive Wireless Canada («Wind Mobile»).

«ВымпелКом» ведет операции по всему миру на территории с общим населением около 843 миллионов человек. Компания предоставляет услуги под брендами «Билайн», «Киевстар», «djuice», «Wind», «Infostrada», «Mobilink», «Leo», «Banglalink», «Telecel» и «Djezzy». 

ОАО «ВымпелКом» предлагает интегрированные услуги мобильной и фиксированной телефонии, международной и междугородной связи, передачи данных, телематических услуг связи, доступа в Интернет на базе беспроводных и проводных решений, включая технологии оптоволоконного доступа, WiFi и сети третьего поколения. Среди клиентов и партнеров «ВымпелКом» – частные лица, малые, средние и крупные предприятия, транснациональные корпорации, операторы связи. 

Услуги предоставляются под товарным знаком "Билайн". Это одна из наиболее известных торговых марок в России и странах СНГ. Начиная с 2005 года «Билайн» остается одним из лидеров в рейтинге самых дорогих российских брендов по версии авторитетной международной организации Interbrand Group. Известное исследовательское агентство «Millward Brown Optimor» включило «Билайн» в престижный список ста самых дорогих брендов мира со стоимостью 8,16 миллиарда долларов. Также бренд «Билайн» был признан одним из двенадцати самых дорогих мировых брендов на рынке телекоммуникаций в рейтинге «Brandz». 

29 февраля 2008 года «ВымпелКом» завершил сделку по приобретению 100% пакета акций компании «Голден Телеком», одного из ведущих поставщиков интегрированных телекоммуникационных услуг и широкополосного доступа в Интернет в крупнейших населенных пунктах России и других стран СНГ. В сентябре 2008 года «ВымпелКом» начал оказывать широкий спектр услуг на российском рынке корпоративных пользователей под единым брендом «Билайн бизнес». 

В октябре 2008 ОАО «ВымпелКом» приобрело 49,9 % акций «Евросеть», крупнейшего сотового ритейлера  в России и странах СНГ. 

ОАО «ВымпелКом» было первой российской компанией, включенной в листинг Нью-Йоркской фондовой биржи (NYSE), акции котировались под символом VIP . После образования в апреле 2010 года холдинговой компании «ВымпелКом Лтд.», консолидировавшей пакеты акций ОАО «ВымпелКом» и «Киевстара», символ VIP был перерегистрирован на «ВымпелКом Лтд.»

 

 

 

Описание системы

Реляционная модель данных

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

Таблица состоит из строк  и столбцов и имеет имя, уникальное внутри базы данных. Таблица отражает тип объекта реального мира (сущность), а каждая ее строка — конкретный объект. Каждый столбец таблицы — это совокупность значений конкретного атрибута объекта. Каждый столбец имеет имя, которое обычно записывается в верхней части таблицы. Оно должно быть уникальным в таблице, однако различные таблицы могут иметь столбцы с одинаковыми именами. Любая таблица должна иметь, по крайней мере, один столбец; столбцы расположены в таблице в соответствии с порядком следования их имен при ее создании. В отличие от столбцов, строки не имеют имен; порядок их следования в таблице не определен, а количество логически не ограничено.

К основным достоинствам реляционной модели относят:

1. Наличие небольшого набора абстракций, которые позволяют моделировать предметную область и допускают точные формальные определения.

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

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

Соответствие формальных реляционных терминов и их неформальных эквивалентов

1. Отношение = таблица 

2. Кортеж = строка

3. Кардинальное число = количество строк

4. Атрибут = столбец

5. Степень = Количество столбцов

6. Первичный ключ = Уникальный идентификатор

7. Домен = Совокупность допустимых значений

Фундаментальные свойства отношений

• в одном отношении нет абсолютно одинаковых кортежей;

• все кортежи в отношении не упорядочены;

• все атрибуты в отношении не упорядочены;

• все значения атрибутов атомарные.

 

 

Таблица атрибутов

Таблица

Атрибут

Описание атрибута

Клиент

ФИО

Поле содержит фамилию, имя и  отчество клиента и является первичным ключом

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

Поле содержит дату рождения клиента

Пол

Поле содержит пол клиента

Адрес

Поле содержит адрес клиента  по месту регистрации

E-mail

Поле содержит адрес электронной  почты клиента

Паспортные данные

Поле содержит серию и номер  паспорта клиента

Менеджер

ФИО

Поле содержит фамилию, имя и  отчество менеджера и является первичным ключом

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

Поле содержит дату рождения менеджера

Пол

Поле содержит пол менеджера

Адрес

Поле содержит адрес менеджера  по месту регистрации

E-mail

Поле содержит адрес электронной почты менеджера

Контактный телефон

Поле содержит номер контактного  телефона менеджера

Паспортные данные

Поле содержит серию и номер  паспорта менеджера

Телефон

№ телефона

Поле содержит закрепленный за sim-картой номер телефона и является первичным ключом

№ sim

Поле содержит номер sim-карты

Тариф

Поле содержит название тарифа, который  закреплен за данным номером телефона

Состояние счета

Поле содержит информацию о наличии  денежных средств на счете данного  номера телефона

Способ доставки счета

Поле содержит информацию о выбранном  способе доставки счета

Дата выставления счета

Поле содержит число, в которое каждый месяц будет выставляться счет

Подключение

Клиент

Поле содержит фамилию, имя и  отчество клиента и является внешним ключом

№ телефона

Поле содержит номер телефона, на который заключен договор,  и является внешним ключом

Менеджер

Поле содержит фамилию, имя и  отчество менеджера, заключившего договор, и является внешним ключом

Дата заключения договора

Поле содержит дату, в которую был заключен договор

Срок действия договора

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


 

 

 

 

 

 

 

 

Проектирование базы данных

ER-диаграмма

Связь типа М:М.

Диаграмма экземпляров

Клиент

Подключен

Телефон

Иванов Иван Иванович

Мамонтов Андрей Геннадьевич

Попова Елена Сергеевна

 

   +7(909)455-46-76

   +7(909)567-87-45

   +7(909)578-76-43

   +7(961)456-76-67

   +7(963)568-76-54


 

 

 

Схема таблиц и связей

Проверка на НФБК

Таблица

Функциональные зависимости

Ключ

Детерминанты

НФБК?

Клиент

ФИО→Дата рождения

ФИО→Пол

ФИО→Адрес

ФИО→E-mail

ФИО→Паспортные данные

ФИО

ФИО

Да

Телефон

№ телефона→№ sim

№ телефона→Тариф

№ телефона→Состояние счета

№ телефона→Способ доставки счета

№ телефона→Дата выставления счета

№ телефона

№ телефона

Да

Менеджер

ФИО→Дата рождения

ФИО→Пол

ФИО→Адрес

ФИО→E-mail

ФИО→Паспортные данные

ФИО→Контактный телефон

ФИО

ФИО

Да

Подключение

Клиент →№ телефона

Клиент →Менеджер

Клиент →Дата заключения договора

Клиент →Срок действия договора

Клиент

Клиент

Да


 

 

 

 

 

 

 

 

 

Концептуальная  схема базы данных

 

Поле

Тип

Длина

Ограничение целостности

Клиент

ФИО

Текстовый

50

Первичный ключ

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

Дата\время

   

Пол

Текстовый

1

 

Адрес

Текстовый

50

 

E-mail

Текстовый

   

Паспортные данные

Текстовый

10

Ключ-кандидат, установленного формата

Менеджер

ФИО

Текстовый

50

Первичный ключ

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

Дата\время

   

Пол

Текстовый

1

 

Адрес

Текстовый

50

 

E-mail

Текстовый

   

Контактный телефон

Текстовый

11

Установленного формата

Паспортные данные

Текстовый

10

Ключ-кандидат, установленного формата

Телефон

№ телефона

Текстовый

11

Первичный ключ, установленного формата

№ sim

Текстовый

19

Ключ-кандидат

Тариф

Текстовый

20

 

Состояние счета

Денежный

   

Способ доставки счета

Текстовый

10

 

Дата выставления счета

Числовой

 

Установленного формата

Подключение

Клиент

Текстовый

50

Внешний ключ

№ телефона

Текстовый

11

Внешний ключ, установленного формата

Менеджер

Текстовый

50

Внешний ключ

Дата заключения договора

Дата\время

   

Срок действия договора

Дата\время

   

Ссылочная целостность

Клиент – Подключение

Insert (вставка) – Cascade (каскадное добавление клиента)

Update (изменение) – Cascade (каскадное изменение данных клиента)

Delete (удаление) – Cascade (каскадное удаление клиента)

Телефон – Подключение

Insert (вставка) – Ignore (игнорирование добавления телефона)

Update (изменение) – Cascade (каскадное изменение телефона)

Delete (удаление) – Cascade (каскадное удаление телефона)

Менеджер – Подключение

Insert (вставка) – Ignore (игнорирование добавления менеджера)

Update (изменение) – Cascade (каскадное изменение данных менеджера)

Delete (удаление) – Ignore (игнорирование удаления менеджера)

 

 

 

Реализация SQL-команд

Вывести общее количество заключенных договоров, посчитав количество клиентов в таблице «Подключение».

SELECT count(Подключение.Клиент) AS [Количество договоров]

FROM Подключение;

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

SELECT Клиент.ФИО AS Клиент_ФИО,  Клиент.Адрес AS Клиент_Адрес, Клиент.[E-mail] AS [Клиент_E-mail], Менеджер.ФИО AS Менеджер_ФИО,  Менеджер.Адрес AS Менеджер_Адрес,  Менеджер.[E-mail] AS [Менеджер_E-mail], Менеджер.[Контактный телефон]

FROM Менеджер INNER JOIN (Клиент INNER JOIN Подключение ON Клиент.ФИО = Подключение.Клиент) ON Менеджер.ФИО = Подключение.Менеджер;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Архитектура системы

Архитектура СУБД

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

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

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

Функциями приложения-клиента являются:

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

Sql-сервер должен быть  загружен на момент принятия  запроса клиента.  
Функциями сервера БД являются:

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

Таким образом наиболее удобной является архитектура "клиент-сервер", которая предотвращает возникновение ряда проблем при работе с базой данных.

СУБД

Microsoft Office Access или просто Microsoft Access — реляционная СУБД корпорации Microsoft. Имеет широкий спектр функций, включая связанные запросы, связь с внешними таблицами и базами данных. Благодаря встроенному языку VBA, в самом Access можно писать приложения, работающие с базами данных.

MS Access является файл-серверной СУБД и потому применима лишь к маленьким приложениям. Отсутствует ряд механизмов, необходимых в многопользовательских БД, таких, например, как триггеры. Три́ггер (англ. trigger) — это хранимая процедура особого типа, которую пользователь не вызывает непосредственно, а исполнение которой обусловлено наступлением определенного события (действием) — по сути добавлением INSERT или удалением DELETE строки в заданной таблице, или модификации UPDATE данных в определенном столбце заданной таблицы реляционной базы данных.

Существенно расширяет возможности MS Access по написанию приложений механизм связи с различными внешними СУБД: "связанные таблицы" (связь с таблицей СУБД) и "запросы к серверу" (запрос на диалекте SQL, который "понимает" СУБД). Также MS Access позволяет строить полноценные клиент-серверные приложения на СУБД MS SQL Server. При этом имеется возможность совместить с присущей MS Access простотой инструменты для управления БД и средства разработки.

Метод связи  приложения и базы данных

ADO (от англ. ActiveX Data Objects — «объекты данных ActiveX») — интерфейс программирования приложений для доступа к данным, разработанный компанией Microsoft (MS Access, MS SQL Server) и основанный на технологии компонентов ActiveX. ADO позволяет представлять данные из разнообразных источников (реляционных баз данных, текстовых файлов и т. д.) в объектно-ориентированном виде.

Объектная модель ADO состоит из следующих  объектов высокого уровня и семейств объектов:

  • Connection (представляет подключение к удалённому источнику данных)
  • Recordset (представляет набор строк, полученный от источника данных)
  • Command (используется для выполнения команд и SQL-запросов с параметрами)
  • Record (может представлять одну запись объекта Recordset или же иерархическую структуру, состоящую из текстовых данных)
  • Stream (используется для чтения и записи потоковых данных, например, документов XML или двоичных объектов)
  • Errors (представляет ошибки)
  • Fields (представляет столбцы таблицы базы данных)
  • Parameters (представляет набор параметров SQL-инструкции)
  • Properties (представляет набор свойств объекта)

Компоненты ADO используются в языках высокого уровня, таких  как VBScript в ASP, JScript в WSH, Visual Basic, Delphi.

Язык программирования

Delphi (Де́лфи) — среда программирования, в которой используется язык программирования Object Pascal. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal. Начиная с 2007 года уже язык Delphi (производный от Object Pascal) начал жить своей самостоятельной жизнью и претерпевал различные изменения связанные с современными тенденциями (например, с развитием платформы .net) развития языков программирования: появились class helpers, перегрузки операторов и д.р.

Turbo Delphi — интегрированная среда разработки (IDE), разработанная компанией CodeGear, ориентированная в первую очередь на студентов, индивидуальных пользователей и программистов-любителей. Основана на языке программирования Delphi, который является диалектом языка Object Pascal. Основное отличие данного продукта от других продуктов CodeGear - наличие бесплатной версии Turbo Delphi Explorer.

Turbo Delphi 2006 был анонсирован 8 августа 2006 года, и стал доступен для скачивания на сайте www.turboexplorer.com 5 сентября 2006 года.

Существует две версии:

  • Turbo Delphi for Windows — для создания приложений Win32;
  • CLR — для создания машинно-независимого кода для Microsoft .NET

Каждая версия вышла  в двух редакция: свободно распространяемая Explorer edition и Professional edition, стоимостью около 400 долларов. В редакции Professional имеется возможность устанавливать дополнительные визуальные компоненты и модификации IDE, а также присутствует компилятор командной строки.

Turbo Delphi входит в серию  продуктов Delphi 2006. Новых версий среды в бесплатной редакции Explorer не выпускалось. В настоящее время Turbo Delphi Explorer не доступен для скачивания на официальном сайте, также прекращена регистрация новых пользователей, хотя поддержка ранее зарегистрированных пользователей осуществляется.

Разработка  программы

Разработка  меню

На форме «Билайн» устанавливаем компонент MainMenu, форму соединяем с модулем Unit3 используя средство Use Unit (в Файле), создаем в меню необходимые вкладки и подключаем к ним формы:

implementation

 

uses unit2,unit3,unit4,unit5,unit6,unit7, Unit8, Unit9, Unit11, Unit12;

 

{$R *.dfm}

 

 

procedure TForm1.N12Click(Sender: TObject);

begin

form11.ShowModal;

end;

 

procedure TForm1.N13Click(Sender: TObject);

begin

form12.ShowModal;

end;

 

procedure TForm1.N2Click(Sender: TObject);

begin

form2.ShowModal;

end;

 

 

procedure TForm1.N3Click(Sender: TObject);

begin

form4.ShowModal;

end;

 

procedure TForm1.N4Click(Sender: TObject);

begin

form5.ShowModal;

end;

 

procedure TForm1.N5Click(Sender: TObject);

begin

form6.ShowModal;

end;

 

procedure TForm1.N7Click(Sender: TObject);

begin

form7.ShowModal;

end;

 

procedure TForm1.N8Click(Sender: TObject);

begin

form8.ShowModal;

end;

 

procedure TForm1.N9Click(Sender: TObject);

begin

form9.ShowModal;

end;

На этом работа с настойками меню окончена, переходим к разработке форм.

Разработка  пункта «Справочники»

1-й пункт «Справочники»  главного меню содержит пункты выпадающего меню: «Клиент», «Менеджер», «Телефон», «Подключение»:

Данные формы отображают содержимое соответствующих таблиц в компоненте DBGrid и позволяют выполнять с данными в таблицах простейшие действия при помощи DBNavigator. Подключение всех форм аналогично, поэтому приведу пример на форме «Клиент».

Сначала в модуле (Unit3) выставляем компоненты ADOConnection1, ADOTable1, DataSourse1 (аналогично для оставшихся 3-х таблиц) и задаем для них следующие свойства:

ADOConnection1: свойство ConnectionString=…Build→Выбираем нужный выриант базы данных, в нашем случае MS Access и устанавливаем соединение, задав путь до базы: C:\Users\Юля\Desktop\учеба\приложения для бд\курсовая\Билайн.mdb

ADOTable1: свойство Connection= ADOConnection1, TableName=Клиент, Activ=True

DataSourse1: свойство DataSet= ADOTable1

На этом работа с формой «Клиент» окончена. При ее запуске имеем:

Аналогично имеем 3 оставшиеся формы:

Разработка  пункта «Запросы»

2-й пункт «Запросы»  главного меню содержит пункты  выпадающего меню: «Подключение», «Договор», «Счет»:

Форма «Подключение»  нужна для добавления в базу данных нового клиента, при этом происходит добавление новых строк в таблицы  «Клиент» и «Подключение» и редактирование данных о номере телефона в таблице  «Телефон».

К уже созданным ADOConnection1, ADOTable1, DataSourse1 добавляем компонент ADOCommand для 3-х таблиц, в свойстве Connection= ADOConnection1 (и так же для других компонентов) и в свойстве CommandText= SQL-запрос на добавление строки в таблицу «Клиент» insert into Клиент values(:fio, :dr, :pol, :ad, :mail, :pasp) и в таблицу «Подключение» insert into Подключение values (:kl, :tel, :men, :zak, :deist) и на редактирование трок в таблице «Телефон»: 1. update Телефон set Тариф=:tar Where [№ телефона]=:tel, 2. update Телефон set [Состояние счета]=:sost where [№ телефона]=:tel, 3. update Телефон set [Способ доставки счета]=:dost where [№ телефона]=:tel, 4. update Телефон set [Дата выставления счета]=:vyst where [№ телефона]=:tel.

В событиях формы Form7 указываем для событий OnCreate и OnActivate = FormCreate. Прописываем эту процедуру:

procedure TForm7.FormCreate(Sender: TObject);

var s:string;

    i:integer;

begin

DataModule3.ADOTable2.Open;

DataModule3.ADOTable2.First;

ComboBox1.Items.Clear;

while not  DataModule3.ADOTable2.Eof do

     begin

     s:=DataModule3.ADOTable2.FieldByName('ФИО').Text;

     ComboBox1.Items.Add(s);

     DataModule3.ADOTable2.Next;

     end;

 

DataModule3.ADOTable3.Open;

DataModule3.ADOTable3.First;

ComboBox2.Items.Clear;

while not  DataModule3.ADOTable3.Eof do

     begin

     if DataModule3.ADOTable3.FieldByName('Тариф').Value=Null then

        begin

        s:=DataModule3.ADOTable3.FieldByName('№ телефона').Text;

        ComboBox2.Items.Add(s);

        end;

     DataModule3.ADOTable3.Next;

     end;

 

ComboBox4.Items.Clear;

ComboBox4.Items.Add('sms');

ComboBox4.Items.Add('E-mail');

ComboBox4.Items.Add('Почта');

 

ComboBox5.Items.Clear;

for I := 1 to 31 do

begin

ComboBox5.Items.Add(IntToStr(i));

Разработка приложений для баз данных. 2