Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Основные отличия SQL Explorer от BDE Administrator



1) Если открыть объект MYBase в SQL Explorer, щелкнув на значке «+» перед его именем, на правой панели SQL Explorer будут показаны все таблицы БД, а значок базы помечается зелёной рамкой, указывающей что БД MyBase открыта.

2) В утилите SQL Explorer можно вводить текст SQL запросов на вкладке Enter SQL.

 

№35. Основные свойства, методы и события класса TField.

 

Обращаться к полям таблицы БД позволяет класс TFIELD. Данный класс служит как бы оболочкой для физического поля записи, дополняя его набором свойств и методов, необходимых разработчику. На основе класса TField создаются псевдополя: вычисляемые поля, поля соответствия и т.д.

Тип TField в программе реально не присутствует, вместо него используется множество его наследников, соответствующих конкретным типам полей и записей (например, TDateField, TGraphicField и т.д.)

Основные свойства класса TField.

Свойства Назначения
AsXXXX Группа свойства этого вида приводит значения поля к нужному типу. Вместо XXXX в названии поля могут использоваться: Boolean, Variant, Currency, Float, Integer, String, BCD – приведение к типу двоично-десятичных данных.
Calculated Имеет значение True, если значение поля вычисляется в обработчике события OnCalcFields.
CanModify Имеет значение True, если значение поля можно редактировать
DataSet Набор данных, к котрому принадлежит поле
DataSize Содержит размер данных в байтах
DataType Тип данных поля
DefaultExpression Выражение SQL, которое определяет значение в поле по умолчанию, если значение не выносится в это поле явно
EditMask Определяет маску, которая будет использоваться для фильтрации и форматирования вводимого значения
FieldKind Определяет вид поля (обычное, вычисляемое, внутреннее вычисляемое, агрегированное, поле соответствия)
FieldName Название поля физической таблицы БД
HasConstraints Имеет значение True, если поле включает ограничение на допустимое значение
Required Имеет значение True, если поле обязано содержать значение
Size Текущая длина записи в полях с переменной длиной записи
Text Текст, которым отображается значение поля в режиме редактирования. В остальных режимах поле отображается содержимым свойства DisplayText
Value Содержит текущее значение поля
Visible Разрешает или запрещает показ поля в визуальных компонентах

 

Основные методы класса TField

Метод Назначение
Procedure AssignValue (const Value: TVarRec); Преобразует вариант Value с помощью свойства Asxxxx и помещает полученное значение в Value
Procedure Clear; Очищает значение поля
Function IsValidChar (InputChar: Char): Boolean; Возвращает True, если символ InputChar может присутствовать в текстовом представлении значения поля

 


Основные события класса TField

Событие Условие генерации
OnChange Данные в поле были изменены
OnGetText Произошел запрос значений свойств Text и DisplayText
OnSetText Свойство Text получает новое значение
OnValidate Возникает после изменения значения поля до записи в буфер. Обработчик этого события должен проверять правильность введенных данных.

 

 

№36 Типы данных поля, виды полей. Объекты для реальных полей

В свойстве DataType может быть указан один из различных типов данных ( ftString, ftFloat, ftBoolean, FtInteger, Ftcurrence – денежный, FtTime, ftDAte, ftAutoInc –автоинкрементное поле, ftBlob –двоичное поле переменной длины, FtMemo многострочный текст, FtArray –массив, FtReference – ссылочный текст, FtDataset- набор данных.

Виды полей

1) fkData – обычное поле, содержит данные.

2) fkCalculated – вычисляемое поле.

3) fkLookUp – подстановочное поле(поле соответствия)

4) fkInternalcalс – внутреннее вычисляемое поле (его значение заносится в БД _

5) fkAggregate – агрегатное поле (предназначено для выполнения вычислений со значениями полей набора данных с использованием агрегатных функций SQL

Объекты для реальных полей

Для удобства работы с конкретным полем можно создать объект-поле (постоянное поле) класса TField или одного из его специализированных потомков – TdateField, TStringField.

Объек-полесоздается на топе создания программы с помощью редактора полей. Если определен объект-поле, то получить доступ к полю можно по имени этого объекта.Радактор полей присваивает объектам-полям имнеа путем сцеплнеия имени компонента Table и имени поля.

Пример: добавим в модуль данных компоненты Table и DataSource

Type

Zakaz: Ttable;

 

SourceZakaz: TAutoIncField;

Zakazid_zak: TautoIncFiekld

ZakazDate_zak: TDateField;

 

Когда выбрана толица или компонетн набор данных (TTable) для вызова редактора полей необходимо выбрать в контекстном меню fieldsEditor в появившемся списке постоянных полей, первоначально пустом, в контекстном меню можно выбрать команду Add All Fields для добавления всех полей, или команду Add Fields для добвления некоторых. В дальнейшем поля можно удалять из списка(физически они остаются в таблице), возраать обатно, менять поядое следования, настраивать свойства и т.д.

 

 

Сортировка БД

А)стр 18 пдф файла БД

DM.Magazin.AddIndex (‘FS’, ‘Nommang’, [ixunique, ixdescending]); по убыванию

Б) DM.Magazin.IndexFieldNames: = ‘Nommang’; ) по возратстанию

DM.tovar.indexname: = ‘nameT’;

