Изменение масштаба отображения отчета 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Изменение масштаба отображения отчета



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

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

Печать отчета

Для печати отчета необходимо выполнить следующее:

· В меню Файл щелкнуть на команде Печать.

· В области Печатать щелкнуть на варианте Страницы.

· Чтобы напечатать только первую страницу отчета, введите 1 в поле "с" и 1 в поле "по".

· Щелкнуть на кнопке ОК.

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

Если при печати в конце отчета появляется пустая страница, убедитесь, что параметр Высота для примечаний отчета имеет значение 0. Если при печати пусты промежуточные страницы отчета, убедитесь, что сумма значений ширины формы или отчета и ширины левого и правого полей не превышает ширину листа бумаги, указанную в диалоговом окне Параметры страницы (меню Файл).

При разработке макетов отчета руководствуйтесь следующей формулой: ширина отчета + левое поле + правое поле <= ширина бумаги.

Форматирование:
1) Выделите заголовок Студенты НТУ «ХПИ»

2) Измените гарнитуру, начертание и цвет шрифта, а также цвет заливки фона.

3) На панели инструментов Конструктор отчетов щелкнуть на кнопке Предварительный просмотр, чтобы просмотреть отчет.

3.8 Особенности проектирования клиентской части приложения в различных технологиях доступа к данным

3.8.1 Особенности и назначение технологий доступа к данным ADO, MIDAS, MTS, CORBA

С развитием информационных технологий, связанных в том числе с необходимостью взаимодействия предприятий через гло­бальную сеть Интернет, все большее развитие получила трехуровневая схема взаимодействия клиентской и серверной частей. Как показала практика, эта схема оказалась эффек­тивной и при организации внутренних ЛВС предприятий, где в качестве клиента может использоваться обычный Web-браузер. В соответствии с данной схемой общая структура БД состоит из трех уровней:

1-й — клиенты («тонкие клиенты»);

2-й — сервер приложений;

3-й — сервер базы данных.

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

Приложение 1-го уровня должно обеспечить пользователю дру­жественный интерфейс (диалоговые формы) при работе с БД, включая: возможность обращения к базе данных с помощью за­просов и получение результатов обращения к базе данных.

Приложение 2-го уровня должно содержать программу, обес­печивающую эффективное выполнение приложения 1-го уровня, включая:

• тексты программ SQL-запросов (транзакций);

• проверку синтаксиса условий выполнения запроса, введен­ного пользователем;

• программы обеспечения доступа к информации сервера баз данных.

Приложение 3-го уровня должно содержать все таблицы баз данных и обеспечивать эффективное управление работой удален­ных пользователей с информацией]

В настоящее время первые две части приложения 2-го уровня разрабатывают с применением так называемых мониторов обра­ботки транзакций ТР-мониторов.

Программы обеспечения доступа к информации сервера баз данных разрабатываются с применением различных технологий: ODBC;COM; ADO.NET; CORBA; MIDAS;.NET FrameWork.

Все эти технологии основаны на единых принципах — объект­ных моделях доступа к удаленным базам данных, и разрабатывают­ся соответственно на методах объектно-ориентированного про­граммирования.

Технологии ADO.NET

Технология доступа к удаленным базам данных ADO.NET была разработана для архитектуры клиент—сервер. Однако возрастающая сложность систем обработки информации потребовала качественного изменения этой архитектуры. Кроме двух уровней удаленных баз данных — клиентского и серверного — появляются дополнительные уровни — серверы бизнес — логики, реализующие бизнес-логику приложений.

Технология ADO.NET устанавливает следующую схему работы клиента с сервером баз данных:

- установка соединения с сервером;

- получение необходимых данных;

- закрытие соединения;

- обработка данных;

- установка соединения для передачи измененных данных об­ратно на сервер.

Основу ADO.NET составляют два основных модуля: Провай­дер данных (Data Provider.NET FrameWork) и Резидентная реля­ционная база данных (DataSet).

Технологии CORBA

