Разное

Пример базы данных в делфи: Создание простой базы данных на Delphi7

Содержание

Встроенная Delphi база данных (часть 1)

Здравствуйте Delphi’сты и им сочувствующие.

     В комплекте с Delphi 7 поставляются сразу несколько библиотек для работы с базами данных (ADO, BDE, dbExpress, InterBase и др.). Для того чтобы создать приложение, работающее с локальной базой данных, то вы обычно используете библиотеку BDE. Эта библиотека создана компанией Borland и уже порядком устарела. Но без определённой подготовки операционной системы эти компоненты работать не будут. Есть альтернатива этим компонентам.

     Существует автономный компонент TClientDataSet который использует свой собственный формат данных.

    Итак, переходим к практике. Компонент TClientDataSet использует файлы с расширением *.CDS и *.XML мы будем рассматривать формат CDS, так как XML формат занимает вдвое больше места на диске и такой файл легко можно изменить, открыв его через блокнот. Этот компонент при создании проецирует файл в память и модифицирует только память, а при уничтожении данные записываются в файл целиком. Путь к файлу определяет свойство FileName. Файлы формата CDS можно найти в папке program files\Common Files\Borland Shared\Data. Давайте сначала откроем один из них. Скопируем один из них в папку c:\data .

    Кидаем на форму 4 компонента
    1.  TClientDataSet
    2.  TDataSource
    3.  TDBGrid
    4.  TDBNavigator

    В результате :
    1.  DataSource1
    2.  ClientDataSet1
    3.  DBGrid1
    4.  DBNavigator1

    Настраиваем их свойства так чтобы получилось примерно так:
    DBNavigator1.DataSource = DataSource1
    DBGrid1.DataSource = DataSource1
    DataSource1.DataSet = ClientDataSet1
    ClientDataSet1.FileName = ‘D:\111\www\customer.cds’
    ClientDataSet1.Active = True (самое главное этого не забыть :-))

    И всё готово. Вы сразу у меня спросите: «А как создать новую таблицу?».


     Всё очень просто даже не нужно НИКАКИХ дополнительных программ, только компонент TClientDataSet и конечно Delphi.

    1.  Создаём новый проект (можно даже его не сохранять) и добавляем на форму компонент TClientDataSet.
    2.  Сначала определим структуру таблицы. Для этого открываем свойство FieldDefs нашего компонента. Открывается окно «Editing ClientDataSet1.FieldDefs» жмём «добавить новый», и определяем свойства поля (тип, формат, размер и т.д.).
    3.  Теперь самое главное. Щёлкаем правой кнопкой мыши на компоненте TClientDataSet и выбираем пункт CreateDataSet. Потом ещё раз открываем контекстное меню и выбираем пункт «Save to binary MyBase file» и сохраняем файл туда, куда нам надо.

     Всё готово теперь у нас есть файл CDS. Можно закрывать данный проект и создавать новый, так как это было показано выше. Изменяете его, как хотите, добавляйте, удаляйте, изменяйте короче как обычно. Как модифицировать файл программно и фильтровать и индексировать записи, я вам расскажу позже.

Базы данных в Delphi

Практика разработки БД.

Дмитрий Осипов » Базы данных и Delphi. Теория и практика» БХВ-Петербург, 2011 год, 752 стр. (16,6 мб. pdf)

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

Также рассмотрены вопросы безопасности БД, языки SQL и XML и др. Вторая часть расскажет о возможностях программных инструментов Delphi в области разработки приложений баз данных: технологии dbExpress, Interbase Express и ADO, работа с компонентами управления данными визуальной библиотеки Delphi, техническими возможностями многоуровневых приложений в DataSnap, отчеты и др. Книга полезна в качестве практического руководства по разработке и использованию БД с клиентскими приложениями.
ISBN 978-5-9775-0659-5

 

Оглавление.

ЧАСТЬ I. Введение в реляционные базы данных 5
ГЛАВА 1. Системы, основанные на файлах 7
Принцип построения систем, основанных на файлах 9
Недостатки систем, основанных на файлах 10
Пути устранения недостатков систем, основанных на файлах 13
Резюме 14

ГЛАВА 2. Эволюция моделей реализации данных 15
Необходимость моделирования 17
Иерархическая модель18
Сетевая модель 20
Попытки разработки стандарта БД 21
Реляционная модель 23
Объектно-ориентированная модель 25
Резюме 26

ГЛАВА 3. Функции и компоненты субд 27
Функциональные обязанности СУБД 27
Компоненты СУБД 29
Архитектурные решения доступа к БД 32
Файл-сервер 32
Клиент-сервер 34
Многоуровневые решения 36
Резюме 37

ГЛАВА 4. Реляционная модель данных 38
Сущность и атрибуты 39
Тип данных и домен 41
Связь 43
Реляционная таблица 45
Ключ 47
Целостность данных 48
Целостность доменов 48
Целостность сущностей 49
Ссылочная целостность 50
Корпоративная целостность 50
Реляционная алгебра 51
Резюме 56

ГЛАВА 5. Модель «сущность — связь» 57
Сущности и атрибуты в ER-модели 58
Подтипы сущностей 61
Связи в ER-модели 63
Сильные и слабые связи 66
Рекурсивная связь 67
Связи высокого порядка 68
Вариации ER-моделей 70
Резюме 72

ГЛАВА 6. Нормализация 73
Первая нормальная форма 76
Функциональная зависимость атрибутов 79
Порядок определения первичного ключа 81
Вторая нормальная форма 82
Третья нормальная форма 84
Нормальная форма Бойса—Кодда 86
Четвертая нормальная форма 87
Пятая нормальная форма 88
Резюме 90

ГЛАВА 7. Индексирование 91
Индексы на основе хеширования 93
Хеш-функции 95
Хеширование текстовых данных 96
Борьба с коллизиями 96
Индексы на основе B-деревьев 98
Битовые индексы 103
Правила назначения вторичных индексов 103
Резюме 104

ГЛАВА 8. Транзакции и параллельная обработка данных 105
Понятие транзакции 106
Проблемы параллельного доступа к данным 108
Потерянные обновления 108
Неактуальные чтения («грязное чтение») 109
Несогласованная обработка 110
Чтение строк-фантомов 111
Управление параллельными транзакциями 112
Метод блокировок 113
Метод временных меток 115
Метод двухфазной блокировки 116
Оптимистический подход 116
Уровни изоляции SQL-транзакций 117
Резюме 118

ГЛАВА 9. Проектирование БД 119
Понятие информационной системы 119
Этапы жизненного цикла базы данных 122
Планирование разработки БД 123
Определение и анализ требований к системе 123
Проектирование БД 127
Выбор СУБД 130
Создание прикладного программного обеспечения 131
Тестирование 132
Реализация 133
Эксплуатация и сопровождение 133
Резюме 134

ГЛАВА 10. Защита БД 135
Откуда исходят угрозы 136
Правила защиты БД 139
Аутентификация и авторизация 140
Криптографическая защита 141
Резервное копирование 143
Аудит событий безопасности 144
Модернизация системного и прикладного ПО 145
Доступ к данным только при посредничестве представлений и хранимых процедур 145
Резюме 146

ГЛАВА 11. Знакомство с SQL 147
Назначение SQL 149
Типы данных SQL 150
Предопределенные типы данных 152
Непредопределенные типы данных 157
Массив 158
Мультимножество 158
Пользовательский тип 159
Другие типы 160
Определение констант 160
Преобразование данных 161
Операторы 162
Встроенные функции 163
Резюме 164

ГЛАВА 12. Построение запросов 165
Порядок сортировки — ORDER BY 167
Условие отбора данных — WHERE 167
Сравнение 168
Попадание в диапазон — BETWEEN 169
Соответствие шаблону — LIKE 169
Проверка неопределенного значения — IS NULL 170
Принадлежность множеству — IN, ALL, ANY, SOME 170
Предикат существования — EXISTS 171
Многотабличные запросы 171
Слияние UNION 173
Объединение ON 173
Объединение USING 176
Агрегирующие функции 176
Группировка данных — GROUP BY 177
Дополнительная фильтрация группы строк — HAVING 178
Оконные функции 178
Рекурсивные запросы 182
Резюме 184

ГЛАВА 13. Манипулирование данными и управление транзакциями 185
Язык манипулирования данными DML 185
Вставка, инструкция INSERT 185
Редактирование, инструкция UPDATE 187
Удаление, инструкция DELETE 188
Слияние данных, инструкция MERGE 190
Транзакции 191
Диагностирование ошибок в работе транзакции 194
Настройка уровня изоляции 196
Резюме 197

ГЛАВА 14. Определение данных в SQL 198
Базы данных (схемы) 198
Таблицы 200
Индексы 205
Домены 208
Представления (виртуальные таблицы) 209
Хранимые процедуры 210
Триггеры 212
Курсоры 217
Управление доступом к данным 220
Управление наборами привилегий 221
Предоставление привилегий 222
Лишение привилегий 224
Резюме 225

ГЛАВА 15. Основы XML 226
Правильность и допустимость документа 229
Построение простейшего документа XML 229
Элементы 230
Специальные символы 232
Атрибуты 232
Пространство имен 233
Определение документа 236
DTD 236
Хранение DTD во внешнем файле 240
Резюме 242

ГЛАВА 16. XML schemas 243
Определение элемента <element> 246
Тип данных 248
Производные типы <simpleType> 248
Глобальное и локальное объявление 252
Квалифицирование элемента 252
Ограничения на число элементов 253
Значение по умолчанию и фиксированное значение 253
Создание сложных структур <complexType> 254
Определение атрибута <attribute> 256
Подключение XML-схемы к документу 257
Пример схемы computers.xsd 258
Пример документа computers.xml 261
Резюме 262

ЧАСТЬ II. Проектирование приложений БД в Delphi 263
ГЛАВА 17. Концепция приложения БД Delphi 265
Пример простейшего приложения БД 265
Архитектура приложения БД 269
Общая характеристика компонентов соединения с БД 271
Общая характеристика компонентов наборов данных 271
Источник данных 273
Общая характеристика компонентов управления данными 274
Резюме 275

ГЛАВА 18. Универсальный набор данных tdataset 276
Функционал набора данных 278
Открытие и закрытие набора данных 278
Обновление набора данных 279
Перемещение по набору данных 280
Создание закладок и переход к закладке 282
Состояние набора данных 284
Редактирование записей в наборе 286
Организация доступа к отдельному полю 288
Вычисляемые поля 290
Агрегатное поле 290
Фильтрация набора данных 291
Организация поиска данных 292
Обработка событий 294
Кэширование данных 295
Взаимодействие с элементами управления 296
Резюме 297

ГЛАВА 19. Общая характеристика полей набора данных 298
Поле таблицы — класс TField 298
Классификация полей по функциональному назначению 301
Классификация полей по типу хранимых данных 301
Обращение к полю 303
Доступ к данным поля 304
Низкоуровневый доступ к данным 306
Преобразование типа данных 307
Размер поля 308
Значение по умолчанию 309
Ограничения на ввод данных 310
Маска ввода 311
Индексные поля 312
Отображение данных 312
Обработка событий 314
Поля подстановки 315
Вычисляемые поля 322
Числовые поля, класс TNumericField 324
Поля целых чисел TLargeintField, TIntegerField, TSmallintField, TWordField, TAutoIncField 326
Поля вещественных чисел TFloatField и TCurrencyField 326
Бинарно-кодированные десятичные поля TBCDField и TFMTBCDField 327
Текстовые поля, TStringField 328
Поле глобального идентификатора, TGuidField 329
Логическое поле, TBooleanField 330
Бинарные поля TBinaryField, TBytesField и TVarBytesField 330
Дата и время, поля TDateTimeField, TDateField и TTimeField 330
Дата и время, поле TSQLTimeStampField 331
Поля больших бинарных объектов, TBlobField, TGraphicField, TMemoField и TWildMemoField 331
Композитные поля, TObjectField 338
Резюме 340

ГЛАВА 20. Вспомогательные классы набора данных 341
Коллекция TParams и динамический SQL 341
Параметр TParam 344
Описание структуры таблицы и ее индексов 347
Коллекция полей структуры таблицы TFieldDefs 349
Определение поля, класс TFieldDef 351
Коллекция структуры индексов таблицы, класс TIndexDefs 352
Определение индекса, класс TIndexDef 353
Пример создания таблицы 354
Резюме 356

ГЛАВА 21. Клиентский набор данных TClientDATASet 357
Проекты БД, основанные на файлах 358
Загрузка и сохранение данных 361
Требования к структуре XML 365
Хранение данных в компоненте 366
Управление данными 367
Работа с индексами 370
Определение диапазона 373
Ограничения 376
Применение агрегирующих функций 376
Агрегат, класс TAggregate 377
Агрегатные поля TAggregateField 378
Место TClientDataSet в многоуровневых проектах БД 379
Работа в клиентских приложениях DataSnap ранних версий 380
Сохранение данных на сервере 381
Отмена изменений 382
Применение точек сохранения 383
Обработка ошибок 383
Оптимизация пакета с данными 385
Обновление данных 386
Выполнение команд SQL 387
Резюме 387

ГЛАВА 22. Введение в технологию ADO 388
Взаимодействие ADO и компонентов VCL 389
Строка соединения ADO 392
Соединение с хранилищем данных, компонент TADOConnection 393
Установка соединения 393
Пример соединения без регистрации пользователя 397
Регистрация пользователя 402
Разрыв соединения 408
Информирование о соединении 408
Отправка команд 410
Управление подчиненными компонентами dbGo 413
Транзакции 413
Кэширование 415
Сервисные методы модуля ADODB 416
Резюме 418

ГЛАВА 23. Наборы данных ADO 419
Командный объект — TADOCommand 419
Коллекция ошибок Errors и объект ошибки Error 424
Набор данных ADO, компонент TADODataSet 425
Интерфейс множества записей _Recordset 426
Доступ к хранилищу данных 427
Выбор библиотеки курсора 428
Редактирование данных 429
Перемещение по множеству строк 430
Особенности применения поля BCD 432
События TCustomADODataSet 432
Работа с индексами 436
Сортировка записей 436
Поиск данных 436
Особенности изоляции транзакций 437
Фильтрация множества записей 438
Кэширование записей 438
Фильтрация записей в кэше 440
Организация отложенного обновления данных в ADO 441
Портфельный режим обработки данных 443
Управление данными ADO в стиле Delphi 444
Таблица TADOTable 445
Организация отношения «главная – подчиненная таблица» 446
Запрос TADOQuery 448
Хранимая процедура TADOStoredProc 450
Резюме 452

ГЛАВА 24. Доступ к БД InterBase 453
Доступ к базе данных, компонент TIBDatabase 454
Выбор диалекта ISQL 455
Создание и уничтожение базы данных 456
Соединение с базой данных 457
Регистрация пользователя 459
Разрыв соединения 460
Информирование о составе БД 462
Управление транзакциями 463
Контроль за событиями 464
Совместная работа с SQL монитором 464
Транзакция, компонент TIBTransaction 465
Управление транзакцией 466
Тайм-аут транзакции 468
Диагностика состояния транзакции 469
Параметры транзакции 469
Информация об объектах БД, компонент TIBExtract 471
События InterBase, компонент TIBEvents 473
Информация о БД, компонент TIBDatabaseInfo 474
Монитор SQL, TSQLMonitor 476
Файл инициализации БД, TIBDataBaseINI 476
Резюме 478

ГЛАВА 25. Наборы данных InterBase 479
Инструкция SQL, компонент TIBSQL 480
Подготовка к работе 480
Обслуживание полученного набора данных 482
Наборы данных InterBase, компонент TIBDataSet 483
Подготовка к работе 483
Обработка событий 485
Генератор значений 486
Особенности редактирования данных 488
Работа в режиме кэширования обновлений 488
Перемещение по записям 490
Фильтрация данных 490
Запрос, компонент TIBQuery 491
Редактирование данных, доступных только для чтения 492
Хранимая процедура, компонент TIBStoredProc 492
Таблица, компонент TIBTable 494
Экспорт-импорт данных 494
Модифицируемый запрос, компонент TIBUpdateSQL 496
Диалог фильтрации, компонент TIBFilterDialog 498
Резюме 500

ГЛАВА 26. Администрирование сервера InterBase 501
Свойства сервера, TIBServerProperties 505
Сервис лицензирования, TIBLicensingService 510
Конфигурирование сервера, TIBConfigService 511
Ведение журнала транзакций 514
Протокол работы сервера, TIBLogService 517
Статистика, TIBStatisticalService 518
Проверка БД, TBDValidationService 520
Управление учетными записями, TIBSecurityService 522
Резервное копирование и восстановление, TIBBackupService и TIBRestoreService 528
Резюме 532

ГЛАВА 27. Технология доступа к данным DBexpress 533
Соединение с сервером БД, компонент TSQLConnection 534
Настройка компонента 535
Управление соединением 537
Создание БД 539
Создание подключения в Data Explorer 539
Пример подключения 542
Управление подчиненными наборами данных 547
Управление транзакциями 547
Выполнение SQL-инструкций 548
Ограничение числа выполняющихся инструкций 549
Информирование о БД 549
Аутентификация пользователя в DataSnap 551
Мониторинг работы программы, TSQLMonitor 551
Резюме 553

ГЛАВА 28. Наборы данных DBexpress 554
Базовый класс TCustomSQLDataSet 555
Формирование инструкций SQL 556
Получение системной информации 557
Набор данных dbExpress, компонент TSQLDataSet 561
Особенности обслуживания BLOB-полей 563
Таблица TSQLTable 563
Запрос TSQLQuery 565
Хранимая процедура TSQLStoredProc 565
Простой набор данных TSimpleDataSet 567
Резюме 569

ГЛАВА 29. Интерфейс приложения и компоненты Data Access 570
Источник данных — компонент TDataSource 570
Общие черты компонентов отображения данных 572
Сетка базы данных — компонент TDBGrid 573
Одновременный выбор нескольких строк 575
Колонки сетки 576
Коллекция колонок — класс TDBGridColumns 576
Колонка — класс TColumn 578
Обработка событий 582
События прорисовки данных 583
Статический текст — компонент TDBText 585
Строка ввода — компонент TDBEdit 586
Многострочный редактор — TDBMemo 587
Редактор расширенного формата — TDBRichEdit 588
Изображение — компонент TDBImage 588
Список — TDBListBox 589
Комбинированный список — TDBComboBox 590
Группа переключателей — TDBRadioGroup 590
Флажок — TDBCheckBox 591
Компонент — TDBCtrlGrid 591
Поля подстановки 594
Список подстановки — TDBLookupListBox 595
Комбинированный список подстановки — TDBLookupComboBox 596
Навигатор — TDBNavigator 596
Резюме 598

ГЛАВА 30. Нестандартные решения для стандартных компонентов 599
Компоненты-списки 599
Компонент TListView 604
Сетка, компонент TStringGrid 607
Иерархические данные 610
Многотабличное представление иерархических данных 610
Рекурсивная связь 611
Инициализация проекта 614
Новая запись 615
Сбор данных 617
Очистка данных 618
Редактирование записи 619
Удаление записи 620
Сортировка узлов 621
Переподчинение узлов 623
Резюме 628