DM.magazin.addindex(‘FS1’, ’director’, [ixdescending]

Вместо свойства indexname используем свойство indexfieldnames

fffff

№37 Обращение к значению поля. Создание вычитаемых полей

К занчению поля можно обратится при помощи свойств Value и ASXXXX класса TField или его потомков:

Property Value: Variant;

Proprety asCurrency: Currency;

Пример, т.к. заказ id заказа поле TАutoIncField, то для приведения его к типу String необходимо воспользоваться свойством AsString:

Edit////

Естественно, что тип поля должен быть совместим с типом данных к которым приводится значения поля. Например если ZakazDate поле TDаteField, то попытка привести его к несовместному типe Integer приведет к ошибке.

Если для таблицы БД не задан ни один объект-поле, то получить доступ к значению полей этой таблицы можно с помощью их метода FieldbyName:

 

Function FieldByName (const FieldName: String): TField;

Так же получить доступ к значению поля можно через его свойства Fields и FieldValues:

Property Fields[index]: TField;

Property FieldValues [имя_поля]: Variant;

Нумерация полей в свойстве Fields начинается с 0.

Пример. Следующие обращения идентичны

Zakaz.FieldByName (‘Kod_pok’).AsInteger: =3;

Zakaz[‘kod_pok’]: =3;

Zakaz.FieldValues[‘kod_pok’]: =3;

Zakaz.Fields[1].AsInteger: =3;

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

Вычисляемые поля - это поля значения, которых берутся не из таблиц БД а рассчитываются на основе уже существующий полей текущей записи.

Путь таблица prodazha имеет поля: kol- количество проданного товара, Cena – стоимость этого товара. Построим вычисляемое поле summa, для этого добавим это поле в список полей таблицы prodazha ( команда NewField в редакторе полей), укажем его тип currency, выберем с помощью переключает FieldType вариант Calculated.

В обработчике события OnCalcField соответствующего компонента Table запишем

ProdazhaSumma.Value: = ProdazhaKol.Value*ProdazhaCaena.Vakue;

В результате таблица prodazha примет вид

Kol Cena Summa
100.00 200.00
20.10 100.50
50.50 202.000

 

 

№38 проверка правильности введенного в поле значения. Формирование текстового представления поля

 

Для контроля за правильностью вводимых в поле значений используется событие OnValueDаte и OnSetText объекта поля. Оба события наступают после изменения значения поля, но до его запоминания в таблице.

В обработчике OnValueDate в случае обнаружения неверного значения программа должна предотвратить его запоминание, создав исключительную ситуацию или обратившись к глобальной процедуре Abort.

Например полк Kod_pok не может содержать отрицательных значений, в обработчике события OnValuueDate запишем

If ZakazKod_pok< 0 then

Begin

ShoeMessage ( ‘ Код покупателя не может быть отрицательным! ’);

Abort;

End;

Отказавшись от запоминания неверного значения в таблице, пользователь не сможет покинуть это поле до тех пор, пока не введет в него правильное значение.

Событие OnSetText можно просто игнорировать неверные значения, и не создавать исключительную ситуацию. В обработчике этого события программа должна присвоить полю новое значение или оставить поле без изменения.

Procedure TDM.zakazkod_pokSetText (Sender: TField; const Text: string);

Begin

If StrtoFloat(text)< 0 then

ShowMessage ( ‘ Код покупателя не может быть отрицательным! ’)

Else Zakazkod_pok.Vaiue: = STrtoFloat ( text);

End;

Для формирования текстового представления поля используется обработчик события OnGetTExt объекта-поля.

 

 

Пример:

Пусть поле Sex таблицы заказчики, имеет логический тип. Обработчик выводит текст «муж» или «жен» в зависимости от значения поля.

 

Procedure TForm.ZakazchikikSexGetText(Sender: TField; var Text: String; DisplayText: Boolean);

Begin

If ZakazchikiSex.Value {=true} then

Text: = ‘Myж’

Else Text: = ‘Жен’;

End;

 

После деноминации уберем 3 лишних нуля в денежном поле и вставим разделители для удобства чтения длинных сумм.

 

Procedure TForm.tbNovarObrotGetText(Sender: TField; var Text: String; DisplayText: Boolean);

Begin

Text: = Floattostrf(tbTovarOborot.AsFloat/1000, ffNumber, 10, 2);

End;

 

БД 1.3 №39 Понятие и состояние набора данных (НД)

Под набором данных в Delphi понимается группа записей из одной или нескольких таблиц БД, доступная для использования через компоненты TTable, TQuery, TStoredProc.

Компоненты Ttable и TQuery имеют общие свойства метода и события. При этом они называются одним общим термином - наборы данных. НД TTable содержит записи, источником которых может быть только одна таблица БД, а набор данных TQuery содержит записи, источником которых могут быть несколько таблиц БД.

Состояние НД определяется его свойством State, оно может принимать следующие значения:

1) dsInActive – НД закрыт

2) dsBrowse – состояние по умолчанию для открытого НД, показывается, что записи просматриваются, но в данный момент не изменяются.

3) dsEdit- НД находится в состоянии редактирования текущей записи

4) dsInsert – НД находится в состоянии добавления новой записи

5) dsSetKey - НД находится в состоянии поиска записи по заданному критерию, по окончании поиска НД переходит в состояние dsBrowse

6) dsCalcFields – выполняется установка значений вычисляемых полей. В данном режиме изменение в НД вносится не могут.

7) dsFilter- фильтрация записей НД если в свойстве Filtered установлено Ture.

8) dsNewValue – обновление свойства TField.NewValue

9) dsOldValue -//- Tfield.OldValue

10) dsCurValue -//- TField.CurValue

11) dsBlockRead – чтение блока записей

12) dsInternalCalc - обновление полей Tfield, для которых FieldKind = fkInternalCalc


Поделиться:



Последнее изменение этой страницы: 2017-04-13; Просмотров: 609; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.052 с.)
Главная | Случайная страница | Обратная связь