Технология уда­ленного доступа к базам данных CORBA (Common Object Regust Broker Architecture — общая архитектура объектных заявок) пред­ставляет собой промежуточное программное обеспечение, уста­навливающее отношения клиент — сервер между объектами в рас­пределенной компьютерной среде.

Архитектура системы CORBA включает в себя следующие компо­ненты:

• ORB (Object Request Broker) — брокер объектных запросов (заявок), включающий в себя язык IDL;

• IDL (Interface Definition Language) — язык определения ин­терфейсов;

• РОА (Portable Object Adapter) — адаптер объектов;

• Stub — заглушка;

• Skeleton — основа;

• Smart Agent — «умный» агент.

Технологии MIDAS

Технология MIDAS (Multitier Distributed Applications Services) — набор сервисов для создания многозвенных распределенных при­ложений.

Многозвенное приложение представляет собой распределен­ные системы удаленного доступа к данным, которые состоят, как минимум, из трех логических уровней. Эти логические уровни мо­гут находиться как на одном, так и на нескольких компьютерах.

Применение многозвенных приложений позволяет обеспечить следующие преимущества:

• формирование пакета бизнес — логики в общедоступном сред­нем уровне, доступ на который могут получить одновременно сразу несколько клиентов, что позволит избежать дублирования биз­нес – логики для каждого отдельного клиентского приложения;

• получение распределенной обработки информации, т. е. воз­можность оптимизации распределения нагрузки на отдельные ком­пьютеры;

• увеличение устойчивости за счет возможности организации гибкой перестраиваемой системы защиты информации.

В самой простой форме (так называемой three-tiered model) многозвенное приложение включает в себя следующие уровни: клиентское приложение, сервер приложений, управление пере­дачей данных и удаленный сервер базы данных.

Клиентское приложение обеспечивает интерфейс пользователя на пользовательском компьютере.

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

Управление передачей данных обеспечивает так называемый бро­кер данных.

Удаленный сервер базы данных обеспечивает систему управления базой данных.

3.8.2 Специальные компоненты доступа к данным каждой технологии. Особенности создания интерфейса

 В Delphi для работы с наборами данных служат такие компоненты, как Table, Query, UpdateSQL, DecisionQuery или StoredProc.

 Базовые возможности доступа к БД обеспечивает класс TDataSet, представляющий наборы данных в виде совокупности строк и столбцов (записей и полей). Этот класс содержит в себе основные средства навигации (перемещения) и редактирования наборов данных.

 Расположение БД, с таблицами которой выполняются операции, указывает свойство DatabaseName типа string. Значением свойства является имя каталога, в котором находится БД (файлы ее таблиц), или псевдоним, ссылающийся на этот каталог. Если для БД определен псевдоним, то его можно выбрать через Инспектор объектов в раскрывающемся списке.

 Для компонента Table использование свойства DatabaseName является единственной возможностью задать местонахождение таблиц БД. Для компонента Query дополнительно можно указать в запросе SQL путь доступа к каждой таблице.

 В зависимости от ограничений и критерия фильтрации один и тот же набор данных в разные моменты времени может содержать различные записи. Число записей, составляющих набор данных, определяет свойство RecordCount типа Longint. Это свойство доступно для чтения при выполнении приложения. Управление числом записей в наборе данных осуществляется косвенно — путем отбора записей тем или иным способом, например, с помощью фильтрации или SQL-запроса (для компонента Query).

 Для локальных таблиц dBase или Paradox составляющие набор данных записи последовательно нумеруются, отсчет начинается с единицы. Номер записи в наборе данных определяет свойство RecNo типа Longint, которое доступно во время выполнения программы.

 Иногда при описании операций, выполняемых с записями набора данных, под режимом редактирования подразумевается не только режим dsEdit изменения полей текущей записи, но и режим dsinsert вставки новой записи. Тем самым режим редактирования понимается в широком смысле слова как режим модификации набора данных.

 При выполнении программы определить режим набора данных можно с помощью одноименных свойств state типа TDataSetstate самого набора данных и связанного с ним источника данных DataSource. При изменении режима набора данных для источника данных DataSource генерируется событие OnStateChange типа TNotifyEvent.

 

