Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Основные отличия 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.
Основные методы класса TField
Основные события класса TField
№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 примет вид
№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; Просмотров: 624; Нарушение авторского права страницы