ГЛАВА 31. Многоуровневые БД на основе DataSnap 629
Архитектура трехзвенного проекта БД DataSnap 630
Сервер TDSServer 633
Класс сервера TDSServerClass 637
Обмен данными между клиентом и сервером, компоненты TDSTCPServerTransport и TDSHTTPService 638
Аутентификация, TDSHTTPServiceAuthenticationManager 641
Метод сервера TSqlServerMethod 641
Пример проекта DataSnap 642
Регистрация службы 648
Подготовка клиентского приложения 649
Подключение сервера приложений к БД 651
Получение данных клиентским приложением 652
Реализация на сервере метода вставки новой записи 654
Доступ к методу вставки записи на стороне клиента 655
Архитектура DataSnap, совместимая со старыми клиентскими приложениями 655
Интерфейс IAPPServer 656
Провайдер набора данных, компонент TDataSetProvider 658
Подключение к провайдеру набора данных, компонент TDSProviderConnection 664
Клиентское приложение БД на основе IAppServer 665
Механизм обратного вызова 666
Резюме 669

ГЛАВА 32. Управление службой сервера приложений DataSnap 670
Менеджер управления службами 671
Работа со службой 672
Пример управляющего приложения SCP 673
Доработка сервиса DataSnap 680
Создание модуля панели управления 682
Резюме 686

ГЛАВА 33. Отчеты Rave Reports 687
Обзор компонентов Rave Reports 687
Соединение TRvCustomConnection 688
Проект TRvProject 688
Системный компонент TRvSystem 689
Компоненты экспорта отчета в файл 690
Пример работы с редактором Rave Reports 690
Вызов отчета из приложения 696
Резюме 697

ГЛАВА 34. Разработка динамических библиотек для проектов БД 698
Общая характеристика DLL 698
Создание шаблона динамической библиотеки в Delphi 700
Экспортирование функций DLL 702
Пример простой DLL 703
Взаимодействие динамической библиотеки с проектом 704
Размещение файла DLL 705
Явная загрузка DLL 705
Неявная загрузка DLL 706
Пример DLL универсального генератора отчетов 707
Резюме 712
Скачать книгу бесплатно16,6 мб. pdf

Похожая литература

173

https://www.htbook.ru/kompjutery_i_seti/programmirovanie/bazy-dannyh-v-delphiБазы данных в Delphihttps://www.htbook.ru/wp-content/uploads/2016/12/Bazy-dannyh-Delphi-Teoriya-praktika.jpghttps://www.htbook.ru/wp-content/uploads/2016/12/Bazy-dannyh-Delphi-Teoriya-praktika.jpgПрограммирование и БДDelphi,ПрограммированиеПрактика разработки БД. Дмитрий Осипов ‘ Базы данных и Delphi. Теория и практика’ БХВ-Петербург, 2011 год, 752 стр. (16,6 мб. pdf) Книга расскажет о том, как разрабатывать базы данных в Delphi. Представленная информация основана на теоретических лекциях и практических занятиях, автора книги. Изложены теоретические вопросы и практическая концепция создания и использования…SomМихаил Михайлов[email protected]Техническая литература

14.1.2. Delphi и базы данных

Для работы с базами в Delphi есть несколько наборов компонентов. Каждый набор очень хорошо подходит для решения определенного круга задач. Почему такое разнообразие компонентов? Все они используют разные технологии доступа к данным и отличаются по своим возможностям. Microsoft встроила в свои продукты разработки только технологию доступа к данным ADO, собственной разработки. Фирма Borland предоставила разнообразные средства, работающие через разные технологии, и не ограничивает программиста только своими разработками. Такое положение вещей дает громадные преимущества. Помимо этого, есть группы компонентов, которые могут использоваться в любом случае.

Произведем краткий обзор имеющихся средств доступа к базам данных.

— На вкладке Data Access расположены основные компоненты доступа к данным. Эти компоненты общие для всех и могут использоваться совместно с другими группами компонентов

.

— На вкладке Data Controls расположены компоненты для отображения и редактирования данных в таблицах. Эти компоненты так же используются в независимости от используемой на данный момент технологии доступа к данным.

— Вкладка BDE содержит компоненты, позволяющие получить доступ к базам данных по технологии, разработанной фирмой Borland, под названием Borland Database Engine. Эта технология сильно устарела и поставляется только для учета совместимости со старыми версиями. Несмотря на это, она хорошо работает с устаревшими типами баз данных, например, такими как Paradox и dBase.

— DBExpress это новая технология доступа к данным фирмы Borland.

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

Компоненты с одноименной вкладки желательно использовать с базами данных, построенных по серверной технологии, например, Oracle, DB2 или MySQL.

— ADO (Active Data Objects) — технология доступа к данным, разработанная корпорацией Microsoft. Очень хорошая библиотека, но использовать ее желательно только с базами данных Microsoft, а именно MS Access или MS SQL Server. Ее также можно использовать, если у вас специфичный сервер баз данных, который может работать только через ODBC.

( Совет )

Работа с базами данных Access идет через специальную надстройку DАО, которая может устанавливаться на компьютер вместе с программой Office или идти как отдельная установка. Так что если ваша программа не будет работать на компьютере клиента, то надо позаботиться об установке DАО и ADO на этот компьютер. На компакт-диске в папке DLL вы можете найти файл mdac_typ.exe, который устанавливает компоненты ADO версии 2.7. Это самые свежие компоненты на момент написания книги.

На данном этапе не ставится цель рассмотреть абсолютно все компоненты.

Однако информация по наиболее важным из них будет рассмотрена. Это обеспечит возможность писать профессиональные приложения для работы с базами данных.

14.2. Создание первой базы данных Access

Сейчас мы подробно рассмотрим, как создавать и использовать базы данных Access. Для последующей работы необходимо, чтобы на вашем компьютере были установлены MS Office и его компонент MS Access. Именно в нем и будут создаваться РБД, а вот работать с ними мы будем уже из Delphi.

Запустите Access и выберите меню Файл | Создать. В мастере создания базы данных выберите пункт База данных и нажмите ОК. Вам предложат выбрать имя базы и место расположения, укажите, что угодно (например, файл Database.mdb).

После этого Access создаст базу и сохранит ее по указанному пути. Далее вы увидите окно, показанное на рис. 14.1, в котором и происходит работа с базой. С левой стороны окна находится колонка выбора объектов РБД, с которыми вы можете работать. Первым стоит пункт

Таблицы (он выделен по умолчанию), который и будет нас интересовать. Если этот объект у вас не выделен, выделите его.

Рис. 14.1. Окно управления базой данных

В окне справа находятся три пункта:

Создание таблицы в режиме конструктора;

— Создание таблицы с помощью мастера;

— Создание таблицы путем ввода данных.

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

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

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

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

Рис. 14.2. Пример простой таблицы

Рис. 14.3. Окно создания таблицы

Рассмотрим наиболее важные из них.

— Масксимальная длина поля. Для текстового поля размер не может быть больше 255. Если текст длиннее, то надо использовать Поле Memo.

— Формат поля. Здесь вы можете указать внешний вид данных. Например, поле может выглядеть как Yes / NO для логических полей, или — mm уууу для поля даты.

— Маска ввода. Здесь мы вводим маску, которая отвечает за отображение поля при редактировании. Если вы щелкнете мышью на кнопке с точка- ми — … — в строке Маска ввода, то увидите мастер создания маски.

— Значение по умолчанию. Указанное здесь значение будет использоваться, если пользователь не указал в поле каких-либо данных.

— Обязательное поле. Если пользователь не введет сюда значение, то появится сообщение об ошибке. Такое поле не может быть пустым.

— Пустые строки. Похоже на предыдущее поле, потому что оно тоже не может быть пустым.

Индексированное поле. Основной индекс всегда без допуска совпадений.

Остальные могут допускать двойные значения. Может быть:

• неиндексированным;

• индексированным с допуском совпадений;

• индексированным без допуска совпадений.

— Сжатие Юникод — позволяет сжать данные в соответствии с кодировкой Unicode.

Примечание

Почему город не строковый, ведь названия городов — это текст? Пока здесь не будет объясняться этот феномен, оставим его на потом. Чуть позже мы увидим, почему город должен быть числовым.

Помимо этого, у всех полей — Обязательное поле значение стоит в Нет, и в пустые строки выставлено Да. Если вы сделаете поле обязательным, то во всех строках обязательно должно быть заполнено соответствующее поле. Если вы запретите пустые строки (значение — Нет), то в указанном поле должно быть обязательно что-то введено, иначе произойдет ошибка. В реальных условиях, если какое-то поле обязательно должно иметь значение, то лучше сделать его обязательным. Не надо надеяться на добропорядочность пользователей, потому что они слишком часто подводят. Пусть лучше база данных следит за правильностью данных.

Теперь выделим первое поле (Кеу1). Щелкните правой кнопкой мыши и выберите пункт Ключевое поле. Задание ключевого поля является обязательным действием, если вы этого не сделаете, то таблица не сможет редактироваться, а это значит, что в нее нельзя будет добавлять строки.

Примечание

В Access при попытке сохранить таблицу без ключевого поля программа предлагает самостоятельно создать ключ. Если вы согласитесь, то таким полем будет первое по счету. Все, таблицу можно сохранять и закрывать. На вопрос: «Сохранить таблицу» отвечайте положительно и сохраните под именем Справочник.

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

Базы данных BDE InterBase ADO ODBC MySQL


  • л.р.1 — Проектирования БД на основе декомпозиции универсального отношения.(только теория и задание)
  • л.р.2 — Создание базы данных формата Paradox средствами Delphi (BDE)
  • л.р.3 — Применение технологии доступа к данным BDE среды программирования Delphi при создании приложения для работы с БД (BDE)
  • л. р.4 — Программирование приложения для работы с базами данных (BDE)
  • Цикл лабораторных работ по Interbase — 2011-12 г.
    • Работа 1 Создание, регистрация, подключение БД Interbase
    • Работа 2 Делфи — проект: интерфейс к БД Interbase
    • Работа 3 Создание генератора, триггера, хранимой процедуры
    • Работа 4 Создание хранимой процедуры (2-й пример)
    • Работа 5 Сортировка, поиск и фильтрация данных в БД и выборках
    • Работа 6 Кеширование изменений
    • Работа 7 Работа с отчетами — Quick Report
    • Работа 8 Установление привилегий доступа — GRANT
    • Работа 9 Резервное копирование (backup) и восстановление данных
    • Работа 10 DBImage, DBEdit, DBMemo на форме — для редактирования таблицы
    • Работа 11 Редактирование таблицы и простые запросы
  • л.р.5-0 Создать базу данных типа Interbase и приложение для работы с базой данных в архитектуре клиент-сервер. Эта работа по-моему, лучше чем л.р.5 и л.р.6, посвященных примерно этой же теме. Но возможно вы найдёте что-то полезное и в них.
  • л.р.5 — Разработка баз данных средствами SQL-сервера Interbase. Команды языка SQL для описания данных. Триггеры
    (Триггеры, созданные в БД Interbase работают, если SQL-запрос создан в IBConsole , SQL Explorer или Делфи-приложении и не работают, если для изменения данных применяется интерфейс вроде DBNavigator).
  • л.р.6 — Применение технологии доступа к данным Delphi – IBX при создани приложения для работы с БД.
    Команды языка SQL для манипулирования данными
  • л.р.7 — Разработка отчетов в Rave Reports 5.0
  • л.р.8 — Управление приложениями пакета MS Office Управление MS Word (вывод отчетов БД в MS Word )
  • л.р.9 — ADO -> ODBC -> MySQL

Здесь размещен цикл лабораторных работ по базам данных. Лаб.работы 1-8 содержат теоретические сведения, задание, контрольные вопросы и пример выполнения. Примеры — мои, остальное из неизвестного источника (методичка ВУЗа).
ADO -> ODBC -> MySQL — проект использует технологии ADO, ODBC для доступа к БД Аптека (MySQL). Базы данных для этого проекта — в комплекте, т е в ADO_2.rar.


Описание учебной базы данных

БД предназначена для обслуживания части функций деятельности Аптеки.

Таблица lek_list

хранит список лекарств. Поля:
Lek_id — номер лекарства, ID (первичный ключ),
Id_kategor — номер категории (группы). Внешний ключ — используется для связи с табл. kategorii
Nazvan1, Nazvan2, Nazvan3 — 3 поля для названия,
Cena — цена.

Таблица kategorii

хранит список категорий лекарств. Каждое лекарство относится к какой-либо категории. Поля:
Id_kategor — номер категории, ID (первичный ключ),
Kategor — название категории.

Таблица sklad

хранит сведения о хранении лекарств на складе. Поля:
Lek_id — номер лекарства, ID (первичный ключ),
Ostatok — количество лекарства на складе,
Stellaj — стеллаж (местонахождение), где хранится это лекарство.

Таблица ap_users

Список пользователей (клиентов), которые дистанционно заказывают лекарства в аптеке. Поля:
Id_users — номер клиента, ID (первичный ключ),
Name — имя,
Email — Email,
Pass — пароль,
Contactfio — имя контактного лица,
Id_country — номер (ID) страны клиента,
Pindex — почтовый индекс
City — город
Paddress — почтовый адрес,
Phone — телефон,
Fax — факс,
Etc — примечание (для курьера)

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



Скачать базы данных
( *.RAR, правый щелчок, выбрать: Сохранить объект как )
  • (Псевдоним — алиас — kassa4)
    связан с БД в папке BD_kassa. БД содержит проверку значений, индексы, проверку ссылочной целостности, пароли — все это в БД, т е на уровне BDE.
    Пароли:
    Для табл. ap_users, lek_list:
    — пароль допуска: krolik (Master password)- можно менять все.
    — slon — доступ к табл lek_list (Insert и delete), но недоступно поле pass.
    — zubr -> Тoлько для чтения все поля, а cena — полный доступ.
  • (алиас — kassa5)
    связан с БД в папке BD_kassa5 Нет проверок, индексов, проверок целостности, но есть пароли. Основной среди них: krolik
  • (алиас — kassa_ )
    связан с БД в папке BD_kassa_ — Нет проверок, индексов, проверок целостности, нет паролей.
  • (алиас — kassa6, файл KAS6.gdb )
    БД InterBase. Login= SYSDBA pass= masterkey
Для работы проектов необходимо:
  • BDE — для kassa4, kassa5, kassa_,
  • InterBase — для KAS6.gdb.
Все это обычно есть на инсталляционном диске Делфи7.

Цикл работ по Interbase + Delphi

  • Работа 1. Создание, регистрация, подключение БД Interbase (используется: IBConsole.exe)
  • Работа 2. Делфи — проект: интерфейс к БД Interbase (используется: IBConsole.exe, IBDatabase, IBTransaction, IBTable, DataSource, DBGrid, DBNavigator, IBQuery )
  • Работа 3. Создание генератора, триггера, хранимой процедуры (используется: IBConsole.exe, IBDatabase, IBTransaction, IBTable, DataSource, IBQuery, DBGrid, DBNavigator, IBStoredProc, IBStoredproc1.ParamByName, IBQuery1.ParamByName )
  • Работа 4. Создание хранимой процедуры, русских заголовков у DBGrid(используется: IBConsole.exe, IBDatabase, IBTransaction, IBTable, DataSource, IBQuery, DBGrid, DBNavigator, IBQuery.ParamByName )

DELPHI — Часто задаваемые вопросы и ответы на них

001 Не могу сделать выборку по строковым полям!

002 Конвертация DBF в DB

003 Суммирование по деревьям

004 SQL

005 У меня 3 пользователя по сетке используют одну и туже таблицу Paradox. Один из них внес изменение. Как правильно описать обнавление у всех остальных пользователей?

006 Иерархические структуры…

007 ADO и CORBA

008 Как сделать ProgressBar, отображающий ход события Query.Open?

009 Hе получается вставить в таблицу записи со строками на русском языке — некоторые буквы меняются на другие — что делать?

010 Почему при создании алиаса БД типа Microsoft Access 97 у меня BDE Administrator запрашивaет пароль, которого я, естественно, не знаю!

011 Быстрый доступ к нужной записи в таблице Paradox

012 Как по имени БазыДанных получить ссылку на компоненет TDataBase

013 Как создать таблицу базы данных, не используя Database Desktop?

014 Как послать на Delphi комманды SQL — DELETE и INSERT ?

015 ADO или RTF или ….

016 Русские слова в БД.

017 Вставить Combobox в DBGrid

018 [InterBase+Delphi] Refresh Query

019 Выдается такое сообщение: Error creating cursor handle.

020 База данных

021 Поиск в Большой БД:

022 Базы данных

023 Delphi and Outlook

024 Как создать базу данных Acceess во время выполнения

025 Как проверить инсталлирована ли BDE

026 Как получить список пользователей BDE

027 Как активизировать компоненты доступа к данным связанные с определенным TDatabase

028 Как полчить список связанных с TDatasource элементов управления

029 Мой запрос получает параметр. Проблема в том, что строка параметра содержит » (двойную кавычку), которая приводит к Runtime Error.

030 Вставить Combobox в DBGrid

031 Проблема совместимости BDE и ODBC

032 Проблема совместимости BDE и ODBC

033 Я делаю запрос по двум таблицам разных форматов, находящихся по разным псевдонимам. SELECT DB1.Column1, DB2.Column2 FROM :Alias1:DB1, :Alias2:DB2 но в результате получаю ошибку ‘неизвестный тип поля «Alias1:DB1″‘

034 Как узнать каталог, где находятся файлы базы данных, если знаем только алиас?

035 У меня есть TQuery и TDataSource. В свойстве SQL для TQuery я пишу SELECT * FROM dbo.AnyTable база данных на MS SQL Server. Когда я устанавливаю Active в True, то получаю ошибку: ‘Token not found. Token :dbo. line number:1’. Что не так?

036 Я безуспешно пытался использовать данные из Microsoft Access иначе, нежели просто с помощью TTable. Используя TQuery я могу только читать результат, но не могу редактировать. После «login screen» возникает сообщение типа ‘Passthrough SQL connection must be shared’.

037 Я хочу выполнить SQL-выражение и получить результат в свою переменную, что-то типаSELECT MAV(FieldA) FROM TableB INTO :VariableC;

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

039 Как узнать, что пользователь перешел на другую запись, например, в TDBGrid?

040 Как я могу выбрать на клиента только часть данных с определенной позиции из набора данных на сервере?

041 Каково определение IDAPI? Что такое SQL Links?

042 Hеобходим ли IDAPI для доступа к данным в Delphi? Можно ли включить IDAPI внутрь EXE, чтобы распространять программу без установки IDAPI на пользовательском компьютере?

043 Какой формат данных предпочесть в Delphi? dBase или Paradox?

044 Когда я применяю ApplyApdates на ClientDataSet, на серверной стороне не срабатывает событие OnNewRecord для оригинального набора данных. Как это исправить?

045 Предположим, что пользователь изменил строковое поле в Null. Как тогда я в обработчике OnUpdateData смогу определить, изменилось ли это поле на строку Null, или поле просто не было изменено?

046 Что я получаю от наличия ConstraintBroker (брокера ограничений)?

047 Нужны ли мне формы в сервере приложений?