Особенности набора данных Table

 Компонент Table представляет собой набор данных, который в текущий момент времени может быть связан только с одной таблицей БД. Этот набор данных формируется на базе навигационного способа доступа к данный, поэтому компонент Table рекомендуется использовать для локальных БД, таких как dBase или Paradox. При работе с удаленными БД следует использовать компонент Query.

 Связь между таблицей и компонентом Table устанавливается через его свойство TableName типа TFileName, которое задает имя таблицы (и имя файла с данными таблицы). При задании свойства TableName указывается имя файла и расширение имени файла.

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

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

 Свойство TаbleТуре типа TTtableType определяет тип таблицы. Для локальных таблиц это свойство может принимать следующие значения:

 1. ttoefault — тип таблицы автоматически определяется по расширению файла;

 2. ttParadox — таблица Paradox;

 3. ttDBase — таблица dBASE;

 4. ttFoxPro — таблица FoxPro;

 5. ttASCII — текстовый файл, содержащий данные в табличном виде (таблица ASCII).

 

 По умолчанию в состав набора данных Table попадают все записи связанной с ним таблицы. Для отбора записей, удовлетворяющих определенным условиям, используются фильтры.

 Delphi через BDE автоматически поддерживает многопользовательский доступ к локальным таблицам, при этом по умолчанию все пользовательские приложения имеют равные права и могут редактировать содержащиеся в таблицах данные. Чтобы запретить пользователям изменять содержание записей, можно использовать свойство Readonly типа Boolean. По умолчанию оно имеет значение False, что предоставляет пользователю право на модификацию записей.

 В наборе данных Table возможно указание текущего индекса, требуемого для выполнения операций: сортировки записей, поиска записей, установки связей между таблицами.

 Текущий индекс устанавливается с помощью свойства indexName или indexFieldNames типа string. На этапе разработки приложения текущий индекс выбирается из списка индексов, заданных при создании таблицы. Все возможные значения свойств indexName и indexFieldNames содержатся в раскрываю-щихся списках, доступных через Инспектор объектов. Оба свойства во многом схожи, и их использование практически одинаково. Значением свойства indexName является имя индекса, заданное при создании таблицы, а значением свойства IndexFieldNames является имя поля, для которого был создан индекс. Если индекс состоит из нескольких полей, то для свойства indexName по-прежнему задается имя этого индекса, а для свойства indexFieldNames через точку с запятой перечисляются имена полей, входящие в этот индекс.

 Для таблиц Paradox сделать текущим индексом ключ (главный индекс) можно только с помощью свойства IndexFieldNames, перечислив ключевые поля таблицы, т. к. ключ не имеет имени и поэтому недоступен через свойство indexName.

