Вторник, 21.05.2024
Королевство Delphi
Главное меню
Статьи
Наш опрос
Как часто ви на этот сайт заходите?
Всего ответов: 159
Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Статьи » Базы данных » Разные

Delphi и базы данных

"Поисковые поля" и SQL запросы:

Начиная с этого номера, в качестве примеров я буду использовать базу данных описанную мной в статье "Язык запросов SQL" прошлого номера. Это будет удобней для понимания обоих материалов.

Ещё одно отличие от предыдущих номеров - все компоненты для работы с таблицами (TDataSource, TТable и др.) будут хранится в отдельном модуле (Data Module). Для его создания нужно щёлкнуть по "New" из меню "File" и выбрать "Data Module". На появившейся форме , можно расставлять компоненты для работы с базой данных также, как мы это делали раньше.

Теперь у нас в проекте две формы. Для того, чтобы открыть любую из них можно воспользоваться Project Manager-ом

Перейди в окно DataModule (рисунок 1). Как настроены связи я рассказывать не буду, потому что это мы уже проходили. Теперь дважды щёлкни по Table2. Что здесь нового? Ты наверно сразу не заметишь, но новое здесь есть - это "поисковое поле" (ого какое я слово выдумал). Ты можешь заметить что-то неладное, если обратишь внимание на то, что у нас два похожих поля "Country" и "Countr". Второе нас сейчас и будет интересовать.

Создание "поискового поля". Сначала я объясню, для чего оно нужно. У таблицы 2 в поле "Country" хранится ссылка на поле из таблицы "Country". Поэтому в DBGrid будет показываться индекс (я так и назвал это поле "индекс страны", это поле ты можешь сделать невидимым). Теперь щёлкни правой кнопкой мыши в окошке свойств полей (рисунок 3). Выбери пункт "New field".

В появившемся окне, нужно заполнить свойства:

  • Name - любое, как тебе удобно
  • Component - тоже любое, как тебе удобно
  • Type - В нашем случае название страны - это строка.
  • Size - Размер (если нужен).
  • Field type - Тип поля. В нашем случае это Lookup (поисковое).
  • Key field - связующие поле из этой таблицы.
  • Dataset - Dataset указывающий на таблицу-справочник.
  • Lookup field - связующие поле из справочника. Связь будет осуществляться как "Key field" - "Lookup field".
  • Result field - Значение этого поля справочника будет показываться вместо индекса.

Теперь остановись и внимательно обдумай всё что я здесь сказал. Попробуй пощёлкать по спискам, но ничего не меняй.

Итак, у нас получается, что поле "Countr" будет показываться поле "Country" из справочника, соответствующее полю "Country" из Table2. Запусти программу, и посмотри на результат в работе.

Если что-то непонятно, то скоро будет ещё яснее. Сейчас мы познакомимся с компонентом TDBLookupComboBox , результат действия которого будет примерно таким же. Вот свойства, которые должны быть заполнены для получения такого эффекта:

  • DataSource - Таблицы, в которую сохраняется значение. В нашем случае это "User1.db".
  • DataField - Поле в этой таблице, где будет сохраняться значение. В нашем случае это "Country".
  • ListSource - Таблица, которая будет использоваться в качестве элементов выпадающего списка. В нашем случае это "Country.db".
  • ListFieldIndex - Поле из этой таблицы, которым будет запелнен выпадающий список. В нашем случае это "Country".
  • KeyField - Поле, по которому будет происходить связь между таблицами. В нашем случае это "key1".

В итоге получается похожий эффект. Попробую объяснить на словах. У компонента похожего на TСomboBox, выпадающий список заполняется значениями поля указанного в ListFieldIndex из таблицы ListSource. Когда пользователь выбирает значение из списка, то в поле указанное в DataField таблицы DataSource заноситься текущее значение поля KeyField из таблицы ListSource. Остановись и хорошенько обдумай всё, что я сказал. Если что-то непонятно, то придётся тебе играть с программой и смотреть, что в это время происходит в базе данных. Если и это не поможет, то иди мыть унитазы, программирование не для тебя.

Теперь рассмотрим простейший пример SQL запроса. Поставь в DataModule два компонента: TDataSource и TQuery. Соедини их так же как ты соединял TDataSource и TTable. У TQuery установи свойство DatabaseName также как и у TTable. Это нужно, чтобы запрос смог найти базу данных. Теперь дважды щёлкни по свойству SQL. В появившемся окне напиши:

SELECT *
FROM user1.db

Теперь установи свойство Active в "TRUE", и твой запрос выполнится. Результат запроса я отобразил в "DBGrid3" (расположен внизу формы). В нашем случае запрос очень простой, поэтому в нём нет ничего особенного, но со временем ты научишься писать достаточно серьёзные запросы к базам данных.

TQuery и TTable очень похожи и большинство из того, что мы проходили по TTable, ты можешь применить и к TQuery.

На этом наше занятие считаю оконченным. Удачи тебе.

Получить ссылку на материал

Категория: Разные | Добавил: Барон (06.12.2011)
Просмотров: 1052 | Теги: TQuery, SQL, TТable, TDataSource | Рейтинг: 0.0/0
[ Пожертвования для сайта ] [ Пожаловаться на материал ]

Если вам помог материал сайта кликните по оплаченной рекламе размещенной в центре

Поиск
Категории раздела
Access [1]
ADO [5]
Alias [4]
Oracle [1]
Delphi & SQL [15]
Разные [29]
Псевдоним [12]
СУБД клиент-сервер [3]
Королевство Delphi © 2010-2024
Яндекс цитирования