048 Как достучаться до методов сервера приложений из TClientDataSet?

049 Как открыть запароленную таблицу Paradox 7 (*.db)???

050 Как я могу определить доступные сервера приложений на этой машине через Registry?

051 Как работать с новыми, своими интерфейсами в RemoteDateModule?

052 Я включил dbclient. dll в секцию «additional files» опций распространения по web, но этот файл никогда не загружается на клиент. Как это исправить?

053 Как мне упаковать Paradox или DBF таблицу?

054 Как передать UserName и Password в удаленный модуль данных (remote datamodule)?

055 Делаем ApplyUpdates. Если пpи insert(update) пpоизошла ошибка (поле null, сpаботал check, etc), то BDE всегда говоpит «General SQL Error» вместо ноpмального сообщения об ошибке 🙁 Без CU все ноpмально, pазумеется. Как боpоть этот баг?

056 После работы программы не сохраняются изменения в базе Paradox. Что делать?

057 Database Desktop показывает содержимое таблиц шрифтом без русских букв. Что делать?

058 Hе получается вставить в таблицу записи со строками на русском языке — некоторые буквы меняются на другие — что делать?

059 Hе получается открыть таблицу, созданную в InterBase с DEFAULT CHARACTER SET WIN1251. Оно говорит, что «WIN1251 undefined».

060 Как из таблицы ( например Names ) выбрать записи, значение поля, например Names, которых начинающется на какую-либо букву

061 Как пронумеровать записи в TTable

062 Каскадные Update’s в таблицах InterBase

063 Как пронумеровать выбранные записи в SQL запросе, RecNo не работает

064 Как получить имя файла и путь локальной таблицы?

065 Создание уникального поля

066 Как добавить Alias к BDE?

067 Проблема заключается в следующем: Delphi 3. Paradox. Есть база данных, работающая на локальной машине правильно. Как сделать, что б с этой же базой работали и другие машины из локальной сети? Пробовал выделить каталог с базами в сеть, на других машинах подключить этот каталог и прописать его в алиасах. При загрузке базы на разных машинах вроде все нормально, а как только начинаешь добавлять записи — все!!! — на каждой машине происходит добавление своей записи и внесенные изменения с другой машины не видны. Как мне добиться, что б как только одна машина внесла изменения (например добавила запись), вторая и все остальные увидели их? Пробовал в Table1 разрешить кэширование и использовать commitupdate, но результат тот же.

068 Как сделать, чтобы в DBGrid вместо цифр были соответствующие константы?

069 Почему при добавлении/изменении записей в некоторых запросах возникает ошибка Cannot modify a read-only dataset?

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

071 Database Desktop показывает содержимое таблиц шрифтом без русских букв. Что делать?

072 Как создать файл .db на основе имеющегося

073 Есть две одинаковые таблицы по ~10000 записей. Вопрос: Как написать SQL-команду, чтобы выбрать записи из таблицы_1, которых нет в таблице_2 (уникальное поле — ID)?

074 Как определить путь к БД из определенного алиаса

075 Как работать с выбранными в DBGrid записями

076 Как в Sybase SqlAnywhere в хранимой процедуре вызвать исключение, видимое для Delphi клиента

077 Что такое — Dirty Read, Committed Read, Repeatable Read

078 Как узнать текущую дату, время в Interbase

079 Что такое: UpdateMode = (upWhereAll, upWhereChanged, upWhereKeyOnly)

080 После работы программы не сохраняются изменения в базе Paradox. Что делать?

081 Как мне упаковать Paradox или DBF таблицу?

082 Как правильно соединяться с базой данных под Personal Oracle?

083 Вставить Combobox в DBGrid

084 Как программно перевести DBgrid в реим редактирования и установить курсор в окошке редактирования в требуемую позицию?

085 При использовании модулей доступа к BDE (DbiTypes, DbiProcs, DbiErrs), любая попытка вызвать процедуру abort выдает ошибку при компиляции при вызове метода abort «Statement expected, but expression of type ‘Integer’ found». Я пытался найти DbiTypes.pas, DbiProcs.pas и DbiErrs.pas чтобы разобраться но не нашел этих файлов. Где расположены эти файлы и как обойти ошибку?

086 Некоторые компоненты баз данных (и среди них TDBGrid) никак не меняют визуальных свойств, когда к ним отключен доступ (disabled). Как это изменить програмно?

087 Как поместить картинку из базы данных, например MsSQL, в компонент TIMAGE ?

088 32-битное соединение с сервером Sybase

089 ActiveControl имеет DataSet

090 ADO.OLEDB.JET — Access Violation при передаче неполного параметра

091 ASCII драйвер для CSV-файлов

092 ASCII-файл с использованием полей

093 BDE, ODBC и SQL Server 6.0

094 BDE32 приложения в ptp-сети

095 BLOBFIELD как BITMAP

096 Byte-поля Paradox

097 Crystal Reports 8.0 через API

098 Database Desktop показывает содержимое таблиц шрифтом без русских букв

099 DBASE — Индексы выражений

100 DBase и особые случаи BDE

101 DBFSeek и DBFLocate

102 Delphi и Oracle — вопросы и ответы

103 FastReport — Разработка кросс-платформенных отчетов

104 FindKey для нескольких полей

105 Interbase BLOB-поля

106 Local SQL и временная таблица

107 ODBC соединения

108 OLE и Interbase — прочесть и записать

109 Oracle — экспорт

110 Paradox в сети

111 Paradox и неверные индексы Win95

112 RecCount в таблицах ASCII

113 SQL — вложенные пробелы

114 SQL — использование функции SUBSTRING

115 SQL — сортировка вычисляемого поля

116 SQL — суммирование вычисляемого поля

117 SQL outer join

118 SQL в Delphi

119 SQL и расширенные символы

120 SQL-запросы в Delphi

121 Автоинкрементальные поля и Interbase 2

122 Автоинкрементальные поля и Interbase 3

123 Автоинкрементальные поля и Interbase

124 Автоматический logon к локальной InterBase

125 Архитектура BDE и его особенности при работе с SQL-серверами 1

126 Архитектура BDE и его особенности при работе с SQL-серверами 2

127 База данных методами Object Pascal

128 БД-дерево взаимоотношений

129 Библиотека для создания динамических SQL скриптов

130 Блокируется таблица в MS SQL Server

131 Быстрая обработка CSV файла

132 Быстрый доступ к ADO

133 Быстрый доступ к нужной записи в таблице Paradox

134 Быстрый поиск в базах данных

135 В InterBase при создании базы ввести параметр для поддержки русского языка

136 В режиме отладки приложения не разрешается открытие базы данных

137 Версия BDE

138 Внести изменения в набор данных и не потерять текушей позиции

139 Возврат курсора по умолчанию после выполнения запроса

140 Вопросы Delphi, BDE и SQL Links

141 Восстановление записи dBase

142 Вставка новой записи через буфер

143 Выводить текст с помощью DBMS_OUTPUT. PUT_LINE в режиме отладки

144 Вызов TUTILITY

145 Выполнение запросов к базе данных в фоне

146 Вычисление суммы полей

147 Генератор SQL-запросов Insert, Update

148 Демонстрация обратного вызова BDE

149 Динамическое создание полей 2

150 Динамическое создание полей

151 Динамическое создание таблицы и полей во время выполнения программы

152 Добавление ODBC-драйверов в Delphi

153 Добавление псевдонима с помощью функции DbiAddAlias

154 Добавляем пароль к таблице Paradox

155 Доступ к объекту Oracle

156 Доступ к таблицам Paradox на CD или c флагом только для чтения

157 Дубликат Paradox или dBase записи

158 Естественные ключи против искусственных ключей

159 Загрузка TMemoField в Memo

160 Загрузка изображений в Blob-поля

161 Задание псевдонима программным путем

162 Записываем в Access используя ADO

163 Запись nnn из nnn

164 Запись RecNo из RecordCount

165 Запись буфера BDE на диск

166 Запись и чтение чисел в Blob-поле

167 Запись картинки в ADO таблицу

168 Запись потока в BLOB-поле

169 Зарезервированные слова Local SQL

170 Из Paradox в Access при помощи ADO

171 Извлечение данных индекса таблицы

172 Извлечение изображения из BLOB-поля

173 Извлечение текста из TMemoField

174 Изменение данных в Delphi 2 (BDE)

175 Изменение каталога псевдонима во время выполнения приложения

176 Изменение конфигурации IDAPI

177 Изменение месторасположения .NET-файла во время работы

178 Изменение псевдонима во время выполнения программы

179 Изменить размер поля или его тип

180 Изображения и InterBase Blob-поля

181 Имитация псевдонима PdoxWIN PRIV

182 Импорт CSV ASCII

183 Импорт большого CSV файла

184 Имя SQL-таблицы

185 Имя пользователя Paradox

186 Индекс в другом каталоге

187 Интерактивные SQL-запросы

188 Информация о псевдонимах BDE

189 Использование BDE в сети

190 Использование нумерации в TFields

191 Использование таблиц Access

192 Использование таблиц Access2

193 Как активизировать компоненты доступа к данным связанные с определенным TDatabase

194 Как в Delphi сбросить кэш БД на диск

195 Как в Oracle создать sequence с некоторого номера

196 Как выяснить размер BLOB-поля

197 Как гарантированно сделать backup

198 Как добавить копию текущей записи

199 Как добиться верной работы фильтра на запросах и на неиндексированных таблицах

200 Как задать выражение по умолчанию для объекта TField

201 Как записать в BLOB поле большой текст (более 255) из Delphi

202 Как заставить BDE сохранять в БД поле времени с сотыми долями секунды

203 Как заставить DBGrid сортировать данные по щелчку на заголовке столбца

204 Как заставить Interbase принять COLLATE PXW_CYRL по умолчанию

205 Как заставить работать DB2 через протокол IPX

206 Как использовать базу данных BDE, не указывая ее имя

207 Как использовать свой диалог ввода пароля BDE

208 Как можно открыть отчёт (в режиме Print Preview а также Print Direct) в MS Access

209 Как напрямую добраться до Oracle

210 Как настроить Personal Oracle с русским языком на корректную работу с числами и BDE

211 Как открыть базу данных Microsoft Access . MDB в Delphi

212 Как открыть запароленную таблицу Paradox7 (.db)

213 Как открыть индексированную таблицу dBase, если отсутствует файл индекса

214 Как очистить таблицу, оставив только структуру

215 Как передать UserName и Password в удаленный модуль данных

216 Как перейти к указанной записи в БД

217 Как перекинуть все данные из DBF в DB

218 Как пересчитать все вычисляемые поля (Calculated fields) без переоткрытия TDataSet

219 Как по имени Базы Данных получить ссылку на компоненет TDataBase

220 Как по текущей ячейки получить наименование столбца

221 Как поймать свой RAISEERROR в Delphi

222 Как получить номер записи в dBASE или Paradox

223 Как получить результирующим полем разницу между хранимой датой и текущей датой

224 Как правильно соединяться с базой данных под Personal Oracle

225 Как при выполнении долгой операции в Oracle показать прогресс бар

226 Как проверить инсталлирована ли BDE

227 Как проверять корректность доступа к базе данных

228 Как программно изменить LangDriver для таблиц dBase и Paradox

229 Как программно паковать таблицы Paradox или восстанавливать индексы

230 Как программно создать Alias 2

231 Как программно создать Alias

232 Как проиндексировать программно базу

233 Как прочитать адресную книгу Outlook (MSOffice) из Delphi и занести данные в таблицу db

234 Как работать из Delphi напрямую с ADO

235 Как сделать откат внутри триггера

236 Как скопировать BDE таблицу

237 Как сменить пароль (master password) для таблицы Paradox

238 Как создать dBASE таблицу во время выполнения

239 Как создать базу данных Access во время выполнения

240 Как создать БД в кодировке CP1251

241 Как создать вычисляемые поля во время исполнения программы

242 Как создать поле Lookup во время выполнения приложения

243 Как создать таблицу базы данных, не используя Database Desktop 2

244 Как создать таблицу базы данных, не используя Database Desktop 3

245 Как создать таблицу базы данных, не используя Database Desktop 4

246 Как создать таблицу базы данных, не используя Database Desktop

247 Как создать таблицу в MS Access при помощи DAO

248 Как сохранить RTF в TBlobField

249 Как сохранить содержимое таблицы в текстовый файл

250 Как сравнить Bookmarks в таблице

251 Как удалить BDE таблицу

252 Как удобнее работать с динамически формируемыми запросами

253 Как узнать — установлена ли BDE 2

254 Как узнать — установлена ли BDE 3

255 Как узнать — установлена ли BDE

256 Как узнать перечень таблиц базы и количество записей в них (ADO)

257 Как узнать путь базы данных и её имя

258 Как узнать содержание активной записи в БД

259 Как узнать текущие дату и время в Interbase

260 Как узнать, доступен ли в сети сервер MS SQL

261 Как уменьшить дату в Paradox

262 Как упаковать базу (DBase, Paradox) в RunTime

263 Как установить BDE 2

264 Как установить BDE

265 Как установить клиента InterBase

266 Как экспортировать таблицу базы данных в ASCII-файл

267 Каким драйвером пользуется TDATABASE

268 Каскадированное удаление с проверкой целостности Paradox

269 Код определения возраста

270 Контекстное меню на основе базы данных

271 Конфигурирование ODBC и псевдонима

272 Конфигурирование ODBC

273 Конфликт IDAPI German и English

274 Копирование StringList в Memo-поле и обратно

275 Копирование записи в пределах одной и той же таблицы

276 Копирование записи из одной таблицы в другую

277 Копирование массива целочисленных чисел в Blob-поле

278 Копирование таблицы с помощью DBE

279 Корректное закрытие базы данных приложением Delphi

280 Кросс-таблица через pivot-таблицу

281 Курсоры в ADO

282 Локальные операторы языка SQL

283 Локальный общий доступ

284 Модуль данных для каждого MDIChild

285 Нарушение уникальности записи

286 Не получается вставить в таблицу записи со строками на русском языке

287 Не работающий SQL OR

288 Обмен данными между TMemoField и TMemo

289 Обновление вычисляемых полей

290 Обработка исключений EDBEngineError

291 Обработка исключения index not found

292 Обратные вызовы BDE32 для получения статуса операций

293 Общий доступ к данным с DBD и Paradox

294 Ограничения BDE

295 Ограничения IDAPI

296 Ограничения Paradox

297 Огромные LCK-файлы

298 Определение номера записи в таблице dBASE

299 Определение типа базы данных

300 Определение удаления записей в . DBF

301 Особенности использования BLOB полей в dbExpress на примере MySQL

302 Отображение всех псевдонимов в ComboBox

303 Отследить изменение данных

304 Очень медленный доступ к таблице при первом обращении

305 Очистка таблицы (с проверкой)

306 Ошибка BDE32 2104

307 Ошибка ODBC SQL Prepare

308 Ошибка создания дескриптора курсора

309 Ошибка чтения потока

310 Пакование таблиц dBASE 2

311 Пакование таблиц dBASE 3

312 Пакование таблиц dBASE 4

313 Пакование таблиц dBASE

314 Пакование таблиц Paradox и dBASE

315 Пакование таблицы

316 Параметризованные запросы

317 Передача параметров ADO запросу

318 Перемещение таблиц

319 Перехват исключений базы данных

320 Перехват ошибок DBEngine

321 Переход с Oracle на Interbase

322 Печать структуры таблицы Paradox

323 Подключиться к Personal Oracle с помощью BDE

324 Подскажите, как на Oracle поменять compatible

325 Поиск в базе данных ADO

326 Поиск в базе данных

327 Поиск записи в больших таблицах

328 Поиск записи с помощью TQuery 2

329 Поиск записи с помощью TQuery

330 Поиск значения при вводе 2

331 Поиск значения при вводе

332 Поиск по нескольким полям

333 Поиск существующей записи перед тем, как она будет вставлена

334 Поиск фраз и записей переменной длины

335 Показ меток удаленных записей в dBASE-файлах

336 Показ удаленных записей в таблице dBASE

337 Полный список полей таблицы

338 Получаем имена ODBC-источников

339 Получение дескриптора ODBC соединения

340 Получение информации о таблице

341 Получение информации об альясах

342 Получение пути псевдонима и таблицы 2

343 Получение пути псевдонима и таблицы 3

344 Получение пути псевдонима и таблицы 4

345 Получение пути псевдонима и таблицы

346 Получение физического пути к таблице

347 Помещение Memo-файла с ASCII-разделителем в Memo-поле таблицы

348 После работы программы не сохраняются изменения в базе Paradox

349 После снесения Interbase Server 5. 0 и желания поставить 5.1.1 вылетает ошибка — IBCheck

350 Почему DB2 ругается на Create Trigger

351 Почему не всегда верно обновляются IndexDefs по Update

352 Поясните, чем в Oracle являются понятия Instance, Database etc

353 Правила для SetRange

354 Предотвратить появление окошко ввода пароля для Paradox таблицы

355 Предохранение от автодобавления записи

356 При выполнении некоторых живых запросов, возвращающих единственную запись, BDE ругается

357 При использовании DOS DBF файлов — перекодировка между форматами

358 При обращении к memo-полю из BDE возникает ошибка Memo too large

359 При обращении клиента, к уже редактируемой записи другим клиентом, выдаётся сообщение

360 При попытке регистрации UDF возникает ошибка — udf not defined

361 Пример DbiAddFilter

362 Принцип и порядок работы с TUpdateSQL для работы с неживыми запросами

363 Причуда AddIndex

364 Проблема Lock File Has Grown Too Large

365 Проблема с AddIndex

366 Проблемы StoredProc у SQL server

367 Проверка изменения данных таблицы

368 Проверка наличия IDAPI

369 Проверяем установлена ли BDE

370 Проектирование баз данных

371 Производная TIntegerField

372 Прокрутка таблицы — хитрость PeekMessage

373 Простой пример работы с базой данных из DLL

374 Протокол блокировки BDE

375 Псевдоним на лету

376 Псевдонимы

377 Путь к локальной таблице

378 Работа с автоинкрементальными (AutoInc) полями

379 Работа с индексами Clipper-а

380 Работа с транзакциями

381 Разбивка строки на слова

382 Развертывание приложения, использующего dbExpress, на примере Delphi6

383 Различия TMemoField

384 Размеры полей таблицы Paradox

385 Распространение BDE

386 Решение проблемы BDE Index out of Date

387 Связать поле BLOB таблицы Paradox с компонентом TRichEdit через потоки

388 Связь BDE и Oracle

389 Связь с personal Oracle

390 Синтаксис функции DbiAddAlias

391 Синтах SQL-функции Substring

392 Сиротские Master-записи

393 Сканирование версии структуры базы данных

394 Создаём SystemDSN при помощи Delphi

395 Создание autoincrement поля

396 Создание DBExpress-Connection в Run-Time

397 Создание UDF для InterBase

398 Создание алиасов

399 Создание и удаление полей во время выполнения программы

400 Создание индекса во время выполнения программы

401 Создание индексного файла из Delphi

402 Создание кросс-таблицы

403 Создание новой таблицы на основе структуры другой таблицы

404 Создание таблицы FOXPRO