Замечание

 Свойства indexName и IndexFieldNames взаимозависимы. При установке значения одного из них другое автоматически очищается.

 

 Индекс, устанавливаемый текущим, должен существовать. Если индекс, задаваемый как значение свойства indexName или IndexFieldNames, для таблицы не существует, то возникает исключительная ситуация.

 При смене таблицы, с которой ассоциирован компонент Table, значения свойств IndexName и IndexFieldNames не изменяются автоматически, поэтому программист должен самостоятельно установить нужные значения.

 Процедура Addlndex (const Name, Fields: String; Options: TIndexOptions) до-бавляет к таблице индекс, имя которого задано параметром Name. Входящие в состав индекса поля указываются в параметре Fields; если индекс состоит из нескольких полей, то они разделяются точкой с запятой. Указывать можно только поля, которые входят в структуру таблицы, в противном случае генерируется исключительная ситуация, а индекс не создается. Параметр options содержит параметры индекса. Он имеет множественный тип и может принимать комбинации следующих значений:

 1. ixPrimary — первичный индекс;

 2. ixunique — уникальный индекс, для которого не допускается повторение значений полей в его составе;

 3. ixDescending — индекс определяет сортировку в порядке убывания значений, по умолчанию строится индекс, определяющий сортировку по возрастанию;

 4. ixExpression — индекс создается на основе выражения (только для таблиц dBase);

 5. ixcaseinsensitive — индекс определяет сортировку независимо от регистра букв;

 6. ixNonMaintained — индекс автоматически не модифицируется, если таблица открыта.

 Перед удалением индекса таблица должна быть переведена в режим монопольного.

 

 Свойство count типа integer содержит количество индексов и доступно для чтения. Управление количеством индексов осуществляется косвенно, т. е. через другие свойства и методы.

 Свойство Items [Index: Integer] типа TIndexDef представляет собой список, содержащий информацию обо всех индексах таблицы. Переменная index указывает номер индекса в списке, отсчет начинается с нуля. Тип TindexDef (не путать с классом TindexDefs) является классом и, в свою очередь, также имеет свойства, основными из которых являются Name, Fields И Options.

 Свойство Name типа string содержит имя индекса. Для индексов, построенных на основе выражений (таблицы dBase), и для главного индекса таблиц Paradox вместо названия возвращается пустая строка.

 Свойство Fields типа string содержит названия полей, по которым построен индекс. Если в индексе используется несколько полей, то их названия разделяются точкой с запятой.

 Свойство options типа TindexOption содержит параметры индекса, заданные при его создании.

 Для добавления и удаления индексов используются методы Add и clear. Процедура Add (const Name, Fields: String; Options: TIndexOptions) добавляет новый индекс. Параметры этой процедуры не отличаются от параметров метода Addindex набора данных Table, однако для метода Add не требуется перевод таблицы в режим монопольного доступа, что делает его использование более удобным.

 Процедура clear удаляет все индексы, содержащиеся в списке индексов.

 Функция IndexOf (const AName: String): Integer осуществляет поиск индекса по имени, заданному параметром AName. В качестве результата возвращается номер индекса в свойстве items. В случае неудачного поиска возвращается значение -1.

 Функция FindindexForFieids (const Fields: String): TIndexDef осуществляет поиск индекса по списку полей, заданному параметром Fields. В случае успешного поиска функция возвращает информацию об индексе, если же индекс отсутствует, то генерируется исключительная ситуация.

 При запуске приложения информация об индексах таблицы считывается с диска из соответствующих индексных файлов. При динамическом, т. е. в процессе выполнения приложения, изменении индексов содержимое индексных файлов остается прежним. При необходимости программист должен предусмотреть сохранение новой информации на диске для ее последующего применения. Для этого можно использовать свойство storeDefs типа Boolean, которое указывает, нужно ли сохранять информацию об индексах на диске. При любых изменениях в индексах этому свойству нужно установить значение True, и тогда информация об индексах будет автоматически сохранена на диске. Если изменения в индексах сохранять не нужно, то достаточно установить свойству storeDefs значение False, и изменения в индексах будут действовать только при выполнении приложения.

 

Особенности набора данных Query

 Компонент Query представляет собой набор данных, записи которого формируются в результате выполнения SQL-запроса и основаны на реляционном способе доступа к данным. При работе с удаленными БД рекомендуется использовать именно набор данных Query.

Замечание

 При работе с удаленными БД следует обращаться к средствам языка SQL. Это относится и к таким операциям, как перемещение по набору данных или вставка в него записей. Если же для компонента Query используются методы типа Next или insert, то вместо реляционного способа доступа к удаленным данным будет применен навигационный. В результате набор данных Query будет мало чем отличаться от набора данных Table.

 

 В отличие от компонента Table, набор данных Query может включать в себя записи более чем одной таблицы БД. Текст запроса, на основании которого в набор данных отбираются записи, содержится в свойстве SQL типа TStrings. Запрос включает в себя команды на языке SQL и выполняется при открытии набора данных. Запрос SQL иногда называют SQL-программой.

 При формировании запроса на этапе разработки приложения можно использовать текстовый редактор, вызываемый через Инспектор объектов двойным щелчком в области значения свойства SQL.

 SQL-запрос также можно формировать и изменять динамически, внося изменения в его текст (значение свойства SQL компонента Query) непосредственно при выполнении приложения.

