Среда, 22.11.2017, 01:53
Приветствую Вас Гость

Не ошибается тот, кто ничего не делает.
Но и ничего не делать - ошибка.

Эмиль Кроткий

Меню сайта
Категории раздела
Delphi [12]
Материалы, связанные с программирование на Delphi
Форма входа

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0


















Тиц
Главная » 2011 » Сентябрь » 4 » Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.
21:54
Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.
Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.


        Эта статья будет посвящена новичкам, которые хотят научиться создавать базы данных в Delphi, но не знают языка SQL запросов. Частично, можно выйти из положения используя компоненты ADOTable и фильтрацию, но не все задачи можно решить с помощью них. Как быть? Я предлагаю составлять запросы с помощью конструктора SQL запросов в  MS Access 2003 – 2007, и переносить их в компонент ADOQuery или любой другой, позволяющий работать SQL запросами. Понятно, что если вы хотите профессионально заняться программированием баз данных, то без изучения языка запросов SQL вам не обойтись, но на первых порах конструктор SQL запросов в  MS Access 2003 – 2007 может послужить вам хорошим другом.
Сейчас я попытаюсь рассказать, как работать с этим конструктором. Предполагается, что вы уже умеете создавать саму базу данных в MS Access 2003 – 2007.

Итак, приступим…



Пусть у нас имеется некая база данных bd.mdb имеющая три таблицы products, ed_izmer, storage. Скачать базу.

 

 

Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.

Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.

Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.
 
И мне необходимо составить запрос к базе на выборку всех продуктов из таблицы storage с подстановкой наименования продукта, единицы измерения, количества, цены и суммы.
Открываем базу  в MS Access 2003 – 2007, переходим на вкладку Создание->Конструктор запросов
 
Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.
 
и видим следующее окно.
 
Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.
 
В этом окне необходимо выбрать таблицы, которые будут использоваться в запросе.  В нашем случае добавляем все три таблицы и закрываем окно.
 
Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.
 
Теперь создаем связи между таблицами, делается это перетаскивание соответствующего пункта из одной таблицы на соответствующий пункт другой таблицы. В нашем случае мы перетаскиваем  поле id из ed_izmer на поле id_ed_izmer таблицы storage. Аналогично поле id из products на поле id_product таблицы storage.
 
Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.
 
Далее жмем правую кнопку мыши на полученной связи, и выбираем пункт «Параметры объединения».
 
Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.
 
 
Устанавливаем нужный вариант объединения и жмем OK. Делаем аналогичную операцию с другой связью.
 
Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.
 
Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.
 
Теперь переходим к нижней части конструктора запросов
 
Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.
 
И заполняем, как показано на рисунке
 
Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.
 
В первый столбец вводим имя таблицы -> products, поле product_name.
Во второй имя таблицы -> ed_izmer, поле ed_name.
В третий имя таблицы -> storage, поле quantity.
В четвертый имя таблицы -> storage, поле price.
В пятый столбец вводим формулу для вычисления суммы.
Формулы вводятся следующим образом: в начале идет имя поля (придумываем сами), затем двоеточие, а затем формула в виде [имя таблицы1].[имя поля]знак операции[имя таблицы2].[имя поля].

В нашем случае вводим следующую формулу:

 сумма: [storage].[quantity]*[storage].[price]

на этом запрос готов жмем на крестик и сохраняем запрос.
 
Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.
 
Жмем на созданном запросе и проверяем работоспособность.
 
Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.
 
Если все работает, переходим в режим SQL, для этого нажимаем правой кнопкой мыши на вкладке Запрос1 и выбираем Режим SQL.
 
Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.

Создание SQL запросов к базе данных созданной в MS Access 2003 – 2007 из Delphi с помощь компонента ADOQuery.
 
Копируем полученный запрос и вставляем его в поле SQL -> TStrings компонента ADOQuery в Delphi. Или используем программно:

ADOQuery.Active:=false;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('SELECT products.product_name, ed_izmer.ed_name, storage.quantity, storage.price, [storage].[quantity]*[storage].[price] AS сумма
FROM ed_izmer RIGHT JOIN (products RIGHT JOIN storage ON products.id=storage.id_product) ON ed_izmer.id=storage.id_ed_izmer;');
ADOQuery.Active:=True;


Если запрос очень длинный то его можно разбить, например, так:

ADOQuery.SQL.Add('SELECT products.product_name,'+
'  ed_izmer.ed_name, storage.quantity, storage.price,'+
' [storage].[quantity]*[storage].[price] AS сумма'+
' FROM ed_izmer RIGHT JOIN (products RIGHT JOIN storage ON products.id=storage.id_product)'+
' ON ed_izmer.id=storage.id_ed_izmer;');


Либо использовать ADOQuery.SQL.Add('части запроса') несколько раз.

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

Ну и на последок немножко о синтаксисе запроса:

Слово select в запросе означает создание выборки. Эта команда имеет вот такой синтаксис:

select [список полей] from [список таблиц и их соединения]

Поля в списке полей перечисляются через запятую.
Синтаксис описания поля такой:

[Имя таблицы].[Имя поля] AS [Имя поля в выборке]

После последнего поля из списка запятая не ставиться.


Нравится

Спасибо за внимание.

Скачать материалы к уроку можно здесь.

Автор xaramamburu. Сайт автора basicsprog.ucoz.ru.

 

 

 

Категория: Delphi | Просмотров: 37335 | Добавил: xaramamburu | Рейтинг: 4.2/5
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Календарь
«  Сентябрь 2011  »
ПнВтСрЧтПтСбВс
   1234
567891011
12131415161718
19202122232425
2627282930
Архив записей
Поиск
Наш опрос
Оцените мой сайт
Всего ответов: 532
Уголок общения



Copyright MyCorp © 2017Конструктор сайтов - uCoz