405 Создание таблицы Paradox

406 Создание таблицы по образу и подобию

407 Создание таблицы с автоинкрементальным полем

408 Создание уникального ID для новой записи

409 Создание уникального поля 2

410 Создание уникального поля

411 Создание уникального табличного индекса

412 Сортировка связанного списка

413 Сохранение TForm и ее свойств в BLOB-поле

414 Сохранение и чтение файлов в BLOB-полях

415 Сохранить в базе картинку формата JPEG

416 Список структуры полей таблицы

417 Стандартный запрос на удаление записи в таблице

418 Существует ли средство для вывода определения структуры таблицы

419 Тpансляция ошибок

420 Таблицы dBASE. Структура .DBF-файла

421 Таблицы в памяти

422 Текущий номер записи набора данных

423 Убывающий индекс

424 Убыстрить открытие таблицы Paradox

425 Удаление большого количества записей

426 Узнаём установленную версию ADO

427 Узнать существущие имена таблиц БД Access

428 Узнать физическое расположение локальной БД по Alias

429 Управление сетевыми каталогами (BDE)

430 Установка Interbase и добавление пользователя

431 Установка ODBC — Watcom SQL

432 Фильтр посредством логического поля

433 Формат и размер dBase-поля

434 Формат файла ASCII-схемы

435 Функции дат в SQL

436 Функции редактора полей во время выполнения программы

437 Функция Locate

438 Функция вычисления суммы полей

439 Функция для быстрого копирования таблиц вместе со всеми дополнительными файлами

440 Хитрость OnCalcFields

441 Читаем CSV текстовый файл в StringGrid

442 Читаем файл Access используя ADO

443 Чтение OLE из Blob поля Paradox

444 Чтение текста RichEdit из базы данных

445 Что я получаю от наличия ConstraintBroker

446 Экспорт из Paradox в ASCII файл с кодовой страницей 852

Borland Delphi как средство разработки масштабируемых приложений | Системы управления базами данных

С.В. Орлик

Группа Пользователей Delphi, редактор русскоязычного электронного издания Delphi Interactive Journal. FidoNet 2:5020/87.46


Проблема масштабируемости приложений.
Подход Delphi к разработке Windows-приложений
Borland Database Engine — инструмент доступа к данным
Архитектура database — компонент Delphi
Дополнительные инструментальные средства, входящие в Delphi
Delphi: от настольных систем — к архитектуре клиент-сервер

1.

Проблема масштабируемости приложений.

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

«Масштабируемость» — способность системы адаптироваться к расширению предъявляемых к ней требований и возрастанию объемов решаемых ею задач. В применении к приложениям, работающим с БД, понятие масштабируемости подразумевает возможность перехода на качественно более мощные СУБД с минимумом изменений в самих приложениях. В подавляющем большинстве случаев это перенос desktop-приложений в архитектуру клиент-сервер (Upsizing). В силу отличия традиционных концепций desktop-БД и серверных-БД этот процесс вызывает множество споров и вопросов. В чем же состоят основные проблемы переноса приложений в архитектуру клиент-сервер ?

В то время как desktop-БД подразумевают отношения между «записями» и «полями», основой серверной концепции является «множество» данных (set-oriented databases). Отсутствие единого структурированного языка построениия запросов в одном случае, и навигационных методов доступа, в другом, сильно усложняют upsizing. А если вспомнить о том, что desktop-БД не имеют средств поддержания целостности данных (в несколько меньшей степени это относится к Paradox), а тем более возможностей гибких средств управления полномочиями пользователей (security access level), становится понятным, что идеология desktop-приложений коренным образом отличается от идеологии клиент-серверных приложений.

Понятие масштабируемости тесно связано и со свойством интероперабельности. Что же это такое в применении к приложениям БД ? Интероперабельность таких систем предполагает работу с гетерогенными данными, то есть с данными, хранящимися в разных форматах или на разных SQL-серверах. Причем данные необязательно должны храниться в традиционных БД (примером может служить оболочка Lotus Notes или специализированные геоинформационные системы).

Становится очевидным, что масштабирование (в широком смысле слова) большинства существующих desktop-систем представляет отнюдь не тривиальную задачу.

Решению этих проблем посвящена технология, предлагаемая фирмой Borland. Ниже мы рассмотрим средство создания Windows-приложений — Borland Delphi.

Прежде чем говорить о создании frontend-приложений2) в Delphi, кратко познакомимся с общими возможностями этого продукта без привязки к базам данных.

2. Подход Delphi к разработке Windows-приложений

Borland Delphi относится к классу RAD-систем (Rapid Application Development — среда быстрой разработки приложений).В основе этого продукта лежит компилятор с языка третьего поколения Object Pascal (семейство языков программирования Turbo Pascal). Визуальные средства программирования «two-way tools»3) позволяют, в свою очередь, создать работающее многофункциональное приложение, практически не написав ни единой строки кода.

Ядром визуальных средств программирования Delphi является Visual Component Library (VCL) — объектно-ориентированная библиотека компонентов ( их в стандартной поставке более 75 ), предназначенная для создания пользовательского интерфейса и доступа к системным ресурсам как операционной системы (DOS), так и графической оболочки (Windows), а также для работы с БД.

Рассмотрим особенности процесса разработки приложения в Delphi.

«Компонентная» архитектура приложений Delphi предоставляет интуитивно понятный подход к программированию в Windows. Этот подход, в первую очередь, заключается в визуальном конструировании GUI-форм4) приложения посредством помещения в формы тех или иных системных и интерфейсных объектов ( из так называемой «палитры компонент» ) и установке их свойств и поведения. Те читатели, которые хотя бы раз запускали Borland dBase for Windows или Paradox for Windows, увидят в Delphi знакомое средство — Object Inspector. Этот инструмент позволяет несколькими нажатиями кнопки мыши установить или изменить основные свойства компонент, а также привязать к событиям, на которые может реагировать выбранный объект, код, выполняющий те или иные действия. Компонентная архитектура, основывающаяся на объектно-ориентированном подходе, является одним из решений проблемы повторного использования кода.

Любую форму или все приложение можно сохранить в качестве шаблона (template) и повторно использовать в новых проектах. Для этого Вы сможете воспользоваться так называемой «галереей» Delphi (см. Рис. 1)

Рисунок 1.

Экономии времени при разработке приложения можно достичь использованием так называемых «экспертов». «Эксперт» представляет собой встраиваемый в среду Delphi программный блок (например, реализованный в виде DLL — библиотеки динамической компоновки Windows), который, после диалога с разработчиком, генерирует исходный код и формы уже с развитыми функциональными возможностями. Для создания новых «экспертов» Delphi предоставляет ряд модулей VCL (см. Рис. 2)

Рисунок 2.

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

Для просмотра иерархии классов, получения информации о модулях, а также объявлениях типов, констант, переменных и функций предназначено средство визуальной среды разработки Delphi — Object Browser(см. Рис. 3).

Рисунок 3.

Безусловно стоит упомянуть и о поддержке со стороны Delphi таких средств групповой разработки как, например, Intersolv PVCS (версии 5.1).

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

Так как речь идет о Delphi как о профессиональном инструменте, следует отметить несколько важных особенностей языка Object Pascal.

В этом языке реализован ряд расширений основных объектно-ориентированных признаков — инкапсуляции и полиморфизма. С введением понятия свойства (property) стала стираться грань между данными объекта и методами доступа к этим данным. Поля процедурного типа используются для динамического изменения поведения экземпляров объектов на этапе выполнения приложения. Механизм RTTI (RunTime Type Information) и функции классов позволяют программисту более гибко определять параметры объектов.

Возможности создания новых визуальных компонент за счет расширения стандартной иерархии классов, наряду со средствами настройки палитры компонент, существенно повышают производительность работы в Delphi (в варианте Delphi Client/Server большинство модулей VCL представлено в исходных текстах).

Объектно-ориентированные средства обработки исключительных ситуаций (exception) крайне важны для тех приложений, которые особенно «критичны» к сбоям. К таким системам как раз и относятся приложения для работы с БД.

3. Borland Database Engine — инструмент доступа к данным

В основе взаимодействия Delphi с БД лежит Borland Database Engine. Этот инструмент представляет из себя набор функций для работы с БД различных форматов — IDAPI, драйверы наиболее распространенных форматов БД и утилиту настройки драйверов и псевдонимов. Остановимся на этих составных частях BDE более подробно. (см. Рис. 4)

Рисунок 4.

IDAPI (Integrated Database Application Program Interface) насчитывает более 150 функций для доступа к БД. Механизм, лежащий в основе этого API, позволяет единообразно работать как с локальными, так и с удаленными (SQL) данными. В основе этого механизма лежит понятие «курсора». Курсоры позволяют, с одной стороны, работать с удаленными данными, используя навигационные методы, с другой — обращаться к локальным данным через SQL. За счет такой идеологии стираются принципиальные различия в построении desktop-приложений и клиентских приложений. Как следствие, разработчики, использующие IDAPI для доступа к данным, могут позволить себе в одном и том же приложении обращаться к разным форматам данных, формируя «гетерогенные» запросы (heterogeneous joins).

Пример.

Следующее SQL-выражение показывает как связать три таблицы разных форматов (Paradox, Interbase и Sybase) между собой:

select distinct c. cust_no, c.state, o.order_no, i.price 
from ":Local_alias:customer.db" c,
:IB_alias:order o, 
:SYB_alias:lineitem i 
where o.cust_no = c.cust_no 
and 
o.oder_no = i.order_no 


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

Набор функций IDAPI включает в себя также, средства вторичного уточнения результатов запросов — фильтры. Фильтры BDE позволяют динамически ограничивать объемы информации, связанные с курсорами. Функционируя на уровне клиентского приложения, фильтры позволяют уменьшить сетевой траффик при работе с удаленными данными, так как вся информация о фильтруемых данных уже связана с соответствующим курсором клиентского приложения. Фильтры IDAPI поддерживают сложные логические условия, построенные в виде дерева триад5). (см. Рис. 5)

Рисунок 5.
Логика построения фильтра IDAPI

Для реализации единообразия доступа к данным, вне зависимости от их формата, BDE работает со всеми данными через так называемые «драйверы». Разработчику приложений не требуется знание механизма взаимодействия динамических библиотек IDAPI с драйверами. Достаточно лишь уметь их настраивать с помощью утилиты настройки BDE.

Утилита настройки — BDE Configuration Utility — позволяет сконфигурировать такие параметры драйверов, как используемый национальный языковой драйвер, режим разделения при совместном доступе к данным, представления даты, времени и чисел, псевдонимы соединений и многое другое (см. Рис. 6).

Рисунок 6.

Важной составной частью BDE является технология Idapter, разработанная Borland совместно с компанией Q+E Software. Она заключается в трансляции IDAPI-вызовов в вызовы стандартных методов интерфейса ODBC. Это позволяет существенно расширить ряд доступных СУБД.

В BDE поддерживаются два языка запросов — SQL и QBE, опять-таки для всех форматов БД, включая ODBC-драйверы. Кроме того, IDAPI содержит функции для реструктуризации данных.

Стоит упомянуть, что BDE как основа взаимодействия с данными, кроме Delphi, используется в Borland Paradox for Windows и dBase for Windows.

4. Архитектура database — компонент Delphi

Доступ к базам данных из инструментов разработки Borland не ограничивается набором API-функций. Напротив, именно объектно-ориентированная надстройка над IDAPI является основой взаимодействия клиентских приложений с базами данных. В Delphi такой надстройкой являются Visual Data Objects (VDO) — часть VCL, ориентированная на работу с БД.

В соответствии с логикой Visual Component Library компоненты VDO (их более 25) разделены на две основные группы: Data Access components и Data Control components. Как следует из названий этих групп, первая из них является «системной», то есть компоненты, входящие в нее отвечают за организацию доступа к БД, вторая группа отвечает за ввод и отображение данных.

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

Компоненты доступа к данным:

  • TDatabase — «база данных»;
  • TTable — таблица БД;
  • TQuery — SQL-запрос;
  • TStoredProc — хранимая процедура;
  • TDataSource — источник данных;
  • TReport — «отчет», взаимодействующий с run-time ReportSmith (см. ниже) через механизм DDE.

Визуальные компоненты:

  • TDBNavigator — компонента предоставляющая возможности навигации по «множеству данных»;
  • TDBEdit, TDBGrid, TDBListBox, TDBComboBox, TDBImage и др. — наследники стандартных и расширенных интерфейсных элементов Windows (в иерархии VCL), которые ориентированы на работу с БД.

Компоненты TTable и TQuery не отображаются во время выполнения приложения, но они обеспечивают связь с БД через BDE, являясь, по идеологии VDO, рабочим «множеством данных» (dataset). В иерархии классов VDO эти компоненты, вместе с TStoredProc, имеют общего предка — TDBDataSet — «множество данных».

Отображаемые компоненты (Data Control) ссылочно (через свойства экземпляров) связаны с TTable и TQuery и так называемым «источником данных» — TDataSource. Такая инфраструктура стирает различия между работой пользователя с таблицей БД и результатами запроса, не требуя дополнительного программирования передачи данных между интерфейсными элементами и БД.

Интересной особенностью среды визуальной разработки Delphi является возможность работы с «живыми» данными (live-data). Такая возможность подразумевает отображение реальных данных в Data Controls еще на этапе конструирования форм (design-time). Такое свойство среды Delphi облегчает работу по размещению видимых компонентов на форме, в зависимости от формата отображения данных, так как программист, не компилируя и не запуская приложение, может увидеть окончательный результат.

В остальном идеология работы с VDO-компонентами ни чем не отличается от обычных компонентов VCL Delphi.

5. Дополнительные инструментальные средства, входящие в Delphi

Как любое развитое средство разработки приложений, Delphi, кроме среды разработчика, включает в себя и другие инструменты. Остановимся на тех из них, которые связаны с базами данных6).

SQL Links (*) — набор IDAPI-драйверов для связи приложений с удаленными SQL-серверами БД, например Oracle, Sybase,InterBase и Informix.

Генератор отчетов ReportSmith, в зависимости от варианта (Delphi for Windows или Delphi Client/Server) предоставляет соответствующие возможности доступа к данным и обеспечивает интерфейс для создания отчетов с использованием «live-data conception» (просмотр реальной информации из БД на этапе конструирования отчета). Запросы, перекрестные таблицы, графики, шаблоны и мн. др. — все это без ограничений объема получаемого отчета.

ReportSmith Run-Time — среда для доступа к отчетам из приложений, написанных на Delphi, реализованная в виде Windows MDI-приложения. Взаимодействие с приложениями осуществляется через DDE-обмен с приложением (см. выше TReport — Data Access Component).

Local InterBase Server представляет из себя однопользовательский, работающий в среде MS Windows, «desktop»-SQL-сервер, для построения и тестирования Delphi- приложений с последующим масштабированием их на промышленные БД, например Oracle, Sybase, Informix или Interbase. Обладает практически всеми возможностями реального InterBase Workgroup Server 4.0, включая перенос созданных БД на промышленный вариант сервера (см. статью П. Красюка «Borland InterBase …» , СУБД N 2/1995).

Windows ISQL (WinISQL)-интерактивный SQL. Средство, позволяющее строить и выполнять с клиентских, Windows-рабочих мест SQL-запросы к локальному и удаленному InterBase-серверу. С помощью WinISQL вы можете, без написания специальных SQL-скриптов, получить полную информацию по метаданным БД, например триггерам, доменам, хранимым процедурам и т.п.

Interbase Server Manager — клиентское Windows-приложение, предназначенное для администрирования баз данных Interbase 4.0, как локальных, так и серверных.

Database Expert — «эксперт» Delphi, облегчающий построение скелета приложения, работающего с БД.

Visual Query Builder (*) — средство среды Delphi, позволяющее без знания SQL визуально строить сложные запросы к БД, с последующей генерацией текста запроса на SQL.

Database Desktop (DBD), являясь «минимальным» ядром Borland Paradox for Windows, предоставляет возможности по созданию, изменению структуры, построению запросов к удаленным и локальным данным.

6. Delphi: от настольных систем — к архитектуре клиент-сервер

В большинстве случаев Delphi-приложения, созданные для работы с локальными данными, могут получить доступ к данным на удаленном сервере, с минимумом изменений самого приложения. Если конгруэнтный (сравнимый по структуре таблиц) источник данных (data source) настроен на SQL-сервер, вы можете «перенаправить» приложение, имевшее раньше доступ к локальным данным, всего лишь изменив свойство DatabaseName компонент TTable или TQuery. А если, разрабатывая desktop-приложение, вы планировали в перспективе переход на более высокий уровень технологии (upsizing), затраты на перенос системы в архитектуру клиент-сервер могут заключаться только в настройке псевдонимов соединений BDE.

Следует, однако, понимать, что при переходе к технологии клиент-сервер, вы захотите использовать все предоставляемые этой технологией возможности, сложив с клиентских приложений на сервер БД часть функциональности, отвечающую за поддержание целостности данных (триггеры), часто повторяющихся вычислений (хранимые процедуры) и т. п. В этом случае, масштабирование7) системы повлечет за собой только уменьшение исходного кода. Хотя очевидно, что там где больше возможностей, еще больше запросов (уже не в смысле SQL-выражений) …


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

2) «Frontend» (в отличие от desktop-приложений) — клиентские приложения, работающие с данными в архитектуре клиент-сервер

3) «two-way tools» — визуальные средства программирования, позволяющие синхронизировать процесс конструирования интерфейсных форм и изменение исходных текстов разрабатываемой программы.

4) GUI — Graphic User Interface, стандарт польовательского интерфейса в оконных графических средах.

5) Триады — понятие теории синтаксического анализа. Под триадой подразумевается конструкция: два параметра и их отношение. В конструкции «CustomerNo» > 2000″ параметрами являются «CustomerNo» и константа «2000», а отношением — операция сравнения «>»

6) В данном случае рассматривается Delphi в варианте Client/Server. Инструменты, не входящие в desktop-версию Delphi for Windows, помечены (*).

7) В данном контексте под «масштабированием» понимаестя как-таковой процессс переноса приложений, работающих с локальными данными, в архитектуру клиент-сервер.

Borland Delphi как средство разработки масштабируемых приложений

Поделитесь материалом с коллегами и друзьями

IBExpert создание и регистрация БД Firebird

Добавил admin | Категория Заметки про IBExpert, Firebird | 14 Декабря 2013


Система для управления базами данных, explorer для Firebird, Interbase и Yaffil. IBExpert является мощным инструментом для проектирования и мониторинга работы Баз данных. Официальный сайт проекта. и так, скачав и установив систему мы должны позаботиться еще о сервере баз данных, будем рассматривать Firebird так как из всех перечисленных это самая перспективная БД. Скачиваем Firebird, устанавливаем. Теперь мы можем начать создавать свою БД и работать с ней. Запускаем IBExpert при первом запуске у нас появляется два окна, окно меню и окно explorer это крайне не удобно поэтому делаем так


В открывшимся окне выставляем параметры как на картинке ниже


Перезапускаем среду и видим следующие


Среда на русском, готова к использованию, идем в База данных – Создать базу


Появляется окно создания базы данных

