АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Изменяемые TQuery

Читайте также:
  1. Неизменяемые параметры проекта (константы)
  2. Отчет по устойчивости (изменяемые ячейки)
  3. Работа с компонентом TQuery

Записи НД. возвращаемые компонентом TQuery могут изменяться, тому, как это происходит в компоненте ТТаble. Записи можно редактировать в компоненте TDBGrid, связанном c TQuery (метод автоматического перевода в состояния dslnsert, dsEdit, автоматического выполнения методов Insert, Delete, Post и Canсel). Также может применяться метод программного формирования значения полей записи, ввода таких значений с использованием компонента TDBEdit, TDBCheckBox и других. В .этом случае методы Insert, Delete, Post и Cancel вызываются в программе явно.

Возможность изменения НД, возвращаемого после выполнения SELECT, определяется свойством property CanModify:Boolean;

Значение этого свойства устанавливается: автоматически, исходя из определенных факторов. Если в процессе выполнения свойство CanModify установлено в True, набор данных доступен для изменения. При значении False записи НД не могут быть добавлены, изменены или удалены.

Свойство CanMedify всегда устанавливается в False, если в False установлено свойство RequesiLive компонента TQuery: property RequestLive: Boolean;

Значение данного свойства может быть установлено как во время проектирования, так и во время разработки приложения. По умолчанию всегда устанавливается False (НД доступен только для чтения). Однако установка данного свойства в значение True (НД может быть изменен) вовсе не означает, что НД действительно будет позволено изменяться и что свойство CanModify установлено в True. Эго произойдет только в том случае, если синтаксис оператора SELECT при выполнении запроса будет признай "верным".

Синтаксис оператора SELECT будет признан "неверным", если:

– НД формируется более чем из одной ТБД:

– присутствует предложение принудительной сортировки результирующего набора данных ORDER BY;

– значения хотя бы одного столбца результирующего НД сформировано с использованием агрегатных функций (SUM, COUNT. AVG, MIN, MAX);

– при доступе к СУБД Sybase в таблице отсутствует уникальный индекс.

В этом случае, если свойство RequestLive установлено в True, а синтаксис оператора SELECT признай "неверным", то возвращается НД, доступный только для чтения – при доступе к таблицам локальных СУБД (Paradox, dBase).



 

Если изменения, внесенные в НД методами Post, Delete, не отображаются в НД, его содержимое можно обновить методом

procedure Refresh;

Однако в этом случае оператор SELECT, должен быть выполнен для таблицы локальной СУБД и эта таблица должна иметь уникальный индекс.

 

Предотвратить ввод записей, не удовлетворяющих условиям, перечисленным в предложении WHERE оператора SELECT, можно путем установки в True значения свойства

property Constrained: Boolean;

Например, для НД, полученного по запросу

Select * fron rashod where kolvo>1000

при Constrained, установленном в True, будут блокироваться попытки запоминания записей со значением поля kolvo, меньшим 1000.

В том случае, если НД доступен только для чтения, его записи могут быть изменены при помощи SQL-операторов INSERT, UPDATE, DELETE. При этом изменения в НД не отображаются. Для отображения изменений НД следует переоткрыть, выполнив метод Close и повторно Open.

Выполнение динамических запросов

Понятие динамического запроса

Динамическим (параметрическим) является запрос, в SQL-операторе которого в процессе выполнения приложения могут изменяться отдельные его составляющие. В этом случае изменяемая часть оператора оформляется как параметры.

Select * from stud1 where (b1=5) and (nom=”3”)

Для формирования динамических запросов применяется только один компонент TQuery, указав в его свойстве SQL оператор, в котором изменяющиеся части заменены на параметры:

Select * from stud1 where (b1=:идентиф1) and (nom=:идентиф2)

Под параметром понимается имя, предваренное кавычками.

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

Формирование динамического запроса

Для формирования динамического запроса необходимо:

1. Выбрать для существующего компонента TQuery в инспекторе объектов свойство SQL и нажать кнопку текстового редактора;

‡агрузка...

2. В появившемся окне текстового редактора набрать текст SQL – запроса с параметрами;

3. Выбрать в инспекторе объектов свойство Params и нажать кнопку в строке данного свойства; в появившемся окне будут показаны имена параметров, введенных а текст динамического SQL-оператора; список параметров отслеживается автоматически всякий раз при изменении содержимого свойства SQL;

4. Каждому параметру из списка необходимо поставить в соответствие определенный тип и, если нужно, стартовое значение в поле Value.

Переключатель Null Value позволяет указать в качестве стартового значения NULL. Стартовые значения присваивать необязательно, однако каждому параметру необходимо поставить в соответствие определенный тип данных, иначе попытка открытия компонента TQuery приведет к возбуждению исключения.

5. Компонент TQuery можно сделать активным (установить свойство Асtive=True) на стадии разработки приложения только в том случае, если каждому из параметров присвоено стартовое значение.

Компонент TQuery, содержащий динамический запрос, если его свойство Active установлено на этапе разработка в значение True, открывается при создании формы, содержащей данный компонент TQuery. При этом он использует значения параметров, установленные по умолчанию (стартовые значения). Если хотя бы одному из параметров не назначено стартовое значение, выдается ошибка.

Если компонент TQuery, содержащий динамический запрос, не открыт в момент создания формы, его можно открыть в некоторый момент времени, программно установив значения параметров и выполнив метод Open или установив свойство Active в True.

Впоследствии всякий раз, когда необходимо изменить значения параметров запроса (что приведет к выдаче другого НД), нужно закрыть компонент TQuery, программно присвоить значения параметрам и повторно открыть компонент.

 


1 | 2 | 3 | 4 |


При использовании материала, поставите ссылку на Студалл.Орг (0.007 сек.)