Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы РЭУБД общий файл от 3.04 .docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
617.59 Кб
Скачать

54. Статические и динамические запросы.

Обычно текст запроса определяется во время разработки приложения и вводится в свойство sql компонента TQuery при помощи простейшего специализированного редактора, который вызывается щелчком на кнопке свойства в Инспекторе объектов. Такие запросы называются статическими. Преимущество этих запросов в том, что для них можно сразу же проверить правильность синтаксиса SQL и сформировать статические поля для набора данных компонента.

Текст запроса можно определять и во время выполнения, используя для этого стандартные средства класса TStrings, так как свойство sql есть экземпляр данного класса. Запросы, текст которых задается или изменяется во время выполнения, будем называть динамическими. Их преимущество в гибкости и многоплановости — ведь один компонент TQuery, расположенный в модуле данных, может работать в нескольких формах, для этого достаточно вовремя изменить текст запроса.

Для замены всего текста можно использовать методы clear и Add, а если требуется изменить одну строку, можно воспользоваться индексом этой строки (см. выше метод FormCreate). Перед началом редактирования текста запроса необходимо отключить набор данных компонента.

Наличие в запросе параметров не означает, что запрос является динамическим, так как текст запроса не меняется. Если в старой редакции текста запроса параметры были, а в новой нет, то список параметров запроса обнуляется автоматически. Если параметры в тексте появились, то объекты параметров создаются также автоматически.

55. Основные свойства Query, связывание таблиц.

Программный доступ к полем компонента Query осуществляется с помощью свойства Fields, по индексу:  Query1.Fields[1] или методом FieldByName: Query1. FieldByName(Dep) или по имени объекта поля: Query1Dep.

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

Создайте новый проект, положите на форму один набор TTable, TDataSource и TDBGrid. Привяжите его к таблице CUSTOMER. Положите на форму второй набор - TQuery, TDataSource и TDBGrid и свяжите объекты между собой. В свойстве SQL наберите текст запроса:

select * from Orders where CustNo = :CustNo

В свойстве DatabaseName для Query1 укажите DBDEMOS.

В свойстве DataSource для Query1 укажите DataSource1.

Поставьте Active = True и запустите программу.

56. Основные методы компонента Query.

К основным методам Query можно отнести методы открытия и закрытия соединения с базой данных.

Метод Close закрывает соединение с базой данных, переводя свойство Active в false. Этот метод надо выполнять перед изменением каких-то свойств, влияющих на выполнение запроса или на отображение данных. Например, при изменении параметров запроса в свойстве SQL надо сначала методом Close закрыть соединение, связанное с прежним запросом, а потом уже выполнять новый запрос.

Метод Open открывает соединение с базой данных и выполняет запрос, содержащийся в свойстве SQL. Но этот метод применим только в том случае, если запрос сводится к оператору Select. Если же запрос содержит другой оператор, например, Update или Insert, то при выполнении Open будет генерироваться исключение EDatabaseError. Для осуществления любого другого запроса, кроме Select, используется метод ExecSQL. Он подготавливает выполнение данного запроса, если подготовка не осуществлена заранее, и затем выполняет его. Подготовка выполнения требует определенных затрат времени. Поэтому для ускорения взаимодействия с базой данных полезно перед первым выполнением запроса выполнить метод Prepare.

При изменении текста в свойстве SQL методы Close и Prepare вызываются автоматически.