Нам нужно указать сервер, так как мы создаем БД у себя на ПК мы выбираем параметр – локальный. Указываем файл БД у меня это D:\myDB\test.fdb, test.fdb название Вашей БД. Проверяем что бы клиентская библиотека сервера была – dgs32.dll. имя пользователя, по умолчанию войдем под супер пользователем БД – SYSDBA, пароль – masterkey. Размер страниц БД выбираем 16384 (предложенный по умолчанию) для начального знакомства нам этого вполне хватит. Указываем кодировку, IBExpert по умолчанию использует кодировку WIN1251 поэтому следует указать ее, и в дальнейшем при переносе БД с локального ПК на сервер следует указывать кодировку для подключения WIN1251. Тут же стоит отметить что при подключении к БД с этой кодировкой поля в UNICODE_FSS или UTF8 будут доступны. WIN1251 это только для правильного подключения не более так что замарачиваться тут не стоит. Если отметить галочку «зарегистрировать после создания» то создаваемая БД будет зарегестрирована в explorerе. Поставим галочку и нажмем ОК. БД создана появится окно регистрации БД


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


Проверка коннекта прошла успешно, жмем Cancel и в окне регистрации БД жмем Register


БД успешно создана и зарегистрирована в IBExpert. Для того что бы подключиться к созданной БД нужно дваджы щелкнуть левой кнопкой мыши по созданной БД


БД откроется в иерархической структуре будут представлены:

— Домены

— Таблицы

— Представления

— Процедуры

— Триггеры

— Генераторы

— Исключения

— Функции

— Роли

— Индексы

— scripts

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


Новая база данных Access из Delphi

Страница 1: Delphi, ADOX и ADOExpress против MS Access.

Глава 11 этого курса (Бесплатный курс по базам данных Delphi для начинающих — основное внимание уделяется методам ADO) включает компонент ADOCommand, который чаще всего используется для выполнения команд SQL языка определения данных (DDL). Мы представили способ переноса ваших существующих таблиц Paradox / BDE в MS Access. Однако несколько вопросов остались без ответа: как создать пустую базу данных Access, как добавить индекс в существующую таблицу, как обеспечить ссылочную целостность,

Подробнее об этой функции

• Страница 2: Создать. База данных

Присоединяйтесь к обсуждению

«Публикуйте свои мнения и комментарии к этой главе бесплатного курса программирования баз данных Delphi» Обсудить!

Связанные ресурсы

  • бесплатный курс DB.TOC
  • Запросы с ADO
  • a href = «http://delphi.about.com/library/weekly/aa060199.htm»> SQL с Delphi
  • a href = «http://delphi.about.com/cs/database/index.htm»> другие статьи о базе данных

объединить два стола с

  • a href = «http: // delphi.about.com/cs/beginners/»> Начинающие здесь
  • a href = «http://delphi.about.com/cs/comoleactivex/»> COM / OLE / ActiveX

База данных

Многие участники этого курса жаловались, что на их компьютере не установлен MS Access, и что они не могут создать образец базы данных (aboutdelphi.mdb), который представлен в первой главе и используется в ходе этого курса.

Распределенный вычис.

В этой главе мы снова сосредоточимся на TADOCommand и

Программирование игр Графика Интернет / Интранет Математика Мультимедиа Delphi Pascal / IDE Screen saver dev.VCL с использованием VCL Write / Enhance Web Services Windows / Shell / API Kylix (D в Linux)

Стандарты кодирования Книги / публикации Dev. Утилиты Часто задаваемые вопросы / Советы / Уловки Проекты бесплатного кода Юмор и забавные значки и символы Работа и предложения по обучению / CD / Видео VCL и инструменты

Предметная библиотека

Все статьи по теме

ADOX, чтобы увидеть, как настроить пустую базу данных MS Access «из ничего».

ADOX

Как указано в упомянутой главе, расширения ADO для языка определения данных и безопасности являются расширением объектов и модели программирования ADO.ADOX предоставляет разработчикам богатый набор инструментов для получения доступа к структуре, модели безопасности и процедурам, хранящимся в базе данных.

Несмотря на то, что ADOX является частью ADO, Delphi не включает его в ADOExpress. Чтобы использовать ADOX с Delphi, вы должны установить ссылку на библиотеку типов ADOX. Описание библиотеки ADOX: «Microsoft ADO Ext. Для DDL и безопасности». Имя файла библиотеки ADOX — Msadox.dll. Вам нужно будет импортировать библиотеку ADOX в среду IDE.

Чтобы использовать ADOX в Delphi, вы должны установить ссылку на библиотеку типов ADOX.

  1. Выбрать проект | Библиотека типов импорта
  2. Выберите «Microsoft ADO Ext 2.x для DDL и безопасности (версия 2.x)».
  3. Измените «TTable» на «TADOXTable» 3b. Измените «TColumn» на «TADOXColumn» 3c. Измените «TIndex» на «TADOXIndex» 3d. Измените «TKey» на «TADOXKey» 3e. Измените «TGroup» на «TADOXGroup» 3f. Измените «TUser» на «TADOXUser» 3g. Измените «TCatalog» на «TADOXCatalog»
  4. Нажать кнопку Установить (перекомпоновка пакетов)
  5. Один раз нажмите ОК и дважды Да
  6. файл | Закрыть все | Да

Этот процесс создает ADOX_TLB.pas и помещает его имя в раздел uses текущего проекта. Этот процесс также помещает 7 новых компонентов на страницу ActiveX палитры компонентов. Очень важно изменить имена классов, как описано в шаге 3. Если вы опустите эту часть, Delphi будет жаловаться, что класс TTable уже определен — это потому, что VCL уже имеет версию компонента TTable для BDE.

aboutdelphi.mdb

Прежде чем мы продолжим, вы должны вспомнить, что в нашем примере базы данных aboutdelphi.mdb есть три таблицы: Application, Authors и Types.И авторы, и типы являются дочерними таблицами для приложений. И у авторов, и у типов есть первичный индекс.

Будьте в курсе!

Подпишитесь на нашу рассылку новостей.

Введите адрес электронной почты

Реклама

> Бесплатный кредитный отчет

> Бесплатные экстрасенсы

Следующая страница> Создать базу данных из Delphi> Страница 1, 2

Курс DB Следующая глава >>

>> Графики с базами данных

Вся графика (если есть) в этой функции создана Зарко Гайичем.

Подробнее Delph

  • Изучите другой распорядок каждый день — RTL Quick Reference.
  • Загрузите бесплатные приложения и компоненты с исходным кодом.
  • Разговор о программировании на Delphi в реальном времени. Начни чат прямо сейчас!
  • Ссылка на сайт программирования Delphi со своих веб-страниц.
  • Учебники, статьи, техн. советы по дате: 2001120001199

    8 или по ТЕМЕ.

  • СЛЕДУЮЩАЯ СТАТЬЯ: более мощная форма Delphi.

Возня с процессом создания объекта формы, или как изменить стиль окна по умолчанию, когда оно создается, в соответствии с вашими конкретными потребностями.

Будьте в курсе всего нового и интересного о Delphi (бесплатно).

Подпишитесь на информационный бюллетень о программировании

Имя Электронная почта подписки

Есть код, которым можно поделиться? Есть вопрос? Нужна помощь?

Недавние обсуждения_

Программирование на Delphi

Присоединяйтесь к этим обсуждениям на форуме

Извлечение цифрового звука с компакт-диска Недостатки Delphi по сравнению с VS.Net Сохранение приложения всегда наверху Проблема с adoblob в Delphi7 Поиск в текстовом файле или широкой строке

Отправить эту страницу по электронной почте!

Прочтите здесь: Узнайте больше о сети

Была ли эта статья полезной?

Delphi — Примеры проектов SQLite

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

Стандартный путь к файлу примеров находится здесь:
.. \ Studio \ 20.0 \ Samples \ Object Pascal \ Database \ FireDAC \ Samples \
FireDAC.SQLiteIniFile Demo Sample

В этом примере используется FireDAC для подключения к базе данных SQLite, которая имитирует структуру и операции INI-файла.

Аддон \ SQLiteIniFile \ Demo \ SQLiteIniDemo. dproj
FireDAC.TFDLocalSQL MegaFMX Пример

В этом примере показаны различные приложения TFDLocalSQL.

Comp Layer \ TFDLocalSQL \ MegaFMX \ LSQLMega.dproj FireDAC.SQLite Encryption Sample

В этом примере показано, как зашифровать / расшифровать базу данных SQLite.

DBMS Specific \ SQLite \ Encryption \ SQLite_Encrypt.dproj Controlling Database Access Rights

SQLite — это встроенная СУБД .Это подразумевает, что это один пользователь , СУБД и не нуждается в таких понятиях, как пользователь, , права доступа, и так далее. Тем не менее, некоторые приложения могут извлечь выгоду из управления правами доступа , например:

  • Приложение может ограничивать права в зависимости от лицензии конечного пользователя. Демо-лицензия означает меньше возможностей, полная лицензия предоставляет все возможности.
  • Многоуровневый доступ к данным Инфраструктура может использовать собственную концепцию пользователя и управлять правами доступа с использованием некоторого общего подхода.
Опять же, SQLite предоставляет уникальную функцию, позволяющую разрешать или запрещать команды SQL . Для работы с этим API приложение Delphi должно установить обработчик событий OnAutorize объекта TSQLiteDatabase, который является объектом-оболочкой подключения к базе данных. Перехватить это событие после открытия соединения с базой данных.

DBMS Specific \ SQLite \ OnAuthorize \ SQLite_OnAuthorize.dpr oj Перехват обновлений базы данных

SQLite предоставляет уникальный API , позволяющий отслеживать все обновления базы данных.Эту функцию можно использовать, например, для регистрации всех обновлений в DB . Для работы с этим API приложение Delphi должно установить обработчик событий OnUpdate объекта TSQLiteDatabase, который является объектом-оболочкой подключения к базе данных. Перехватить это событие после открытия соединения с базой данных.

DBMS Specific \ SQLite \ OnUpdate \ SQLite_OnUpdate.dproj Custom Collations

SQLite хранит и обрабатывает все символьные данные либо в UTF8, либо в UTF16, в зависимости от параметра подключения OpenMode.Когда SQLite нужно сравнить или отсортировать символьные данные, он должен знать, какие правила для этого использовать. Правила известны как сопоставление.

DBMS Specific \ SQLite \ UserCollation \ SQLite_UserColl.dpro j Пользовательские функции

SQLite не поддерживает концепцию хранимых процедур или функций, поскольку позволяет использовать среду основного языка для расширения функциональных возможностей движка. SQLite позволяет регистрировать функции основного языка в механизме SQLite и использовать их в командах SQL .FireDAC упрощает это, вводя компонент TFDSQLiteFunction.

DBMS Specific \ SQLite \ UserFunc \ SQLite_UserFunc.dproj Модуль SQLite R * Tree

R-Tree — это специальный индекс, предназначенный для выполнения запросов диапазона. R-деревья чаще всего используются в геопространственных системах, где каждая запись представляет собой прямоугольник с минимальными и максимальными координатами X и Y. Учитывая прямоугольник запроса , R-Tree может быстро найти все записи, содержащиеся в прямоугольнике запроса или перекрывающие прямоугольник запроса .

Эта идея легко расширяется до трех измерений для использования в системах САПР. R-деревья также находят применение при поиске диапазона во временной области. Например, предположим, что база данных записывает время начала и окончания для большого количества событий. R-Tree может быстро найти все события, которые были активны в любое время в течение заданного временного интервала, или все события, которые начались в течение определенного временного интервала, или все события, которые и начались, и закончились в течение данного временного интервала. И так далее.

СУБД Конкретный \ SQLite \ UserRTree \ SQLite_UserRTree.dproj
Название: SQLite

Краткое описание: В этом фрагменте показано, как заполнить список из базы данных SQLite с помощью FireDAC и LiveBindings. См. Раздел «Доступ к базе данных» в разделе «Мобильные учебники» документации для получения дополнительной информации и требований к лицензированию.

Поддерживаемые платформы: iOS, Android

.. \ Mobile Snippets \ FireDACSQLite \ FireDAC_SQLite.dproj
Enjoy
Semper Fi,
Gunny Mike

Weiterlesen…

CleverComponents / Database-Comparer-Examples: Эти примеры проектов предназначены для демонстрации функциональности компонентов Database Comparer VCL.

GitHub — CleverComponents / Database-Comparer-Examples: эти примеры проектов предназначены для демонстрации функциональности компонентов Database Comparer VCL.

Эти примеры проектов предназначены для демонстрации функциональности компонентов Database Comparer VCL.

Файлы

Постоянная ссылка Не удалось загрузить последнюю информацию о фиксации.

Тип

Имя

Последнее сообщение фиксации

Время фиксации

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

Они предназначены для демонстрации использования компонентов VCL Database Comparer в вашем коде.

Демонстрационные примеры VCL Database Comparer для Delphi

Название программы Описание
Средство сравнения баз данных (ADO) Сравнивает, синхронизирует и обновляет структуру баз данных. Подключается к базе данных MSSQL через ADO.
Средство сравнения баз данных (FIBPlus) Сравнивает, синхронизирует и обновляет структуру баз данных.Подключается к базе данных IB через FIBPlus. Эта демонстрация недоступна, начиная с RAD Studio 10 Seattle.
Средство сравнения баз данных (FireDAC) Сравнивает, синхронизирует и обновляет структуру баз данных и данные таблиц. Подключается к базе данных Firebird 3.0 через FireDAC. Доступно начиная с RAD Studio XE8.
Средство сравнения баз данных (IB Express) Сравнивает, синхронизирует и обновляет структуру баз данных и данные таблиц. Подключается к базе данных IB через IBExpress.
Извлечь метаданные Извлекает метаданные базы данных и отображает сценарий.
Выполнить локальный сценарий SQL Загружает и выполняет сценарий LocalSQL (BDE) для локальных баз данных (Paradox, dBASE). Эта демонстрация недоступна, начиная с RAD Studio XE7.
Средство сравнения SQL-скриптов Сравнивает два сценария базы данных и отображает полученный сценарий обновления.
Устройство сравнения табличных данных Сравнивает и синхронизирует данные между двумя таблицами базы данных.Эта демонстрация недоступна, начиная с RAD Studio XE7. Пожалуйста, проверьте демонстрации Database Comparer (FireDAC) и Database Comparer (IB Express).
Data Comparer Custom SQL Показывает, как сравнивать и синхронизировать две таблицы БД Firebird с помощью пользовательского сценария SQL для выборки записей. Подключение осуществляется через библиотеку FireDAC.

Database Comparer VCL Demos for C ++ Builder

Около

Эти примеры проектов предназначены для демонстрации функциональности компонентов Database Comparer VCL.

Ресурсы

Лицензия

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

компонентов базы данных delphi