Замечание

 В процессе формирования SQL-запроса проверка его правильности не производится, и если в запросе имеются ошибки, то они выявляются только при открытии набора данных. Одним из вариантов предотвращения ошибок в SQL-запросе является его предварительная отладка, например, с помощью программы Database Desktop.

 Компонент Query обеспечивает выполнение SQL-запроса и является набором данных, который формируется на основе этого запроса. Формирование набора данных выполняется при активизации компонента Query вызовом метода open или установкой свойству Active значения True. В ряде случаев при выполнении SQL-запроса не требуется возвращать набор данных, например, при удалении, вставке или модификации записей. В этом случае предпочтительнее выполнять запрос компонента Query не его открытием, а вызовом метода ExecSQL. При работе в сети вызов метода ExecSQL выполняет требуемую модификацию набора данных, не передавая в вызывающее приложение (компьютер) записи набора данных, что заметно снижает нагрузку на сеть.

 Компонент Query может быть связан с таблицей БД или напрямую, или содержать копии отобранных записей таблицы, доступные для чтения. Вид взаимодействия определяется свойством RequestLive типа Boolean. По умолчанию свойство имеет значение False, и набор данных Query доступен только для чтения. Если пользователю или программисту требуется возможность редактирования записей, то свойству RequestLive нужно установить значение True. В этом случае набор данных Query напрямую связывается с соответствующей таблицей, аналогично набору данных Table.

 Чтобы получить в результате выполнения SQL-запроса редактируемый набор данных, кроме установки свойству RequestLive значения True, должны быть выполнены следующие условия:

 1. данные отбираются только из одной таблицы или просмотра;

 2. таблица или просмотр допускают модификацию;

 

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

 Существуют следующие два способа задания состава полей набора данных:

 1. по умолчанию (динамические поля);

 2. с помощью редактора полей (статические поля).

 

 По умолчанию при каждом открытии набора данных как на этапе проектирования, так и на этапе выполнения приложения для каждого поля набора автоматически создается свой объект типа TField. В этом случае мы имеем дело с динамическими полями, достоинством которых является корректность отображения структуры набора данных даже при ее изменении. Напомним, что для компонента Table состав полей определяется структурой таблицы, с которой этот компонент связан, а для компонента Query состав полей зависит от SQL-запроса.

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

 Поэтому при необходимости этих операций следует использовать второй способ задания состава полей. На этапе разработки приложения с помощью Редактора полей можно создавать для набора данных статические (устойчивые) поля, основные достоинства которых состоят в реализации следующих возможностей:

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

 2. ограничение состава полей набора данных;

 3. изменение порядка полей набора данных;

 4. скрытие или показ отдельных полей при выполнении приложения;

 5. задание формата отображения или редактирования данных поля на этапе разработки приложения.

 

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

 

