Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009 (960530), страница 87
Текст из файла (страница 87)
Страница ADOЗамечаниеСоединение RDS служит для управления передачей объекта Recordset отодного процесса (компьютера) к другому при создании серверных приложений.На странице QReport (рис. 11.18) находятся компоненты, предназначенные для построения отчетов:• QuickRep (отчет);• QRSubDetail (полоса отчета для таблиц, связанных отношением «главный-подчиненный»);• QRStringsBand (строковая полоса отчета);• QRBand (полоса отчета);• QRChildBand (дочерняя полоса отчета);• QRGroup (группа);• QRLabel (надпись);• QRDBText (текстовое поле набора данных);• QRExpr (выражение);• QRSysData (системная информация);• QRMemo (многострочный текст);• QRExprMemo (многострочное выражение);• QRRichText (форматированный текст);• QRDBRichText (форматированный текст поля набора данных);• Q R S h a p e (геометрическая фигура);• QRImage (графический образ);Часть 3.
Современные СУБД и их применение412• QRDBImage(графический образ поля набора данных);(составной отчет);Q R P r e v i e w (окно просмотра отчета);Q R T e x t F i l t e r (текстовый фильтр);Q R C S V F i l t e r (CSV-фильтр);• QRCompositeReport•••• QRHTMLFilter ( H T M L - ф и л ь т р ) ;• QRChart ( д и а г р а м м а ) .[vices ] IntemetExraess | Internet | WebSnao | FastNet | Decision Cube QReport | Dialoas | Win3.11 Samotesl ActiveX | C 0 J i .Рис. 11.18. Страница QReportИмена многих компонентов, предназначенных для работы с данными, содержат префиксы, например, DB, IB или QR. Префикс DB означает, что визуальный компонент связан с данными и используется для построения интерф е й с н о й части п р и л о ж е н и я . Такие компоненты размещаются в ф о р м е ипредназначены для управления данными со стороны пользователя.
ПрефиксQ R означает, что компонент используется для построения отчетов Q R e p o r t .Исключенияпри работес базамиданныхВ дополнение к рассмотренным ранее исключениям, специально для операций, связанных с работой приложений для БД, система С++ Builder предоставляет следующие дополнительные классы исключений:• E D a t a b a s e E r r o r — ошибка БД; потомки этого класса:• EDBEngineError — ошибка B D E (для локальных Б Д и сетевых Б Д архитектуры «файл-сервер»);• E D B C I i e n t — ошибка в приложении клиента (для сетевых Б Д архитектуры «клиент-сервер»); код ошибки возвращается BDE, A D O ,dbExpress или другим механизмом доступа к данным;• E U p d a t e E r r o r — ошибка, возникающая при обновлении записей;• E D B E d i t E r r o r — введенное в поле значение не соответствует типу поля.Класс E D a t a b a s e E r r o r предназначен для обработки ошибок, возникающих привыполнении операций с набором данных (класс T D a t a S e t и его потомки, в первую очередь, T T a b l e и T Q u e r y ) .
Этот класс производится непосредственно откласса E x c e p t i o n . Исключение класса E D a t a b a s e E r r o r генерируется, например,при попытке открыть набор данных, связанный с отсутствующей таблицей, илиизменить запись набора данных, который находится в режиме просмотра.Класс E D B E n g i n e E r r o r предназначен для обработки ошибок, возникающихпри работе с процессором баз данных B D E на локальном компьютере. КлассT D B E r r o r содержит информацию об исключении EDBEngineError, определяемую следующими свойствами:/ I.
Borland С++ Builder• Messageтипа413String(текст сообщения, характеризующего возникшуюошибку);• ErrorCodeтипутипаDBIResult(код ошибки), типDBIResultсоответствуетWord;• Categoryтипа B y t e (категория исключения);типа B y t e (группа, или подкод, исключения);• N a t i v e E r r o r типа L o n g i n t (код ошибки, возвращаемой сервером) — еслизначение этого свойства равно нулю, то исключение произошло не насервере.Класс E D B C I i e n t отличается от класса E D B E n g i n e E r r o r в основном тем, чтопредназначен для обработки ошибок, возникающих при работе с различными механизмами доступа к данным (не только с процессором баз данных BDE)в операциях с сетевыми базами архитектуры «клиент-сервер».Генерируемые при работе с БД исключения обрабатывают глобальные илокальные обработчики. Кроме того, используемые для доступа к даннымкомпоненты имеют специальные события для обработки исключений.Например, для набора данных T a b l e такими событиями являются:• O n E d i t E r r o r (ошибка редактирования или вставки записи);• O n P o s t E r r o r и O n U p d a t e E r r o r (ошибка закрепления изменений в записи);• OnDeleteError (ошибка удаления записи).Класс E D B E d i t E r r o r используется в случаях, когда вводимые в поле данные несовместимы с маской ввода, заданной с помощью свойства EditMaskэтого поля.
Отметим, что для проверки вводимых в поле значений можно также использовать события O n S e t T e x t , O n V a l i d a t e и O n C h a n g e .• SubCode1 1 . 7 . Создание таблиц базы данныхРабота по созданию информационной системы включает два основныхэтапа: создание БД и создание приложения. Продемонстрируем возможности С++ Builder по работе с БД на примере создания простой информационной системы. Эту информационную систему можно разработать даже без написания кода: все необходимые операции выполняются с помощью программыDatabase Desktop, Конструктора формы и Инспектора объектов.В простейшем случае БД состоит из одной таблицы.
Если таблицы ужеимеются, то первый этап не выполняется. Отметим, что совместно с С++Builder поставляется большое количество примеров приложений, в том числе и приложений БД. Файлы таблиц для этих приложений находятся в каталоге c:\Program Files\Common Files\Borland Shared\Data. Готовые таблицытакже можно использовать для своих приложений.Для работы с таблицами БД при проектировании приложения удобно использовать программу Database Desktop, которая позволяет:Часть 3. Современные СУБД и их применение414• создавать таблицы;• изменять структуры;• редактировать записи.Кроме того, с помощью Database Desktop можно выполнять и другие действия над БД (создание, редактирование и выполнение визуальных и SQLзапросов, операции с псевдонимами). Отметим, что большинство рассматриваемых действий по управлению структурой таблицы можно выполнить такжепрограммно.Процесс создания новой таблицы начинается с вызова командыF i l e \ N e w \ T a b l e ( Ф а й л \ Н о в а я \ Т а б л и ц а ) и происходит в интерактивном режиме.
При этом разработчик должен:• выбрать формат (тип) таблицы;• задать структуру таблицы.В начале создания новой таблицы в окне C r e a t e Table ( С о з д а н и е т а б л и ц ы )выбирается ее формат. По умолчанию предлагается формат таблицы Paradoxверсии 7, который мы и будем использовать. Для таблиц других форматов, например dBase IV, действия по созданию таблицы практически не отличаются.После выбора формата таблицы появляется окно определения структурытаблицы (рис. 11.19), в котором выполняются следующие действия:Restructure Paradox 7 Table: aaaaa.dbField roster:Table properties:Field NameCodeNumber3 j FioA\ AddressTypeSizeKey]Secondary Indexes+S;""'j|^ine.r'"'i|AAind 1Modify....Г" Pack TableSaveSave As...CancelРис.
11.19. Определение структуры таблицыHelp|/ I. Borland С++ Builder415• описание нолей;• задание ключа;• задание индексов;• определение ограничений на значения полей;• определение условий (ограничений) ссылочной целостности;• задание паролей;• задание языкового драйвера;• задание таблицы для выбора значений.В этом списке обязательным является только первое действие, т. е. каждаятаблица должна иметь хотя бы одно поле. Остальные действия выполняютсяпри необходимости.
Часть действий, такие как задание ключа и паролей, производится только для таблиц определенных форматов, например, для таблицParadox.После определения структуры таблицы ее необходимо сохранить, нажавкнопку S a v e A s и указав расположение таблицы на диске и ее имя. В результате па диск записывается новая таблица, первоначально пустая, при этомвсе необходимые файлы создаются автоматически.ОписаниеполейЦентральной частью окна определения структуры таблицы является список F i e l d r o s t e r ( С п и с о к п о л е й ) , в котором указываются поля таблицы.
Д л якаждого поля задаются:• имя поля — в столбце F i e l d N a m e ;• тип поля — в столбце Туре;• размер поля — в столбце S i z e .И м я поля вводится по правилам, установленным для выбранного формата таблиц.Тип поля можно задать, непосредственно указав соответствующий символ, например, А для символьного или I для целочисленного поля, или выбрать его в списке, раскрываемом нажатием клавиши <пробел> или щелчкомправой кнопки мыши в столбце Туре.