Когда пользователь изменяет поле, компонент должен учитывать, что имя поля может быть недопустимым; для проверки этого условия компонент использует блок try / finally: элемент управления выполняет тот же тест, когда набор данных включен или отключен: наиболее интересная часть кода этого компонента связана с его пользовательским интерфейсом. Закрытие — это вопрос освобождения списка, количество записей в котором соответствует размеру списка: единственный другой метод сохраняет данные текущей записи в буфере записи, включая информацию о закладках. Вот код: когда набору данных требуются новые данные — например, для выполнения операции Post — он запрашивает их у компонента через событие OnUpdateData класса TFieldDataLink: если соответствующие условия соблюдены, компонент обновляет данные в соответствующем поле таблицы . Этот компонент базы данных Delphi бесплатен для личного использования. См. Дополнительные сведения и загрузите пробную / персональную версию.Теперь давайте создадим компонент, работающий с данными, который работает с набором данных в целом: средство просмотра записей. В этом документе будут подробно рассмотрены многие компоненты и инструменты, составляющие базу данных Delphi … В этом случае данные файла извлекаются из буфера TSearchRec конструктором класса TFileData: этот конструктор вызывается для каждой папки при открытии набора данных. : Следующим шагом является определение полей набора данных, которые в этом случае являются фиксированными и зависят от доступных данных каталога: Наконец, компонент должен переместить данные из объекта списка, на который ссылается текущий буфер записи (значение ActiveBuffer ) в каждое поле набора данных в соответствии с запросом метода GetFieldData.Компоненты доступа к данным MySQL (MyDAC) — это библиотека компонентов, которая обеспечивает прямой доступ к MySQL и MariaDB из Delphi и C ++ Builder, включая Community Edition, а также Lazarus (и Free Pascal) в Windows, Linux, macOS, iOS и Android для 32-битных и 64-битных платформ. Встроенная база данных Delphi. Вы можете отключить эту потоковую передачу, переопределив метод и не вызывая унаследованный (что обычно является плохой техникой), но вы также можете переключить защищенное поле FSaveCellExtents, чтобы отключить эту функцию (как я сделал в коде компонента).ADS 10.1 больше не поддерживается, поэтому компоненты TDataSet, поддерживаемые Delphi 10 Seattle, будут выпущены только для версий 11. 1 и 12. Наши специализированные группы поддержки могут ответить на вопросы, связанные с продуктом. Каждый класс должен избавляться от данных, которые он выделил, и обновлять заголовок файла, при первом добавлении записей и при каждом изменении количества записей: другая связанная функция используется для проверки того, открыт ли набор данных, что вы можете решить, используя соответствующий локальное поле: это методы открытия и закрытия, которые необходимо реализовать в любом настраиваемом наборе данных.Вы должны предоставить единственный параметр: целевой класс, хранящийся в свойстве ObjClass (см. Полное определение класса TMdObjDataSet в листинге 17.5). Этот метод необходим для реализации свойства RecordSize, доступного только для чтения, которое используется только в нескольких особых случаях во всем исходном коде VCL. & quout; Making a Control Data-Aware »в Руководстве по составлению компонентов в файле справки Delphi для дальнейших примеров. Базы данных Delphi Community Edition. Компоненты Apollo Embedded VCL — это собственные компоненты Delphi с поддержкой данных для создания 32-битной и 64-битной Windows приложения, использующие Delphi и C ++ Builder.Два метода, используемые для установки и получения флагов закладок, демонстрируют эту технику: методы, которые вы используете для установки и получения текущей закладки записи, аналогичны двум предыдущим, но они добавляют сложности, поскольку вы получаете указатель на закладку в параметре Data. . Эти методы легко понять, если вспомнить, что диапазон внутреннего поля FCurrentRecord составляет от 0 до количества записей минус 1. Библиотека компонентов для подключения приложений к MySQL из Delphi, C ++ Builder и Lazarus.Ключевая особенность. Компоненты переноса данных для Delphi и C ++ Builder. В этих случаях вы не получаете данные, а возвращаете код ошибки. Типичными примерами компонентов Delphi являются: Delphi PDF, сетка Delphi и элементы управления диаграммой Delphi. В этом примере метод CreateTable создает пустой файл и вставляет информацию в заголовок: фиксированный номер версии, фиктивный размер записи (вы не знаете размер, пока не инициализируете поля) и количество записей (которое равно нулю. для начала): Как упоминалось ранее, каждый набор данных должен реализовывать управление закладками, которое необходимо для навигации по набору данных.Самые быстрые и надежные решения для передачи данных Таким образом, вы можете написать бизнес-правила своего приложения, реализуя правила в методах чтения и записи свойств — определенно более разумный подход ООП, чем привязка кода к объектам поля и их проверка. Вы можете изменить размер двух других столбцов после добавления фиксированной строки. Чтобы проверить это, учтите, что если вы используете DBGrid, система будет выполнять серию вызовов GetRecord, пока либо сетка не заполнится, либо GetRecord не вернет grEOF.Вам не нужно определять, находится ли текущая запись в правильном диапазоне, только если запрошенная запись находится. При обсуждении класса TDataSet и альтернативных семейств компонентов набора данных, доступных в Delphi, в главе 13 «Архитектура базы данных Delphi» я упомянул возможность написания собственного класса набора данных. Вот код для двух методов в производном наборе данных на основе потока: Второй метод, InternalAfterOpen, используется для операций, требуемых после установки определений полей, и за ним следует код, который сравнивает размер записи, прочитанной из файла, с значение, вычисленное в методе InternalInitFieldDefs.Рисунок 17.3: Пример ViewGrid демонстрирует выходные данные компонента RecordView, используя образец таблицы базы данных BioLife от Borland. При возникновении проблем обращайтесь к нам на форумах zeoslib.sourceforge.net. Однако я обнаружил, что буфер — это указатель на необработанные данные объекта поля. Добавлена ​​поддержка Delphi XE6 в компоненты TDataSet. Теперь мы подошли к ядру компонента настраиваемого набора данных. Работа над поддержкой Delphi 10 Seattle продолжается. поддерживает DAO 3.6, DAO 3.5 и ACEDAO, нет необходимости в базе данных Borland… Этот класс включает большую часть кода для сеток, но большинство его свойств, событий и методов защищены.Обращайтесь к нам, мы всегда готовы помочь! Однако самая интересная особенность программы — это то, что вы должны попробовать сами. Предложение заканчивается 28 декабря. Когда вы прокручиваете вверх и вниз записи данных набора данных, вы не прокручиваете строки DBGrid; строки неподвижны, и данные перемещаются из одной строки в другую, создавая видимость движения. Во время выполнения программа ищет таблицу в текущем каталоге. В этом примере я решил основывать определения полей на внешнем файле — файле INI, который предоставляет раздел для каждого поля.Чтобы отличать эти компоненты от других семейств доступа к базе данных, компоненты имеют префикс с буквами SQL, что подчеркивает тот факт, что они используются для доступа к серверам СУБД. Создание приложений Win32 и Win64 с помощью Delphi и C ++ Builder (Borland, Embarcadero, CodeGear) Создание, обновление и управление файлами баз данных CA-Clipper и FoxPro DBF / Xbase из кода; BDE не требуется; Более чем в 30 раз меньше, чем… Например, в ветви gmCurrent оператора case вы используете стандартное выражение CurrentRecord> = InternalRecourdCount.Delphi CE содержит компоненты для TClientDataSet, TFDConnection (база данных FireDac), TDataSource, TDBGrid, TDBEdit и других. Вот определение класса компонента (из модуля MdTrack пакета MdDataPack): по сравнению с созданным ранее элементом управления с поддержкой данных только для чтения, этот класс более сложен, поскольку он имеет три обработчика сообщений, включая обработчики уведомлений компонентов, и два новых обработчика событий для канала передачи данных. Во-вторых, ему нужен настраиваемый метод Paint для рисования вывода в соответствующем объекте холста, который предоставляется в параметре сообщения wm_Paint, если установлен флаг csPaintCopy свойства ControlState.Краткое справочное руководство по почти 100 инструментам для повышения качества, скорости и сложности процессов, использованию DMAIC для повышения скорости, качества и стоимости, инструментов для сопоставления потока создания ценности и потоков процессов, сопоставления потока создания ценности и анализа сложности, Microsoft Office Visio 2007 Step by Step (Step By Step (Microsoft)), Организация фигур в макетах Office с помощью слоев, Настольный справочник Java All-In-One для чайников. Пытаясь решить эту проблему, я также обнаружил, что если вы вызываете IsNull для поля, этот запрос разрешается путем вызова GetFieldData без передачи какого-либо буфера для заполнения, а ищет только результат вызова функции.Мы поддерживаем хорошие партнерские отношения с Embarcadero и сообществом Delphi более 20 лет. С более практической точки зрения, чтобы сделать компонент осведомленным о данных, вам необходимо добавить к нему ссылку на данные и отобразить некоторые свойства этого внутреннего объекта, такие как свойства DataSource и DataField. В листинге 17.3 показан файл Contrib.INI, используемый в демонстрационном приложении компонента. Как вы видели, компонент, поддерживающий данные только для чтения, написать несложно. Компоненты (Delphi) для многоразового, независимого от баз данных программирования бизнес-логики или логики данных.Однако использование такого компонента внутри контейнера DBCtrlGrid становится чрезвычайно сложным. Компоненты dbGo инкапсулируют эти объекты ADO в архитектуре базы данных Delphi. Код также проверяет, совместимо ли количество записей, считываемых из заголовка, с размером файла. Будьте в курсе последних мировых событий. Встроенная база данных Delphi. IBDAC — это библиотека компонентов, которая позволяет подключаться к Firebird 3.x, 2.x, 1.x из Delphi, C ++ Builder и Lazarus (и Free Pascal).В этой статье не рассматриваются компоненты ADO, присутствующие в Delphi 5. Приведен пример кода, а компонент DBCtrlGrid не используется активно, поэтому я решил не сообщать вам здесь полную информацию; вы можете найти полный код и дополнительную информацию в исходном коде. Листинг 17.1. Метод TheDrawCell пользовательского компонента RecordView. В качестве альтернативы вы можете захотеть проверить тип поля, когда метод SetDataField назначает его элементу управления. Основные шаги по созданию компонента просмотра данных В этих буферах хранятся данные, но они также обычно хранят дополнительную информацию для набора данных, который будет использоваться при управлении записями. Учитывая этот выбор, я чувствовал, что для этого примера я мог бы отказаться от поддержки удаления записи. Демонстрационная программа определяет абсолютный путь к файлу таблицы во время разработки, поэтому вам нужно будет исправить это, если вы скопируете примеры на другой диск или в другой каталог. Даже текущая запись может не существовать — например, когда таблица пуста (или в случае внутренней ошибки). Все права защищены. В Delphi нет компонентов, учитывающих данные, которые управляют несколькими полями одной записи без отображения других записей.Что само по себе под вопросом. Компоненты базы данных также обладают универсальностью. Компоненты доступа к данным для MySQL (MyDAC) — это библиотека компонентов, которая обеспечивает прямой доступ к серверам баз данных MySQL из Delphi, Delphi для .NET, C ++ Builder и Kylix. В этом случае возвращается False. Вам необходимо предоставить еще два метода: GetData, который копирует данные из буфера записи в объекты полей набора данных, и SetData, который перемещает данные обратно из полей в буфер записи. Итак, как видите, сочетание баз данных Access и компонентов ADO Delphi упрощает создание приложений для баз данных.Элементы управления с поддержкой данных используют соединение, чтобы запросить текущее значение поля или обновить его, уведомив набор данных об этом событии. Наши квалифицированные и опытные специалисты предоставляют клиентам быстрые и подробные ответы, частые сборки и исправления по запросу, а также многое другое. В обоих случаях вы используете метод InternalPost, но вы можете проверить свойство State набора данных, чтобы определить, какой тип публикации вы выполняете. Исправлена ​​ошибка в 64-битном клиенте Delphi, которая могла привести к нарушению прав доступа при редактировании записи.Таким образом, нет необходимости в методе уведомления для элементов управления с учетом данных, хотя вы увидите книги и статьи, предлагающие его, а VCL включает много этого бесполезного кода. Это альтернатива вставке или добавлению новой записи в набор данных, редактированию значений различных полей и последующей публикации данных, поскольку вызовы InsertRecord и AppendRecord получают значения полей в качестве параметров. Фото Кевина Ку на Unsplash. Код для всех компонентов, созданных в этой главе, находится в папке MdDataPack, которая также включает пакет с аналогичным названием для их установки.В коде метода компонент сначала вызывает унаследованную версию, а затем устанавливает высоту каждой строки. Этот тест может завершиться неудачно, если набор данных не был закрыт должным образом: вы можете изменить этот код, чтобы набор данных в любом случае обновлял размер записи в заголовке. Цель следующего компонента — улучшить DBGrid тем же типом настраиваемого вывода, который я использовал для компонента RecordView, напрямую отображая графические и мемо-поля. Большинство компонентов регулярно обновляются, поэтому вы можете найти здесь их последнюю версию для использования в Delphi 10.3 Рио тоже. Если вы используете один из методов объекта поля для перемещения этих данных, он вызовет метод GetData или SetData набора данных, что, вероятно, вызовет бесконечную рекурсию. Чтобы усложнить задачу, вы также должны учитывать это различие в методе GetFieldData: если вы читаете поля из текущего объекта, вам, возможно, придется использовать его модифицированный клон (в противном случае изменения, внесенные пользователем в другие поля, исчезнут). Я продолжу рассказывать об этом в следующей главе, которая посвящена новому механизму отчетов, доступному в Delphi 7.Вы также можете изменить форму с помощью редактора полей Delphi и установить свойства различных объектов поля. Компонент TADOQuery предоставляет разработчикам Delphi возможность извлекать данные из одной или нескольких таблиц из базы данных ADO с помощью SQL. Важная идея, связанная с наборами данных в Delphi, заключается в том, что они представляют собой набор данных, независимо от того, откуда эти данные поступают. Необходимые инструменты для разработки баз данных, анализа данных, управления данными и администрирования серверов, Широкий выбор решений для подключения к данным мирового уровня для различных технологий и фреймворков подключения к данным, Инструменты, которые помогают разработчикам писать код, проводить обзоры кода, сравнивать источники, Отслеживайте рабочее время и многое другое. Универсальная облачная платформа данных для интеграции данных без кодирования, доступа к данным, резервного копирования из облака в облако и управления.Встроенная поддержка SQL была добавлена ​​в версии 5, в которой появился наш компонент TAdsQuery. Чтобы получить доступ к закладке и флагам, вы можете использовать в качестве смещения размер данных, приведя значение к типу указателя PMdRecInfo, а затем получить доступ к соответствующему полю структуры TMdRecInfo через указатель. Вы используете этот TList для доступа к данным полей в буфере записи, как вы можете видеть в листинге кода. Вот результат работы тестовой программы, использующей этот компонент: Следующий шаг — написать компонент, который позволяет пользователю изменять данные в базе данных, а не просто просматривать их.Эти компоненты позволили разработчикам Delphi быстро внедрить Advantage, используя уже имеющиеся у них навыки программирования. Добавлена ​​поддержка Delphi XE6 в компоненты TDataSet. Рисунок 17.6: Форма примера StreamDSDemo. TmySQL использует одну клиентскую DLL, которая предоставляется большинством скомпилированных под Windows версий MySQL. Некоторые из представленных здесь идей были обсуждены в статье, которую я написал для веб-сайта сообщества Borland, опубликованной в июне 2000 г. по адресу bdn.borland.com/article/0,1410,20587,00.html.Лейдаго! Ноабеб — программист из Намибии. В качестве примера второй набор данных, представленный в этой главе, представляет собой список файлов. Ваша подписка не может быть сохранена. Чтобы открыть или закрыть таблицу, вы можете установить флажок: Наконец, я создал метод, который проверяет код управления закладками пользовательского набора данных (он работает). Компоненты dbExpress. Этот компонент в настоящее время игнорирует эти настройки. Причины для написания настраиваемого набора данных связаны с тем фактом, что вам не нужно развертывать ядро ​​базы данных, но вы все равно сможете в полной мере использовать архитектуру базы данных Delphi, включая такие вещи, как постоянные поля базы данных и элементы управления с учетом данных. .Если это удастся, говоря «соединение выполнено успешно», вы, вероятно, захотите проверить, является ли база данных, полученная по данному имени, той, которую вы ищете. Один из них — компонент TFDDataMove. Вот два метода. В дополнение к только что описанным методам управления закладками вы можете использовать несколько других методов навигации для перехода к определенным позициям в наборе данных, таким как первая или последняя запись. Ключевые особенности: замена BDE — нет BDE, не требуются библиотеки DLL, поддержка SQL, сжатие полей BLOB, быстрые индексы, таблица, а также весь импорт / экспорт базы данных в памяти, Unicode, потокобезопасность, исчерпывающая помощь.Результат может быть не идеальным, но этот компонент может быть полезен во многих случаях. Учить больше. В этой главе мы углубились в архитектуру базы данных Delphi, сначала изучив разработку элементов управления с учетом данных, а затем изучив внутреннее устройство класса TDataSet для написания нескольких пользовательских компонентов набора данных. В заключительной части метода компонент рассматривает мемо и графические поля. Исправлена ​​ошибка, из-за которой поля Unicode могли перезаписывать значения соседних полей. Сначала я попытался установить DefaultRowHeight, а затем высоту первой строки, но этот подход усложнил код, используемый для вычисления количества видимых строк в сетке (свойство VisibleRowCount, доступное только для чтения).Однако, чтобы этот пример работал, мне пришлось считать пустыми каждое поле даты / времени с начальным нулем. У него есть панель с двумя кнопками, флажком и компонентом навигатора, а также DBGrid, заполняющий его клиентскую область. Это общий метод InternalOpen: вы заметите, что метод устанавливает большинство локальных полей класса, а также поле BookmarkSize базового класса TDataSet. Я уже подготовил файл INI с определением таблицы (файл, указанный ранее при обсуждении инициализации набора данных), и я выполнил программу, чтобы добавить некоторые данные в файл.Delphi поставляется с более чем 40 готовыми компонентами базы данных и предоставляет среду визуального программирования, которая включает в себя интегрированный редактор кода, мастер форм базы данных, который ускоряет шаги по созданию просматриваемой формы данных, и конструктор модулей данных, который можно использовать для совместного доступа к данным между После создания При успешном подключении к базе данных вы можете захотеть вставить / отредактировать / удалить данные из вашего приложения delphi . . Мы … Этот элемент управления настроен для работы только с файлами, установив для его свойства Root значение C :.Это то же поведение, что и у компонента TTable (который выполняет этот шаг с помощью метода CreateTable). Компонент средства просмотра записей, который я опишу в этом разделе, основан на сетке из двух столбцов; в первом столбце отображаются имена полей таблицы, а во втором столбце отображаются соответствующие значения полей. Database Comparer VCL представляет собой 100% компоненты Delphi VCL для Borland Delphi / C ++ Builder. Кроме того, вам необходимо инициализировать буфер с помощью соответствующего флага закладки и значения закладки (или номера записи).Затем InternalSetToRecord вызывает InternalGotoBookmark. Это тот же подход, который используется VCL для некоторых конкретных каналов передачи данных. Эти компоненты позволяют сравнивать и синхронизировать объекты базы данных SQL и записи таблиц для многих популярных баз данных. Кросс-платформенное решение для Delphi, C ++ Builder и Lazarus, разработка с использованием базы данных, модели и кода, Visual ORM Model Designer с генерацией кода, независимое от базы данных хранилище данных в памяти, отображение данных с использованием любой базы данных. осведомленные элементы управления. Основные данные — это позиция текущей записи, которая соответствует индексу списка (а также закладке): производный класс набора данных каталога должен обеспечивать способ загрузки объектов в память при открытии набора данных, чтобы определить правильные поля. , а также для чтения и записи значений этих полей.Пример упрощен тем, что это набор данных только для чтения, поэтому вы можете найти его более простым, чем предыдущий набор данных. Преобразуя значение, на которое указывает этот указатель, к целому числу, вы получаете значение закладки: ключевым методом управления закладками является InternalGotoBookmark, который ваш набор данных использует, чтобы сделать данную запись текущей. RiversoftAVG предоставляет ряд наборов компонентов, включая библиотеку компонентов SVG, набор компонентов диаграмм, генетические алгоритмы, нечеткую логику и библиотеки компонентов механизма вывода. TurboDB for VCL — это база данных для Delphi, написанная на Delphi, которая поддерживает большой набор функций SQL и предлагает его через хорошо известные компоненты VCL для Database, Table, Query и BatchMove. Обратите внимание, что в методе AllocRecordBuffer компонент выделяет память для буфера записи, включая как данные базы данных, так и информацию о записи. Компоненты доступа к данным SQL Server (SDAC) — это библиотека компонентов, которая обеспечивает встроенное подключение к SQL Server из Delphi и C ++ Builder, включая Community Edition, а также Lazarus (и Free Pascal) для Windows, Linux, macOS, iOS и Android как для 32-битных, так и для 64-битных платформ.Поддержка базы данных является ключевой функцией и обеспечивается FireDAC (компоненты доступа к базе данных). Этот компонент набора данных наследуется от TMdListDataSet, как в предыдущем примере. Все компоненты Rosi являются производными от стандартных компонентов и могут просто заменить стандартные компоненты без потери текущих настроек и без изменения кода. Разработчики могут начать использовать его немедленно, без длительного обучения. Типичными примерами компонентов Delphi являются: Delphi PDF, сетка Delphi и элементы управления диаграммой Delphi.Если во время выбора записи все идет нормально, компонент загружает данные из потока, перемещаясь в позицию текущей записи (заданную размером записи, умноженным на номер записи). Вот весь код для метода GetRecord: Если есть ошибка и параметр DoCheck имеет значение True, GetRecord вызывает исключение. Я использовал два локальных поля, названных EofCrack и BofCrack, чтобы упростить чтение этого кода: Метод InternalRecordCount — это виртуальный метод, представленный в моем классе TMdCustomDataSet, потому что разные наборы данных могут иметь локальное поле для этого значения (как в случае набор данных на основе потока, который имеет поле FRecordCount) или вычислить его на лету.Вместо этого он был написан для Delphi 4 и предназначен для демонстрации того, как получить доступ к ADO, если у вас нет компонентов Delphi ADO. Альтернативное решение — сделать копию всего файла без данной записи, а затем заменить исходный файл копией. Вы также заметите еще одно объявление записи в начале: структуру, используемую для хранения дополнительных данных для каждой записи данных, которую вы помещаете в буфер. Чтобы улучшить графический вывод, элемент управления делает строки для BLOB-полей в два раза выше, чем для текстовых полей.Вызывая Add, код создает новый пустой объект целевого класса и добавляет его во внутренний список: Чтобы продемонстрировать использование этого компонента, я написал пример ObjDataSetDemo. Все элементы управления с учетом данных, которые я создал к этому моменту, относятся к определенным полям набора данных, поэтому я использовал объект TFieldDataLink, чтобы установить соединение с источником данных. для любой базы данных. Этот метод вызывается методом AddRecord, который, в свою очередь, вызывается InsertRecord и AppendRecord. Запутанным элементом этих двух методов является то, что они оба принимают параметр поля и параметр буфера.Вот пример переопределенного метода, который запускает соответствующее событие, если доступно: Класс TFieldDataLink также содержит свойства Field и FieldName, которые позволяют подключать элемент управления с поддержкой данных к определенному полю набора данных. Вы можете установить свойство Default-RowHeight, но в этом случае строка заголовка, вероятно, будет слишком высокой.

