Консультация № 117806
10.01.2008, 15:40
0.00 руб.
0 2 2
Здравствуйте, уважаемые эксперты. Надеюсь на Вашу помощь.
Суть проблемы: имею небольшой опыт работы с Delphi, в частности с теми компонентами, которые нужно будет использовать в данной программе, поэтому вопрос такой: как лучше реализовать задуманное?
Если будут примеры, то вобще супер.

Итак, пишу программу для рассылки SMS родителям студентов. Отправка сообщения реализуется через email-sms шлюзы операторов. С этим проблем нет, сообщения отправляются.
Следущий шаг - Реализация БД телефонных номеров с ФИО и прочей информацией. Хочу сделать 2 таблицы, которые будут отображаться в окне, в одной - ФИО, тел.номер и с др. инфа, в другой - 2 столбца: номер группы и столбец со значением "+" или "-" - в какие группы отправлять сообщение. + возможность добавления и удаления групп и сообщений.
Опыта работы с БД в Delphi у меня никакого, как лучше хранить эти таблицы? ADO, BDE или еще как-то? В каких компонентах лучше выводить информацию из БД?
Может есть примеры подобных программ? интересует только реализация БД. Почему то пугает разнообразие всех этих ADO, BDE и прочего.
И еще интересно для каких технологий(ADO, BDE,..) необходимо что-то устанавливать дополнительно для их работы(драйвера, библиотеки и прочее)?

Обсуждение

Неизвестный
10.01.2008, 16:50
общий
это ответ
Здравствуйте, Benhu!
Драйверы никакие, в 99% случаев, устанавливать не надо, если используешь ADO. BDE - suxx, не используй это. Плюс на компе без установленных борландовских библиотек пахать не будет. Используем по старинке ADOTable, DataControl и DBGrid
Неизвестный
11.01.2008, 09:22
общий
это ответ
Здравствуйте, Benhu!

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

Андрей Сорокин "Delphi Разработка баз данных"

Если у Вас не получится найти её в бумажном варианте, то можно скачать в электронном, например - с www.librus.ru.

Хранить таблицы лучше при помощи какого-либо SQL-сервера, поскольку это предоставит в Ваше распоряжение богатые возможности языка SQL. В качестве бесплатных серверов могу назвать Firebird, MySQL, PostgreSQL. Мне нравится последний. С BDE, пожалуй, лучше не связываться - стареет эта технология, да и драйвер BDE поставить без Delphi - задача не тривиальная. К PostgreSQL, равно как и к MS SQL Server (этот уже довольно дорогой) я привык обращаться через ADO. В случае с MS SQL Server нужно будет скачать с сайта Microsoft драйвер MDAC (весит немного и распространяется бесплатно) - его достаточно, чтобы программа могла обращаться к серверу по сети. При помощи ADO-шных компонентов можно создать и полностью локальную базу без каких-либо SQL-серверов, но в этом случае Вы будете ощутимо ограничены в своих возможностях (например - наладить сетевую и многопользовательскую работу такой базы будет довольно трудно).

По поводу таблиц предлагаю такую структуру:

Таблица Group:
Group_Id: integer - уникальный идентификатор строки (обязательно),
GroupNumer: VarChar(16) - номер группы (можно с буквами),
SMS_Sending: VarChar(1) - ‘+‘ или ‘-‘ - в какие группы отправлять SMS,
прочие поля, если необходимо.

Таблица Students:
Student_ID: integer - уникальный идентификатор строки,
Group_Key: integer - ссылка на Group.Group_Id
FIO: VarChar(32),
Phone: VarChar(20),
прочие поля, если необходимо.

В программе Вам понадобятся следующие компоненты (для случаев с MS SQL Server, PostgreSQL и локальной базы, в других случаях скорее всего понадобятся "родные" компоненты):
ADOConnection - компонент для соединения с базой - один на всю программу;
ADOTable - набор данных (таблица);
DataSource - "клей" между наборами данных и визуальными компонентами вроде DBGrid;
DBGrid - визуальный компонент, отображающий данные из таблицы.
Если Вы хотите серьёзно заниматься базами данных, то вместо ADOTable имеет смысл использовать ADOQuery - этот компонент умеет выбирать из базы данные, удовлетворяющие каким-либо условиям (в зависимости от текущей задачи), хотя начать работу с ним будет чуть посложнее. На каждую таблицу, которую Вы хотите отображать пользователю, нужна своя связка ADOTable/ADOQuery ==> DataSource ==> DBGrid, но на все таблицы достаточно одного ADOConnection-а.

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