Редактор полей

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

 Во время выполнения приложения определить вид полей набора данных можно с помощью свойства DefaultFields типа Boolean. Если его значение равно True, то набор данных имеет поля по умолчанию, т. е. динамические, в противном случае для набора данных заданы статические поля.

 Для запуска Редактора полей следует дважды щелкнуть на компоненте Table или Query или вызвать правой кнопкой мыши для этих компонентов контекстное меню и выбрать пункт Fields Editor.... Большую часть Редактора занимает список статических полей, при этом поля перечисляются в порядке их создания, который может отличаться от порядка полей в таблице БД.

 Первоначально список статических полей пуст, указывая, что все поля набора данных являются динамическими. С помощью Редактора полей разработчик может выполнить следующие операции:

 1. создать новое статическое поле;

 2. удалить статическое поле;

 3. изменить порядок следования статических полей.

 Кроме того, для любого выбранного в редакторе статического поля с помощью Инспектора объектов возможно задание или изменение свойств этого поля (объекта типа TField) и определение обработчиков его событий. Подобные действия разрешается производить благодаря тому, что соответствующие статическим полям объекты типа TField доступны на этапе разработки приложения.

 Для создания статического поля следует вызвать контекстное меню Редактора полей и выбрать пункт Add Fields (Добавить поля), в результате чего появляется диалоговое окно добавления новых полей. В списке Available fields (Доступные поля) окна содержатся все те поля набора данных, которые еще не являются статическими. После выбора одного или нескольких полей и нажатия кнопки ОК эти поля добавляются в состав статических полей набора данных. Добавленное статическое поле является полем данных и связано с конкретным физическим полем таблицы БД. Для добавления в список всех физических полей таблицы (для набора данных Table) или результата выполнения SQL-запроса (для набора данных Query) нужно выбрать в контекстном меню Редактора полей пункт Add all Fields (Добавить все поля).

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

 Существует три типа статических полей:

 1. поле данных, связанное с соответствующим физическим полем таблицы;

 2. вычисляемое поле, значение которого рассчитывается в обработчике события onCalcFields во время выполнения приложения;

 3. поле выбора, значение которого можно выбирать из списка, формируемого на основе заданных критериев и правил.

 Для создания нового статического поля любого типа нужно выбрать в контекстном меню Редактора полей пункт New Field..., в результате чего открывается одноименное диалоговое окно.

 Для задания общих свойств (параметров) нового поля используется группа управляющих элементов Field properties (Свойства поля). В строке Name задается значение свойства FieldName, являющееся именем поля, а в строке Component — значение свойства Name, являющееся названием компонента (объекта типа TField) поля. При программировании обычно используется имя поля. Значение в строке Component формируется Delphi автоматически, и попытка изменить его не приводит к желаемому результату. В панелях Туре и Size указываются тип данных и размер поля. Тип данных обязательно задается для всех полей, а необходимость задания размера зависит от типа данных. Например, для поля с типом данных integer задание размера не имеет смысла, а для типа string размер поля ограничивает максимальную длину строки.

 Тип нового поля выбирается с помощью группы переключателей Field type из следующих вариантов:

 1. Data — поле данных;

 2. Calculated — вычисляемое поле;

 3. Lookup — поле выбора.

 В группе Lookup definition (Определение выбора) для поля выбора устанавливаются такие параметры, как набор данных и поля связи, а также поля для формирования списка выбора и результата.

 После создания нового статического поля его свойства становятся доступными через Инспектор объектов и могут быть изменены.

 

Источник данных

 Источник данных используется как промежуточное звено между набором данных и визуальными компонентами, с помощью которых пользователь управляет этим набором данных. В Delphi источник данных представлен компонентом DataSource.

 Для указания набора данных, с которым связан источник данных, служит свойство DataSet типа TDataSet последнего. Визуальные компоненты связаны с источником данных через свои свойства DataSource. Обычно связь между источником и набором данных устанавливается на этапе проектирования в Инспек торе объектов, однако при необходимости эту связь можно установить или разорвать динамически. При смене у компонента DataSource набора данных визуальные компоненты автоматически подключаются к новому набору данных.

3.8.3 Особенности размещения и использования свойств и методов компонентов доступа к данным

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

Замечание

 При изменении порядка сортировки или фильтрации нумерация записей также изменяется.

 Для выполнения операций с наборами данных используются два способа доступа к данным:

 1. навигационный;

 2. реляционный.

 Навигационный способ доступа заключается в обработке каждой отдельной записи набора данных. Этот способ обычно используется в локальных БД или в удаленных БД небольшого размера. При навигационном способе доступа каждый набор данных имеет невидимый указатель текущей записи. Указатель определяет запись, с которой могут выполняться такие операции, как редактирование или удаление. Поля текущей записи доступны для просмотра. Например, компоненты DBEdit и DBText отображают содержимое соответствующих полей именно текущей записи. Компонент DBGrid указывает текущую запись с помощью специального маркера.

 В разрабатываемом приложении навигационный способ доступа к данным можно реализовать, используя любой из компонентов таblе или Query.

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

 Реляционный способ доступа к данным в приложении можно реализовать с помощью компонента Query.