Создание простого приложения VCL для данных XML

Embarcadero RAD Studio предоставляет среду разработки для приложений Delphi и C ++ Builder.С помощью компонентов CData FireDAC для XML вы получаете доступ к живым данным XML в RAD Studio, абстрагируя данные в таблицах, представлениях и хранимых процедурах, которые можно использовать для извлечения и обновления данных XML. В этой статье будет рассмотрено подключение к XML и создание простого приложения VCL с помощью Form Designer.

Создание приложения VCL для данных XML

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

В следующем примере заполняется элемент управления TDBGrid .

  1. Создайте новое приложение VCL Forms.
  2. Перетащите на форму объекты TFDPhysXMLDriverLink и TFDConnection .
  3. Дважды щелкните объект TFDConnection . Откроется редактор соединений FireDAC. Выберите «CData.XML» в меню DriverId и настройте свойства подключения.

    См. Главу «Начало работы» в документации поставщика данных для проверки подлинности в источнике данных: поставщик данных моделирует XML API в виде двунаправленных таблиц базы данных и XML-файлов в виде представлений только для чтения (локальные файлы, файлы, хранящиеся в популярных облачных сервисах, и FTP-серверы) .Поддерживаются основные схемы аутентификации, включая HTTP Basic, Digest, NTLM, OAuth и FTP. Руководства по аутентификации см. В главе «Начало работы» в документации поставщика данных.

    После установки URI и предоставления любых значений аутентификации установите DataModel для более точного соответствия представления данных структуре ваших данных.

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

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

    См. Главу «Моделирование XML-данных» для получения дополнительной информации о настройке реляционного представления.Вы также найдете образцы данных, которые используются в следующих примерах. Данные включают записи о людях, автомобилях, которыми они владеют, и различных услугах по техническому обслуживанию, выполненных для этих автомобилей.

  4. Перетащите на форму объект TFDQuery и установите следующие свойства:
    • Соединение — Установите это свойство для объекта TFDConnection , если этот объект еще не указан.
    • SQL — Нажмите кнопку в свойстве SQL и введите запрос.
    • Активный — Установите для этого свойства значение true.
  5. Перетащите на форму объект TDataSource и установите следующее свойство:
    • DataSet — в меню этого свойства выберите имя объекта TFDQuery .
  6. Перетащите на форму элемент управления TDBGrid и установите следующее свойство:
    • DataSource — Выберите имя TDataSource .
  7. Перетащите на форму TFDGUIxWaitCursor . Это необходимо, чтобы избежать ошибки во время выполнения.

Теперь у вас есть исполняемое приложение, которое отображает результаты SQL-запроса, заданного в объекте TFDQuery .

Советы Delphi

В этом документе описаны минимальные шаги, необходимые для создания системы с учетом данных. Компонент просмотра, который отображает данные для одного поля.Пример компонент является потомком TPanel с DataSource и DataField свойств, аналогичных компоненту TDBText . & quout; Making a Control Data-Aware »в Руководстве по составлению компонентов в дополнительные примеры можно найти в файле справки Delphi.

Основные шаги по созданию компонента просмотра данных

Создайте или создайте компонент, который позволяет отображать, но не вводить данные. Например, вы можете использовать TMemo с ReadOnly установлено значение true. В примере, приведенном в этом документе, мы будем использовать TCustomPanel . Это позволит отображать, но не вводить данные.

  • Добавьте в компонент объект связи с данными. Этот объект управляет связью между компонентом и таблицей базы данных.
  • Добавьте свойства DataField и DataSource в составная часть.
  • Добавьте методы для получения и установки DataField и Источник данных .
  • Добавьте метод DataChange компонент для обработки ссылки данных событие OnDataChange объекта .
  • Переопределите конструктор компонента, чтобы создать канал данных и подключить DataChange метод.
  • Переопределите деструктор компонента, чтобы очистить канал данных.

Создание TDBPanel

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

В Delphi выберите соответствующий пункт меню, чтобы создать новый компонент (это будет варьироваться в зависимости от редакции Delphi), и укажите TDBPanel как имя класса и TCustomPanel в качестве типа предка. Вы можете указать любая страница палитры.

Добавьте DB и DBTables к вашему использует пункт.

Добавьте объект ссылки на данные в личный раздел компонента.Этот пример будет отображать данные для одного поля, поэтому мы будем использовать TFieldDataLink для обеспечить связь между нашим новым компонентом и источником данных. Назовите новый объект канала передачи данных FDataLink . Пример:

частный
  FDataLink: TFieldDataLink;
 

Добавьте свойства DataField и DataSource в составная часть. Мы добавим вспомогательный код для методов get и set в следующие шаги. Обратите внимание, что наш новый компонент будет иметь DataField и DataSource свойства и FDataLink также будут иметь собственные свойства DataField и Datasource .Пример:

опубликовано
  свойство DataField: чтение строки GetDataField запись SetDataField;
  свойство DataSource: TDataSource читать GetDataSource писать SetDataSource;
 

Добавьте частные методы, чтобы получить и установить DataField и DataSource значения свойств в и из DataField и DataSource для FDataLink . Пример:

...
частный
  FDataLink: TFieldDataLink;
  функция GetDataField: String;
  функция GetDataSource: TDataSource;
  процедура SetDataField (значение константы: строка);
  процедура SetDataSource (Значение: TDataSource);
...
 
выполнение
 
функция TDBPanel.GetDataField: String;
начинать
  Результат: = FDataLink.FieldName;
конец;
 
функция TDBPanel.GetDataSource: TDataSource;
начинать
  Результат: = FDataLink.DataSource;
конец;
 
процедура TDBPanel.SetDataField (значение константы: строка);
начинать
  FDataLink.FieldName: = Значение;
конец;
 
процедура TDBPanel.SetDataSource (Значение: TDataSource);
начинать
  FDataLink.DataSource: = Значение;
конец;
 

Добавьте частный метод DataChange , который будет назначен каналу передачи данных. OnDataChange событие.В методе DataChange добавьте код в отображать фактические данные полей базы данных, предоставленные объектом связи с данными. В этом Например, мы назначаем значение поля FDataLink заголовку панели. Пример:

...
частный
  процедура DataChange (Sender: TObject);
...
 
выполнение
 
процедура TDBPanel.DataChange (Sender: TObject);
начинать
  если FDataLink.Field = nil, то
    Подпись: = '';
  еще
    Подпись: = FDataLink. Field.AsString;
конец;
 

Переопределите конструктор компонента Создайте метод .в реализация Create , создать объект FDataLink , и назначьте частный метод DataChange для FDataLink OnDataChange событие. Пример:

...
общественный
  конструктор Create (AOwner: TComponent); переопределить;
...
 
выполнение
 
конструктор TMyDBPanel.Create (AOwner: TComponent);
начинать
  унаследованный Create (AOwner);
  FDataLink: = TFieldDataLink.Create;
  FDataLink.OnDataChange: = DataChange;
конец;
 

Переопределить деструктор компонента Метод уничтожения .в реализация Уничтожить , установить OnDataChange в ноль (избегает GPF), и бесплатный FDatalink . Пример:

...
общественный
  деструктор Destroy; переопределить;
...
 
выполнение
 
деструктор TDBPanel.Destroy;
начинать
  FDataLink.OnDataChange: = ноль;
  FDataLink.Free;
  унаследованный Destroy;
конец;
 

Сохраните устройство и установите компонент (см. Руководство пользователя и Руководство для разработчиков компонентов в справке Delphi для получения дополнительных сведений о сохранении модулей и установке составные части).

Чтобы проверить работоспособность компонента, добавьте TTable , TDatasource , TDBNavigator и TDBPanel к форма. Установите TTable DatabaseName и TableName на DBDemos и BioLife соответственно, а Active property to True . Установить TDatasource.Dataset в Table1 . Установить TDBNavigator и TDBPanel.DataSource свойство в Источник данных1 . Необходимо указать имя TDBPanel.DataField как «Common_Name». Запустите приложение и используйте навигатор для перехода между записи, демонстрирующие способность TDBPanel обнаруживать изменения в данных и отобразите соответствующее значение поля.

Полный список источников

unit Mydbp;
 
интерфейс
 
использует
  SysUtils, WinTypes, WinProcs, сообщения, классы, графика,
  Элементы управления, формы, диалоги, ExtCtrls, DB, DBTables;
 
тип
  TDBPanel = класс (TCustomPanel)
  частный
    FDataLink: TFieldDataLink;
    функция GetDataField: String;
    функция GetDataSource: TDataSource;
    процедура SetDataField (значение константы: строка);
    процедура SetDataSource (Значение: TDataSource);
    процедура DataChange (Sender: TObject);
общественный
  конструктор Create (AOwner: TComponent); переопределить;
  деструктор Destroy; переопределить;
опубликовано
  свойство DataField: чтение строки GetDataField запись SetDataField;
  свойство DataSource: TdataSource читать GetDataSource писать SetDataSource;
конец;
 
Реестр процедур;
 
выполнение
 
Реестр процедур;
начинать
  RegisterComponents ('Примеры', [TDBPanel]);
конец;
 
функция TDBPanel.GetDataField: String;
начинать
  Результат: = FDataLink.FieldName;
конец;
 
функция TDBPanel.GetDataSource: TDataSource;
начинать
  Результат: = FDataLink.DataSource;
конец;
 
процедура TDBPanel.SetDataField (значение константы: строка);
начинать
  FDataLink.FieldName: = Значение;
конец;
 
процедура TDBPanel.SetDataSource (Значение: TDataSource);
начинать
  FDataLink.DataSource: = Значение;
конец;
 
процедура TDBPanel.DataChange (Sender: TObject);
начинать
  если FDataLink.Field = nil, то
    Подпись: = ''
  еще
    Подпись: = FDataLink.Field.AsString;
конец;
 
конструктор TDBPanel.Create (AOwner: TComponent);
начинать
  унаследованный Create (AOwner);
  FDataLink: = TFieldDataLink.Create;
  FDataLink.OnDataChange: = DataChange;
конец;
 
деструктор TDBPanel.Destroy;
начинать
  FDataLink.Free;
  FDataLink.OnDataChange: = ноль;
  унаследованный Destroy;
конец;
 
конец.
 
Оригинальный ресурс: Бассейн Дельфи
Автор: Неизвестно
Добавлен: 08. 07.2012
Последнее обновление: 2012-07-08

Источники Delphi — Список рисунков

Содержание


Глава 1: Delphi 7 и его IDE

Фигура 1.1. Форма и модуль данных в Delphi 7 IDE
Рисунок 1.2: Страница Preferences диалогового окна Environment Options
Рисунок 1.3: Окно «Редактировать элемент списка дел» можно использовать для изменения элемента дела, эту операцию вы также можете выполнить непосредственно в исходном коде.
Рисунок 1.4: Несколько языков, поддерживаемых IDE Delphi, могут быть связаны с различными расширениями файлов на странице «Параметры источника» диалогового окна «Свойства редактора».
Фигура 1.5. Вы можете настроить проводник кода в диалоговом окне «Параметры среды».
Рисунок 1.6: Представление «Диаграмма» показывает отношения между компонентами (и даже позволяет вам их настраивать).
Рисунок 1.7: Параметры печати для представления диаграммы
Рисунок 1.8: Пример Frames1 демонстрирует использование кадров. Фрейм (слева) и его экземпляр внутри формы (справа) синхронизируются.
Рисунок 1.9: Менеджер проекта Delphi для нескольких целей
Фигура 1.10: Новая страница сообщений компилятора диалогового окна параметров проекта
Рисунок 1.11: Браузер проекта
Рисунок 1.12: Первая страница диалогового окна New Items, обычно известного как Object Repository

Глава 2: Язык программирования Delphi

Рисунок 2. 1: Результат примера CreateComps, который создает компоненты Button во время выполнения
Рисунок 2.2: Форма
в примере DateProp
Фигура 2.3. Две формы примера FormProp во время выполнения
Рисунок 2.4: Представление структуры объекта в памяти со ссылкой на нее
Рисунок 2.5: Представление операции присвоения ссылки на объект другому объекту. Это отличается от копирования фактического содержимого одного объекта на другой.
Рисунок 2.6: Вывод программы NewDate с названием месяца и дня в зависимости от региональных настроек Windows
Фигура 2.7: Выходные данные примера PolyAnimals
Рисунок 2.8: Пример ErrorLog и журнал, который он производит
Рисунок 2.9: Пример вывода ClassRef example

Глава 3: Библиотека времени выполнения

Рисунок 3.1: Пример округления, продемонстрированное округление банкира и арифметическое округление
Рисунок 3.2: Форма примера VariantComp во время разработки
Рисунок 3.3. Пример ConvDemo во время выполнения
Рисунок 3.4: Выходные данные модуля EuroConv, показывающие использование механизма преобразования Delphi с настраиваемой единицей измерения
Рисунок 3.5: Пример вывода приложения FilesList
Рисунок 3.6: Диалоговое окно процедуры SelectDirectory, отображаемое приложением FilesList
Рисунок 3.7: Результат выполнения примера IfSender
Рисунок 3.8: Выходные данные примера ClassInfo

Глава 4: Классы базовой библиотеки

Рисунок 4.1: Графическое представление основных групп компонентов VCL
Рисунок 4.2: Выходные данные примера RunProp, который обращается к свойствам по имени во время выполнения
Рисунок 4.3: В примере ChangeOwner нажатие кнопки «Изменить» перемещает компонент Button1 во вторую форму.
Рисунок 4.4: Список дат, показанный в примере ListDemo
Рисунок 4. 5: Текстовое описание компонента формы, отображаемое внутри себя в примере FormToText
Рисунок 4.6: В примере ZCompress можно сжать файл с помощью библиотеки ZLib.
Рисунок 5.1: Сравнение первых трех страниц палитры компонентов для приложения на основе CXL (вверху) и приложения на основе VCL (внизу)
Рисунок 5.2: Приложение, написанное с помощью CLX, можно напрямую перекомпилировать под Linux с помощью Kylix (отображается в фоновом режиме).
Рисунок 5.3: Пример HtmlEdit во время выполнения: Когда вы добавляете новый HTML-текст в заметку, вы сразу получаете предварительный просмотр.
Рисунок 5.4: В примере NameValues ​​используется компонент ValueListEditor, который показывает пары имя / значение или ключ / значение в списке строк, также видимых в простой заметке.
Рисунок 5.5: Конструктор меню Delphi в действии
Рисунок 5.6. Диалоговое окно «Изменить порядок табуляции»
Рисунок 5.7: Пример InFocus во время выполнения
Рисунок 5.8: Элементы управления в примере Anchors автоматически перемещаются и растягиваются, когда пользователь изменяет размер формы. Для перемещения элементов управления код не требуется, только правильное использование свойства Anchors.
Рисунок 5.9: Компонент splitter в примере Split1 определяет минимальный размер для каждого элемента управления в форме, даже тех, которые не примыкают к разделителю.
Рисунок 5.10: Элемент управления ListBox в примере CustHint показывает разные подсказки, в зависимости от того, над каким элементом списка находится курсор.
Рисунок 5.11: Рисуемое пользователем меню примера ODMenu
Рисунок 5.12: Различные примеры выходных данных компонента ListView в программе RefList, полученных путем изменения свойства ViewStyle и добавления флажков
Рисунок 5.13: Пример DragTree после загрузки данных и развертывания ветвей
Рисунок 5. 14. Пример CustomNodes имеет представление в виде дерева с объектами узлов, основанными на различных настраиваемых классах, благодаря событию OnCreateNodes-Class.

Глава 6: Создание пользовательского интерфейса

Рисунок 6.1: Первый лист PageControl примера Pages с его контекстным меню
Рисунок 6.2: Вторая страница примера может использоваться для изменения размера и расположения вкладок. Здесь вы можете увидеть вкладки слева от элемента управления страницей.
Рисунок 6.3: Интерфейс программы просмотра растровых изображений в примере BmpViewer. Обратите внимание на вкладки, нарисованные владельцем.
Рисунок 6.4: Первая страница примера WizardUI во время разработки
Рисунок 6.5: Панель инструментов примера RichBar. Обратите внимание на раскрывающееся меню.
Рисунок 6.6: StatusBar в примере RichBar отображает более подробное описание, чем подсказка.
Рисунок 6.7: Программа StylesDemo, приложение для Windows, которое в настоящее время имеет необычный макет Motif
Рисунок 6.8: В примере Pages используется текущая тема Windows XP, поскольку она включает файл манифеста (сравните рисунок с 6.1)
Рисунок 6.9: Редактор компонентов ActionList со списком предопределенных действий, которые вы можете использовать
Рисунок 6.10: Редактор ActionList примера действий
Рисунок 6.11: Пример действий с подробным описанием отправителя события
OnExecute объекта действия
Рисунок 6.12: Пример MdEdit2 во время выполнения, когда пользователь переставляет панели инструментов на панели управления
Рисунок 6.13: Пример MdEdit2 позволяет закрепить панели инструментов (но не меню) вверху или внизу формы или оставить их плавающими.
Рисунок 6.14: Пример DockTest с тремя элементами управления, закрепленными в основной форме
Рисунок 6.15: Основная форма примера DockPage после того, как форма была прикреплена к элементу управления страницей слева.
Рисунок 6.16: Три страницы диалогового окна редактора ActionManager
Рисунок 6.17. Используя компонент CustomizeDlg, вы можете позволить пользователю настраивать панели инструментов и меню приложения, перетаскивая элементы из диалогового окна или перемещая их на панели действий.
Рисунок 6.18: ActionManager отключает недавно использованные пункты меню, которые вы все еще можете увидеть, выбрав команду расширения меню.
Рисунок 6.19: Приложение ListActions имеет панель инструментов, на которой размещены статический список и виртуальный список.
Рисунок 7.1: динамическая форма, сгенерированная примером DynaForm, полностью создается во время выполнения без поддержки времени разработки.
Рисунок 7.2: Образцы форм с различными стилями границ, созданные в примере
Borders
Рисунок 7.3: Пример BIcons. Выбрав значок рамки справки и нажав кнопку, вы получите справку, показанную на рисунке.
Рисунок 7.4: В примере NoTitle нет настоящей подписи, но есть фальшивая, сделанная с меткой.
Рисунок 7.5. Программа KPreview во время разработки
Рисунок 7.6: Во время операции перетаскивания в примере MouseOne пунктирная линия используется для обозначения последней области прямоугольника.
Рисунок 7.7: Результат ColorKeyHole, показывающий эффект новых свойств TransparentColor и AlphaBlend и Animate-Window API
Рисунок 7.8: Результат выполнения примера
Scroll1
Рисунок 7.9: Линии для рисования на виртуальной поверхности формы
Рисунок 7.10: Страница «Формы» диалогового окна «Параметры проекта Delphi»
Рисунок 7.11: Диалоговое окно примера RefList2, используемого в режиме редактирования. Обратите внимание на используемый графический компонент ComboBoxEx.
Рисунок 7.12: Три формы (основная форма и два диалоговых окна) примера DlgApply во время выполнения
Рисунок 7. 13: Диалоговое окно выбора шрифта с кнопкой Применить
Рисунок 7.14: Основная форма примера Splash с экраном-заставкой (это версия Splash3)

