Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Оно.doc
Скачиваний:
8
Добавлен:
31.07.2019
Размер:
336.9 Кб
Скачать
  1. Создание вычисляемых полей.

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

procedure TForml.TablelCalcFields(DataSet: TDataSet)

; begin

with Tablel do

TabielCalcFieldl.Value := Fields[0].Value + Fields[1].Value;

 with Queryl do 

begin

Params[0].AsInteger := Tablel.Fields[0].Aslnteger;

 Open;

TabielCalcFieldl.Value := Fields[0].AsString; 

Close;

 end;

 end;

Метод OnCalcFields выполняется при открытии набора данных, при переходе в режим редактирования, при передаче фокуса между компонентами отображения данных или колонок сетки, при удалении записи. Но для этого нужно, чтобы свойство AutoCaicFields набора данных было равно значению True.

Примечание

Необходимо учитывать, что сложные вычисляемые поля могут существенно замедлить работу набора данных (особенно при использовании при этом запросов SQL). Кроме того, в процессе редактирования набора данных (при изменении значения поля, сохранении изменений и переходе на следующую запись) вычисляемые поля рассчитываются несколько раз подряд. Для уменьшения числа автоматических обращений к методу OnCalcFields нужно использовать свойство AutoCaicFieids := False.

Для создания вычисляемого поля достаточно в диалоге создания нового поля Редактора полей в качестве типа поля задать "вычисляемое", в остальном процесс совпадает с созданием поля данных.

В выражениях вычисляемых полей можно использовать другие вычисляемые поля, но они обязательно должны быть определены в методе OnCalcFields до этого.

Вычисляемые поля нельзя использовать при фильтрации набора данных при помощи метода-обработчика onFilterRecord, т. к. он вызывается до метода-обработчика OnCalcFields, а вычисляемые поля не сохраняются.

  1. Разработка прикладных программ для работы со связанными таблицами: установление ссылочной целостности; компоненты пользовательского интерфейса и их взаимосвязь.

  1. Проверка значений полей.

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

В наборе данных приложения баз данных Delphi каждому полю соответствует собственный объект. Основой объектов полей является класс TField, который инкапсулирует основные свойства абстрактного поля, не зависящего от типа данных. От этого базового класса порождены другие классы, обеспечивающие функционирование реальных объектов полей, зависящих от типа данных.

Контроль значений, вводимых в поля набора данных, в Delphi возложен на объекты полей, а не на компоненты отображения данных. Именно в рамках этого мы рассмотрим работу методов-обработчиков событий базового класса TField.

Перед сохранением значения поля в БД всегда вызывается метод-обработчик onValidate, при этом автоматически проводится проверка на выполнение задаваемых ограничений и ограничений типа данных.

Различают контроль значения в целом и посимвольный контроль. Метод OnValidate проверяет значение поля целиком. Если при проверке обнаружена ошибка, то выдается сообщение (эту функцию выполняет BDE) и фокус формы устанавливается на соответствующем компоненте отображения данных.

Если метод OnValidate не вызвал исключительной ситуации, то при сохранении значения поля в БД вызывается обработчик события oncnange. В принципе, можно предусмотреть операции по контролю данных и в этом методе, но тогда в случае ошибки возникает нежелательная исключительная ситуация, которая может привести к серьезным сбоям в работе приложения.

Проверить текущее значение поля перед его появлением в компоненте отображения данных можно в методе-обработчике onGetText. Если параметр DisplayText принимает истинное значение, то в параметре Text передается значение свойства DisplayText (значение в строковом формате в таком виде, как оно будет показано в компоненте отображения данных — с символами форматирования). В противном случае в параметре Text передается текущее значение в строковом формате.

Рассмотренные методы-обработчики удобнее всего использовать для проверки текущего значения с точки зрения программной логики. Например, чтобы отпускная цена была выше закупочной, или чтобы остаток был не больше первоначального количества товара в партии. Для проверки правильности самого значения класс TField имеет несколько полезных свойств.

Если на сервере БД задано ограничение на некоторое поле, его можно использовать в приложении Delphi при помощи свойства importedconstraint.

Для создания собственного ограничения можно использовать свойство customConstraint, в котором используется синтаксис SQL:

При возникновении ошибки будет совсем не лишним, если программа выдаст некое осмысленное сообщение, которое поможет пользователю исправить оплошность. При работе с методами-обработчиками это можно предусмотреть в программном коде.

Для встроенного контроля предусмотрено специальное свойство — ConstraintErrorMessage, которое выводится в виде сообщения при возникновении ошибки. Согласитесь, что это гораздо проще, чем исправлять и перекомпилировать соответствующие файлы ресурсов. Если приложение работает с сервером БД, и возникла ошибка ограничения поля, то выводится сообщение, определяемое сервером, а не этим свойством.

Если для поля заданы ограничения, то свойство HasConstraints принимает истинное значение.

Посимвольный контроль данных осуществляется свойством vaiidchars, в котором можно определить допустимые в строковом представлении значения поля символы и методом isvalidchar, который определяет допустимость использования переданного в параметре символа.

Еще один мощный инструмент контроля данных предоставляет свойство EditMask, которое позволяет создавать шаблоны ввода данных, облегчая тем самым работу пользователя и уменьшая возможность ошибки. Рассмотрим правила создания шаблонов.

  1. Использование меню в Delphi-проектах: разновидности меню, компоненты для создания меню, свойства меню.

  1. Системы программирования (СП): состав СП, назначение составляющих СП, уровни ЯП, разновидности программных модулей.

Система программирования — это система для разработки новых программ на конкретном языке программирования.

Составные систем программирования:

• компилятор или интерпретатор;

• интегрированная среда разработки;

• средства создания и редактирования текстов программ;

• обширные библиотеки стандартных программ и функций;

• отладочные программы, т.е. программы, помогающие находить и устранять ошибки в программе;

• "дружественная" к пользователю диалоговая среда;

• многооконный режим работы;

• мощные графические библиотеки; утилиты для работы с библиотеками

• встроенный ассемблер;

• встроенная справочная служба;

• другие специфические особенности.

Turbo Basic, Quick Basic, Turbo Pascal, Turbo C, системы программирования, ориентированные на создание Windows-приложений:

• пакет Borland Delphi (Дельфи) — предоставляющий качественные и очень удобные средства визуальной разработки.

• пакет Microsoft Visual Basic — удобный и популярный инструмент для создания Windows-программ с использованием визуальных средств. Содержит инструментарий для создания диаграмм и презентаций.

• пакет Borland C++ — одно из самых распространённых средств для разработки DOS и Windows приложений.

Транслятор — это программа-переводчик, преобразует программу, написанную на одном из языков высокого уровня, в программу, состоящую из машинных команд.

Трансляторы реализуются в виде компиляторов или интерпретаторов. С точки зрения выполнения работы компилятор и интерпретатор существенно различаются.

Компилятор — читает всю программу целиком, делает ее перевод и создает законченный вариант программы на машинном языке, который затем и выполняется.

Интерпретатор — переводит и выполняет программу строка за строкой.

Откомпилированные программы работают быстрее, но интерпретируемые проще исправлять и изменять.

Каждый конкретный язык ориентирован либо на компиляцию, либо на интерпретацию — в зависимости от того, для каких целей он создавался.