Состояния наборов данных

 Наборы данных могут находиться в открытом или закрытом состояниях, на что указывает свойство Active типа Boolean. Если свойству Active установлено значение True, то набор данных открыт. Открытый компонент Table содержит набор данных, соответствующий данным таблицы, связанной с ним через свойство TableName. Для открытого компонента Query набор данных соответствует результатам выполнения SQL-запроса, содержащегося в свойстве SQL этого компонента. Если свойство Active имеет значение False (по умолчанию), то набор данных закрыт, и его связь с БД разорвана. Набор данных может быть открыт на этапе разработки приложения. Если при этом к набору данных через источник данных DataSource подключены визуальные компоненты, например, DBGrid или DBEdit, то они отображают соответствующие данные таблицу БД.

 Если по каким-либо причинам открытие набора данных невозможно, то при попытке установить свойству Active значение True выдается сообщение об ошибке, а свойство Active сохраняет значение False. Одной из причин невозможности открытия набора данных может являться неправильное значение свойства TableName или SQL.

 Управлять состоянием набора данных можно также с помощью методов open и Close.

 Процедура open открывает набор данных, ее вызов эквивалентен установке свойству Active значения True. При вызове метода Open генерируются события BeforeOpen и AfterOpen типа TDataSetNotifyEvent и соответственно вызываются процедуры-обработчики этих событий.

 Процедура close закрывает набор данных, ее вызов эквивалентен установке свойству Active значения False. При вызове метода close генерируются события Beforeciose и Afterdose типа TDataSetNotifyEvent, а также вызываются процедуры-обработчики этих событий.

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

 Событие AfterOpen генерируется сразу после открытия набора данных. Это событие можно использовать, например, для выдачи пользователю сообщения о возможности работы с данными.

 Отметим, что закрытие набора данных автоматически не сохраняет текущую запись, т. е. если набор данных при закрытии находился в режимах редактирования или вставки, то произведенные изменения данных в текущей записи будут потеряны. Поэтому перед закрытием набора данных нужно проверять его режим и при необходимости принудительно вызывать метод Post, сохраняющий сделанные изменения. Одним из вариантов сохранения изменений является вызов метода Post в обработчике события Beforeciose, возникающего непосредственно перед закрытием набора данных. Событие Afterciose возникает сразу после закрытия набора данных, и его можно использовать для выдачи пользователю соответствующих сообщений.

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

Режимы наборов данных

 Наборы данных могут находиться в различных режимах. Текущий режим набора данных определяется свойством state типа TDataSetstate, которое доступно для чтения во время выполнения приложения. Для перевода набора данных в требуемый режим используются специальные методы. Они могут вызываться явно (указанием имени метода) или косвенно (путем управления соответствующими визуальными компонентами, например, навигатором DBNavigator или сеткой DBGrid).

 Взаимосвязи между основными режимами наборов данных показаны ниже на рисунке, приведены также некоторые методы и свойства, с помощью которых набор данных переходит из одного режима в другой.

 

Раздел 4. Администрирование и эксплуатация удалённых БД

4.1 Установка привилегий доступа к данным

4.1.1 Состав параметров при установке привилегий. Назначение и отмена привилегий

Защита информации – комплекс мероприятий, направленных на обеспечение важнейших аспектов информационной безопасности (целостности, доступности и, если нужно, конфиденциальности информации и ресурсов, используемых для ввода, хранения, обработки и передачи данных).

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

Основными критериями оценки надежности являются: политика безопасности и гарантированность.

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

Гарантированность, являясь пассивным элементом защиты, отображает меру доверия, которое может быть оказано архитектуре и реализации системы (другими словами, показывает, насколько корректно выбраны механизмы, обеспечивающие безопасность системы).

Архитектура защиты Access

Вы можете указать пользователей, которым предоставляется или, наоборот, не разрешается доступ к



Поделиться:


Последнее изменение этой страницы: 2021-12-15; просмотров: 26; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.139.97.157 (0.126 с.)