Глава 8: Архитектура приложений Delphi

Рисунок 8.1: Пример ActivApp показывает, активно ли приложение и какая из форм приложения активна.
Рисунок 8.2: Вывод примера экрана с некоторыми вторичными формами
Рисунок 8.3: Программа MdiDemo использует серию предопределенных действий Delphi, связанных с меню и панелью инструментов.
Рисунок 8.4: Результат выполнения примера MdiMulti с дочерним окном, в котором отображаются круги
Рисунок 8.5: Строка меню приложения MdiMulti автоматически изменяется в соответствии с выбранным в данный момент дочерним окном, что можно увидеть, сравнив строку меню с панелью на рисунке 8.4.
Рисунок 8.6: Диалоговое окно «Новые элементы» позволяет создать унаследованную форму.
Рисунок 8.7: Две формы примера VFI во время выполнения
Рисунок 8.8: Форма базового класса и две унаследованные формы примера PoliForm во время разработки
Рисунок 8.9: Фрейм и два его экземпляра во время разработки, в примере Frames2
Рисунок 8.10: Каждая страница примера FramePag содержит фрейм, таким образом разделяя код этой сложной формы на более управляемые фрагменты.
Рисунок 8.11: Первая страница примера FrameTab во время выполнения. Фрейм внутри вкладки создается во время выполнения.

Глава 9: Написание компонентов Delphi

Рисунок 9.1: Редактор пакетов
Рисунок 9.2: Параметры проекта для пакетов
Рисунок 9.3: В разделе «Содержит» редактора пакетов показаны как модули, включенные в пакет, так и файлы ресурсов компонентов.
Рисунок 9.4: Инспектор объектов может автоматически разворачивать подкомпоненты, показывая их свойства, как в случае свойства Timer компонента TMdClock.
Рисунок 9.5: Компонент, ссылающийся на внешнюю метку во время разработки
Рисунок 9.6: Выходные данные компонента
Arrow
Рисунок 9.7: Вывод компонента Arrow с толстым пером и специальной кистью для штриховки
Рисунок 9.8. Компонент «Стрелка» определяет категорию настраиваемых свойств «Стрелка», как вы можете видеть в Инспекторе объектов. Обратите внимание, что свойства могут быть видны в нескольких разделах, например в этом случае свойство Filled.
Рисунок 9.9: Пример использования компонента
ActiveButton
Рисунок 9.10: Пример ListDialDemo показывает диалоговое окно, инкапсулированное в компоненте ListDial.
Рисунок 9.11: Редактор коллекции с Object TreeView и Object Inspector для элемента коллекции
Рисунок 9.12: Список звуков предоставляет подсказку для пользователя, который также может ввести значение свойства или дважды щелкнуть, чтобы активировать редактор (показано ниже, на рисунке 9.13).
Рисунок 9.13: Форма редактора свойств звука отображает список доступных звуков и позволяет загрузить файл и прослушать выбранный звук.
Рисунок 9.14: Пользовательские пункты меню, добавленные редактором компонентов компонента ListDialog

Глава 10: Библиотеки и пакеты

Рисунок 10.1: Результат примера CallCpp при нажатии каждой из кнопок
Рисунок 10.2: Выходные данные примера CallFrst, который вызывает DLL, которую вы создали в Delphi
Рисунок 10.3: На странице Application диалогового окна Project Options теперь есть раздел Library Name.
Рисунок 10.4: Если вы запустите две копии программы UseMem, вы увидите, что глобальные данные в ее DLL не используются совместно.
Рисунок 10.5: Структура пакета, содержащего форму, в редакторе пакетов Delphi
Рисунок 10.6: Вывод примера PackInfo с подробностями об используемых им пакетах

Глава 11: Моделирование и программирование ООП (с ModelMaker)

Рисунок 12. 1: Пример идентификаторов GUID, созданных в примере NewGuid. Значения зависят от моего компьютера и времени, в течение которого я запускаю эту программу.
Рисунок 12.2: Мастер COM-объектов
Рисунок 12.3: Документ Word создается и составляется приложением WordTest Delphi.
Рисунок 12.4: Редактор библиотеки типов, показывающий детали интерфейса
Рисунок 12.5: Диалоговое окно импорта библиотеки типов Delphi.
Рисунок 12.6: Вторая панель инструментов в примере OleCont (вверху) заменена панелью инструментов сервера (внизу).
Рисунок 12.7: Пример WordCont показывает, как использовать автоматизацию со встроенным объектом.
Рисунок 12.8: Программа WebDemo после выбора страницы, хорошо известной разработчикам Delphi
Рисунок 12.9. Элемент управления ActiveX XArrow и его страница свойств, размещенная в среде Delphi
Рисунок 12.10: Элемент управления XClock на примере HTML-страницы
Рисунок 12.11: Диалоговое окно New Trans-actional Object, используемое для создания объекта COM +
Рисунок 12.12: Недавно установленный компонент COM + в настраиваемом приложении COM + (как показано с помощью инструмента Microsoft Com-ponent Services)
Рисунок 12.13: Событие COM + с двумя подписками в консоли управления службами компонентов
Рисунок 12.14. Программа NetImport использует объект .NET для суммирования чисел.

Глава 13: Архитектура базы данных Delphi

Рисунок 13.1: Пример локальной таблицы, активной во время разработки в Delphi IDE
Рисунок 13.2: XML-отображение файла CDS в примере MyBase2. Структура таблицы определяется программой, которая создает файл для набора данных при его первом запуске.
Рисунок 13.3: Элементы управления с учетом данных в примере DbAware во время разработки в Delphi
Рисунок 13.4: Результат примера CustLookup с DBLookupCombo-Box, показывающим несколько полей в раскрывающемся списке
Рисунок 13. 5: Редактор полей с диалоговым окном «Добавить поля»
Рисунок 13.6: Результат выполнения примера FieldAcc после нажатия кнопок «Центр» и «Формат»
Рисунок 13.7: Определение вычисляемого поля в примере Calc
Рисунок 13.8: Результат выполнения примера Calc. Обратите внимание на вычисляемый столбец «Плотность населения» и кнопку с многоточием, отображаемую при его редактировании.
Рисунок 13.9: Результат выполнения примера FieldLookup с раскрывающимся списком внутри сетки, отображающим значения, взятые из другой таблицы базы данных
Рисунок 13.10: При обработке событий OnGetText и On-SetText поля даты пример NullDates отображает конкретные выходные данные для значений NULL.
Рисунок 13.11: Результат программы Total, показывающий общую зарплату сотрудников
Рисунок 13.12: Программа DrawData отображает сетку, которая включает текст мемо-поля и вездесущую рыбу Borland.
Рисунок 13.13: В примере MltGrid есть элемент управления DBGrid, который позволяет выбирать несколько строк.
Рисунок 13.14: Результат примера NonAware в режиме просмотра. Программа вручную извлекает данные каждый раз, когда изменяется текущая запись.
Рисунок 13.15: В примере SendToDb вы можете использовать поле со списком для выбора записи, которую хотите просмотреть.
Рисунок 13.16: Пример CdsCalcs демонстрирует, что, написав небольшой код, вы можете заставить элемент управления DBGrid визуально отображать группировку, определенную в ClientDataSet.
Рисунок 13.17: В нижней части редактора полей ClientDataSet отображаются агрегированные поля.
Рисунок 13.18: Пример MastDet во время выполнения

Глава 14: Клиент / сервер с dbExpress

Рисунок 14.1: IBConsole позволяет управлять с одного компьютера базами данных InterBase, размещенными на нескольких серверах.
Рисунок 14. 2: IBConsole может открывать отдельные окна, чтобы показать вам детали каждой сущности — в данном случае таблицу.
Рисунок 14.3: Окно Interactive SQL IBConsole позволяет вам заранее попробовать запросы, которые вы планируете включать в свои программы Delphi.
Рисунок 14.4: Редактор подключений dbExpress с диалоговым окном настроек драйверов dbExpress
Рисунок 14.5. Редактор CommandText, используемый компонентом SQLDataSet для запросов
Рисунок 14.6: Образец журнала, полученный SQLMonitor в примере DbxSingle
Рисунок 14.7: Пример SchemaTest позволяет вам видеть таблицы базы данных и столбцы данной таблицы.
Рисунок 14.8: Редактирование набора параметров компонента запроса
Рисунок 14.9: Пример ParQuery во время выполнения
Рисунок 14.10. Программа CdsDelta отображает состояние каждой записи ClientDataSet.
Рисунок 14.11: Пример CdsDelta позволяет увидеть временные запросы на обновление, хранящиеся в свойстве Delta объекта ClientDataSet.
Рисунок 14.12: Диалоговое окно согласования ошибки, предоставляемое Delphi в репозитории объектов и используемое в примере CdsDelta
Рисунок 14.13: Форма приложения TranSample во время разработки. С помощью переключателей можно установить различные уровни изоляции транзакции.
Рисунок 14.14: Вывод примера
IbxUpdSql
Рисунок 14.15: Результат примера IbxMon на основе компонента IBMonitor
Рисунок 14.16: Информация о сервере, отображаемая приложением IbxMon
Рисунок 14.17: Редактор свойства GeneratorField наборов данных IBX
Рисунок 14.18: Форма, показывающая компании, офисы и людей (часть примера RWBlocks)
Рисунок 14.19: Пример формы RWBlocks для регистрации класса
Рисунок 14.20: Бесплатная форма запроса в примере RWBlocks предназначена для опытных пользователей.
Рисунок 15. 1: Редактор строки подключения Delphi
Рисунок 15.2: Первая страница редактора строки подключения Microsoft
Рисунок 15.3: Пример OpenSchema извлекает первичные ключи таблиц базы данных.
Рисунок 15.4: Настройка расширенных свойств
Рисунок 15.5: ABCCompany.xls в Delphi — небольшая дань уважения Дугласу Адамсу
Рисунок 15.6: Форма примера DataClone с двумя копиями набора данных (оригинал и клон)

Глава 16.Многоуровневые приложения DataSnap

Рисунок 16.1: Мастер модуля удаленных данных
Рисунок 16.2: Когда вы активируете компонент ClientDataSet, подключенный к удаленному модулю данных во время разработки, данные с сервера становятся видимыми, как обычно.
Рисунок 16.3: Сообщение об ошибке, отображаемое в примере ThinCli2, когда идентификатор сотрудника слишком велик
Рисунок 16.4: Форма примера ClientRefresh, которая автоматически обновляет активную запись и позволяет выполнять более обширные обновления, нажимая кнопки
Рисунок 16.5: Вторичная форма примера ThinPlus, показывающая данные параметрического запроса
Рисунок 16.6: Пример ThinPlus показывает, как поле набора данных может отображаться в сетке в плавающем окне или извлекаться с помощью ClientDataSet и отображаться во второй форме.Обычно вы делаете одно из двух, а не оба сразу!

Глава 17: Написание компонентов базы данных

Рисунок 17.1: ProgressBar с поддержкой данных в действии в примере DbProgr
Рисунок 17.2: Полосы прокрутки в примере DbTrack позволяют вводить данные в таблицу базы данных. Флажок и кнопки проверяют включенное состояние компонентов.
Рисунок 17.3: Пример ViewGrid демонстрирует выходные данные компонента RecordView, используя образец таблицы базы данных BioLife от Borland.
Рисунок 17.4: Пример компонента MdDbGrid во время разработки. Обратите внимание на вывод графических и мемо-полей.
Рисунок 17.5: Структура каждого буфера пользовательского набора данных вместе с различными локальными полями, относящимися к его подчастям
Рисунок 17.6: Форма примера StreamDSDemo. Пользовательский набор данных был активирован, поэтому вы уже можете видеть данные во время разработки.
Рисунок 17.7: Выходные данные примера DirDemo, в котором используется необычный набор данных, который показывает данные каталога
Рисунок 17.8. Пример ObjDataSet-Demo демонстрирует набор данных, сопоставленный с объектами с помощью RTTI.
Рисунок 18.1: Rave Designer с простым отчетом
Рисунок 18.2: Окно предварительного просмотра Rave Report для отчета
Рисунок 18.3: После выполнения проекта Rave пользователь может выбрать выходной формат или механизм рендеринга.
Рисунок 18.4: Отчет RaveSingle (сгенерированный с помощью мастера) во время разработки
Рисунок 18.5. Текстовый редактор данных Rave Designer
Рисунок 18.6: Главный / подробный отчет. Перед ним появится редактор стилей ремешка.
Рисунок 18.7: Полужирный текст в отчете определяется во время выполнения сценарием.

Глава 19. Интернет-программирование: сокеты и Indy

Рисунок 19.1: Клиентская программа в примере IndySock1
Рисунок 19.2: Клиентская и серверная программы примера сокета базы данных (IndyDbSock)
Рисунок 19.3. Программа SendList во время разработки
Рисунок 19.4: Приложение WebFind можно использовать для поиска списка сайтов в поисковой системе Google.
Рисунок 19.5: Результат работы текстового браузера BrowseFast
Рисунок 19.6: Страница, отображаемая при подключении браузера к пользовательской программе HttpServ
Рисунок 19.7: Результат примера HtmlProd, простая демонстрация компонента Page-Producer, когда пользователь нажимает кнопку Demo Page
Рисунок 19. 8: Вывод примера HtmlProd для кнопки
строки печати
Рисунок 19.9: Редактор свойства Columns компонента DataSetTable-Producer обеспечивает предварительный просмотр окончательной таблицы HTML (если таблица базы данных активна).

Глава 20. Веб-программирование с помощью WebBroker и WebSnap

Рисунок 20.1: Вывод приложения CgiDate в браузере
Рисунок 20.2: Список приложений, зарегистрированных в отладчике веб-приложений, отображается, когда вы подключаетесь к его домашней странице.
Рисунок 20.3: Выходные данные, соответствующие пути к таблице в примере BrokDemo, который создает таблицу HTML с внутренними гиперссылками
Рисунок 20.4: Действие формы в примере CustQueP создает HTML-форму с динамически обновляемым компонентом выбора, отражающим текущий статус базы данных.
Рисунок 20.5: Программа WebSearch показывает результат нескольких поисков в Google.
Рисунок 20.6. Опции, предлагаемые диалоговым окном «Новое приложение Web-Snap», включают тип сервера и кнопку, позволяющую выбрать основные компоненты приложения.
Рисунок 20.7: Диалоговое окно «Новый модуль страницы WebSnap»
Рисунок 20.8: Пример WSnap2 представляет собой простой сценарий и настраиваемое меню, хранящееся во включаемом файле.
Рисунок 20.9: Конструктор веб-поверхности для страницы inout в примере WSnap2 во время разработки
Рисунок 20.10: страница, показанная в примере WSnapTable при запуске, включает начальную часть выгружаемой таблицы.
Рисунок 20.11: Страница просмотра формы, показанная в примере WSnapTable во время разработки, в Web Surface Designer (или редакторе AdapterPageProducer)
Рисунок 20.12: Пример WSnapMD показывает структуру «главный / подробный» и имеет некоторые настраиваемые выходные данные.
Рисунок 20.13: Два экземпляра браузера работают в двух разных сеансах одного и того же приложения WebSnap.

Глава 21. Веб-программирование с помощью IntraWeb

Рисунок 21.1: Программа IWSimpleApp в браузере
Рисунок 21.2: Контроллерная форма автономного приложения IntraWeb
Рисунок 21.3: Пример IWTree включает меню, древовидную структуру и динамическое создание компонента памятки.
Рисунок 21.4: Пример IWTwoForms использует компонент IWGrid, встроенный текст и компоненты IWURL.
Рисунок 21.5: Приложение IWSession имеет как счетчики для каждого сеанса, так и глобальные счетчики, что можно увидеть, запустив два сеанса в двух разных браузерах (или даже в одном браузере).
Рисунок 21.6: HTML Layout Editor от IntraWeb — это полноценный визуальный HTML-редактор.
Рисунок 21.7: Сетка с учетом данных в примере
IWScrollData
Рисунок 21.8: Основная форма примера IWGridDemo использует рамочную сетку с гиперссылками на вторичную форму.
Рисунок 21.9: Вторичная форма примера IWGridDemo позволяет пользователю редактировать данные и перемещаться по записям.
Рисунок 21.10: Сетка в примере IWClientGrid поддерживает настраиваемую сортировку и фильтрацию без повторной выборки данных на веб-сервере.

Глава 22: Использование технологий XML

Рисунок 22.1: Пример XmlEditOne позволяет вам вводить XML-текст в памятку, указывая ошибки при вводе, и показывает результат во встроенном браузере.
Рисунок 22.2: Пример XmlDomTree может открыть общий XML-документ и показать его внутри общего элемента управления TreeView.
Рисунок 22.3: Пример DomCreate может генерировать различные типы XML-документов с помощью DOM.
Рисунок 22.4: XML, сгенерированный для описания формы программы DomCreate. Обратите внимание (в дереве и в тексте памятки), что свойства типов классов дополнительно расширены.
Рисунок 22.5. Мастер привязки XML-данных Delphi может исследовать структуру документа или схемы (или другого определения документа), чтобы создать набор интерфейсов для упрощенного и прямого доступа к данным DOM.
Рисунок 22.6: Журнал, созданный при чтении XML-документа с помощью SAX в примере Sax-Demo1
Рисунок 22.7: XML Mapper показывает две стороны преобразования для определения сопоставления между ними (с правилами, указанными в центральной части).
Рисунок 22.8: Пример XmlMapping использует компонент TransformProvider, чтобы сделать сложный XML-документ доступным для редактирования в нескольких компонентах ClientData-Set.
Рис 22.9: В примере MapTable создается XML-документ из таблицы базы данных с использованием настраиваемого файла преобразования.
Рисунок 22.10: Редактор InetXPage-Producer позволяет визуально создавать сложные HTML-формы, аналогично AdapterPageProducer.
Рисунок 22.11: Приложение IeFirst отправляет браузеру некоторые компоненты HTML, документ XML и код JavaScript для отображения данных в визуальных компонентах.
Рисунок 22.12: Результат преобразования XSLT, созданного (даже во время разработки) компонентом XSLPageProducer в примере
XslCust
Рис 22.13: Пример LargeXml в действии
Рисунок 23.1: Мастер импорта WSDL в действии
Рисунок 23.2: Пример перевода с английского на немецкий, полученный BabelFish от Alta-Vista через веб-службу
Рисунок 23.3: Описание веб-службы Convert-Service, предоставляемой компонентами Delphi
Рисунок 23.4: Клиент ConvertCaller веб-службы Convert-Service показывает, как мало немецких марок вы получали за такое количество итальянских лир до того, как евро все изменил.
Рисунок 23.5: Клиентская программа веб-службы SoapEmployee, пример
Рисунок 23.6: HTTP-журнал отладчика веб-приложений включает низкоуровневый запрос SOAP.
Рисунок 23.7: Пример FishClient получает двоичный ClientDataSet во вложении SOAP.
Рисунок 23.8: Браузер UDDI, встроенный в Delphi IDE
Рисунок 23.9: В примере UddiInquiry используется ограниченный браузер UDDI.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *