15
© 2013 Радослава Кралева 1 ЮГОЗАПАДЕН УНИВЕРСИТЕТ ,,НЕОФИТ РИЛСКИ” БЛАГОЕВГРАД Проект № BG051PO001-3.1.07-0036 ,,Актуализиране на учебните програми в Природо-математически факултет на ЮЗУ ,,Неофит Рилски“ в съответствие с изискванията на пазара на труда“ Проектът се осъществява с финансовата подкрепа на Оперативна програма „Развитие на човешките ресурси“, съфинансирана от Европейския социален фонд на Европейския съюз Инвестира във вашето бъдеще! Упражнение 5: СЪЗДАВАНЕ НА КЛИЕНТ-СЪРВЪР ПРИЛОЖЕНИЯ ЗА БАЗИ ОТ ДАННИ С БИБЛИОТЕКАТА DBGO ЗА ADO Радослава Кралева В настоящето упражнение ще бъде представено поетапното разработване Windows приложение за работа с бази от данни, което използва библиотеката dbGo за ADO. Примерна сесия на работа с приложението Ex5Demo1 е показана на Фиг. 5.1. Фигура 5.1. Примерна сесия на работа с приложението Ex5Demo1.

¢пражнение 5: Ъ ¡ ЪЪ Я ¡ ¡ DBGO ADOtimetable.swu.bg › lecture › WebSite_ProjectBG510PO001 › ... · © 2013 Радослава Кралева 1 ЮГОЗАПАДЕН

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ¢пражнение 5: Ъ ¡ ЪЪ Я ¡ ¡ DBGO ADOtimetable.swu.bg › lecture › WebSite_ProjectBG510PO001 › ... · © 2013 Радослава Кралева 1 ЮГОЗАПАДЕН

© 2013 Радослава Кралева 1

ЮГОЗАПАДЕН УНИВЕРСИТЕТ ,,НЕОФИТ РИЛСКИ” БЛАГОЕВГРАД

Проект № BG051PO001-3.1.07-0036

,,Актуализиране на учебните програми

в Природо-математически факултет на ЮЗУ ,,Неофит Рилски“

в съответствие с изискванията на пазара на труда“

Проектът се осъществява с финансовата подкрепа на Оперативна програма „Развитие на човешките

ресурси“, съфинансирана от Европейския социален фонд на Европейския съюз

Инвестира във вашето бъдеще!

Упражнение 5: СЪЗДАВАНЕ НА КЛИЕНТ-СЪРВЪР ПРИЛОЖЕНИЯ ЗА БАЗИ ОТ ДАННИ С БИБЛИОТЕКАТА DBGO ЗА ADO

Радослава Кралева В настоящето упражнение ще бъде представено поетапното разработване Windows приложение за работа с бази от данни, което използва библиотеката dbGo за ADO. Примерна сесия на работа с приложението Ex5Demo1 е показана на Фиг. 5.1.

Фигура 5.1. Примерна сесия на работа с приложението Ex5Demo1.

Page 2: ¢пражнение 5: Ъ ¡ ЪЪ Я ¡ ¡ DBGO ADOtimetable.swu.bg › lecture › WebSite_ProjectBG510PO001 › ... · © 2013 Радослава Кралева 1 ЮГОЗАПАДЕН

© 2013 Радослава Кралева 2

Това приложение (Ex5Demo1) ще визуализира и ще предоставя възможност за редактиране на данни от базата от данни Northwind (която е примерна база от данни доставяща се с MS SQL Server). Данните, които ще бъдат достъпвани и обработвани се съхраняват в 3 таблици (Customers, Orders и Employees), връзките между които са показани на Фиг. 5.2.

Фигура 5.2: Част от схемата на релационната база от данни Northwind с чийто таблици ще взаимодейства приложението Ex5Demo1.

1. СЪЗДАВАНЕ НА ПРИЛОЖЕНИЕТО Ex5Demo1

А. Стартирайте RAD Studio и изпълнете следните стъпки:

Стъпка 1: От главното меню изберете File ► New ► VCL Forms Application – Delphi (или C++ Builder) в зависимост от езика, който искате да използвате.

Стъпка 2: От главното меню изберете File ► Save All... Задайте име на модула, който ще съдържа кода с имплементация на главната форма, което да бъде: MainUnit.pas (за Delphi) или MainUnit.cpp (за C++ Builder), а проектния файл запишете като: Ex5Demo1.dproj (за Delphi) или Ex5Demo1.cbproj (за C++ Builder). Стъпка 3: Задайте следните настройки за главната форма на приложението:

object MainForm: TMainForm

Left = 0

Top = 0

BorderIcons = [biSystemMenu, biMinimize]

BorderStyle = bsSingle

Caption = 'MainForm'

ClientHeight = 498

ClientWidth = 729

Page 3: ¢пражнение 5: Ъ ¡ ЪЪ Я ¡ ¡ DBGO ADOtimetable.swu.bg › lecture › WebSite_ProjectBG510PO001 › ... · © 2013 Радослава Кралева 1 ЮГОЗАПАДЕН

© 2013 Радослава Кралева 3

Color = clBtnFace

Font.Charset = DEFAULT_CHARSET

Font.Color = clWindowText

Font.Height = -11

Font.Name = 'Tahoma'

Font.Style = []

OldCreateOrder = False

OnCreate = FormCreate

PixelsPerInch = 96

TextHeight = 13

end

Стъпка 4: От страницата Additional на палитрата с компоненти (Tool Palette) добавете два компонента от тип TShape и един компонент от тип TImage. Настройте тези компоненти както е показано по-долу:

object Shape1: TShape

Left = 8

Top = 32

Width = 713

Height = 2

end

object Shape2: TShape

Left = 8

Top = 285

Width = 713

Height = 2

end

object Image1: TImage

Left = 8

Top = 56

Width = 193

Height = 222

end

Стъпка 5: От страницата Standard на палитрата с компоненти (Tool Palette) добавете двадесет и шест компонента от тип TLabel, и ги настроите както е показано по-долу:

object Label1: TLabel

Left = 208

Top = 40

Width = 11

Height = 13

Caption = 'ID'

FocusControl = DBEdit1

end

object Label2: TLabel

Left = 368

Top = 40

Width = 47

Height = 13

Caption = 'LastName'

FocusControl = DBEdit2

end

object Label3: TLabel

Left = 280

Top = 40

Width = 48

Height = 13

Caption = 'FirstName'

FocusControl = DBEdit3

end

object Label4: TLabel

Left = 208

Top = 80

Width = 20

Height = 13

Caption = 'Title'

FocusControl = DBEdit4

end

object Label6: TLabel

Left = 456

Top = 40

Width = 45

Page 4: ¢пражнение 5: Ъ ¡ ЪЪ Я ¡ ¡ DBGO ADOtimetable.swu.bg › lecture › WebSite_ProjectBG510PO001 › ... · © 2013 Радослава Кралева 1 ЮГОЗАПАДЕН

© 2013 Радослава Кралева 4

Height = 13

Caption = 'BirthDate'

FocusControl = DBEdit6

end

object Label7: TLabel

Left = 368

Top = 80

Width = 42

Height = 13

Caption = 'HireDate'

FocusControl = DBEdit7

end

object Label8: TLabel

Left = 208

Top = 120

Width = 39

Height = 13

Caption = 'Address'

FocusControl = DBEdit8

end

object Label9: TLabel

Left = 208

Top = 160

Width = 19

Height = 13

Caption = 'City'

FocusControl = DBEdit9

end

object Label10: TLabel

Left = 296

Top = 160

Width = 33

Height = 13

Caption = 'Region'

FocusControl = DBEdit10

end

object Label11: TLabel

Left = 456

Top = 120

Width = 54

Height = 13

Caption = 'PostalCode'

FocusControl = DBEdit11

end

object Label12: TLabel

Left = 368

Top = 160

Width = 39

Height = 13

Caption = 'Country'

FocusControl = DBEdit12

end

object Label13: TLabel

Left = 208

Top = 200

Width = 57

Height = 13

Caption = 'HomePhone'

FocusControl = DBEdit13

end

object Label14: TLabel

Left = 456

Top = 80

Width = 47

Height = 13

Caption = 'Extension'

FocusControl = DBEdit14

end

object Label15: TLabel

Left = 8

Top = 40

Width = 28

Height = 13

Caption = 'Photo'

end

object Label16: TLabel

Left = 544

Top = 40

Width = 28

Height = 13

Caption = 'Notes'

FocusControl = DBMemo1

end

object Label17: TLabel

Left = 368

Top = 200

Width = 50

Height = 13

Caption = 'ReportsTo'

end

object Label18: TLabel

Left = 208

Top = 240

Width = 50

Height = 13

Caption = 'PhotoPath'

FocusControl = DBEdit16

end

object Label19: TLabel

Left = 568

Top = 293

Width = 72

Height = 13

Caption = 'CompanyName'

FocusControl = DBEdit17

end

object Label20: TLabel

Left = 512

Top = 333

Width = 65

Height = 13

Caption = 'ContactName'

FocusControl = DBEdit18

end

object Label21: TLabel

Left = 512

Top = 413

Width = 39

Height = 13

Caption = 'Address'

FocusControl = DBEdit19

end

Page 5: ¢пражнение 5: Ъ ¡ ЪЪ Я ¡ ¡ DBGO ADOtimetable.swu.bg › lecture › WebSite_ProjectBG510PO001 › ... · © 2013 Радослава Кралева 1 ЮГОЗАПАДЕН

© 2013 Радослава Кралева 5

object Label22: TLabel

Left = 624

Top = 373

Width = 19

Height = 13

Caption = 'City'

FocusControl = DBEdit20

end

object Label23: TLabel

Left = 512

Top = 373

Width = 39

Height = 13

Caption = 'Country'

FocusControl = DBEdit21

end

object Label24: TLabel

Left = 512

Top = 453

Width = 30

Height = 13

Caption = 'Phone'

FocusControl = DBEdit22

end

object Label25: TLabel

Left = 512

Top = 293

Width = 33

Height = 13

Caption = 'CustID'

FocusControl = DBEdit23

end

object Label26: TLabel

Left = 8

Top = 293

Width = 41

Height = 13

Caption = 'ORDERS'

FocusControl = DBEdit23

end

Стъпка 6: От страницата dbGo на палитрата с компоненти (Tool Palette) добавете един компонент TADOConnection и го настройте както е показано по-долу:

object ADOConnectionNorthwind: TADOConnection

ConnectionString =

'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security In' +

'fo=False;Initial Catalog=Northwind;Data Source=USER\SQLEXPRES' +

'S;'

LoginPrompt = False

Provider = 'SQLOLEDB.1'

Left = 89

Top = 88

end

Стъпка 7: От страницата dbGo на палитрата с компоненти (Tool Palette) добавете четири компонента TADOTable, а от страницата DataAccess добавете четири компонента TDataSource и ги настройте както е показано по-долу (в реда в който са показани):

object ADOTableEmployees: TADOTable

Connection = ADOConnectionNorthwind

CursorType = ctStatic

AfterScroll = ADOTableEmployeesAfterScroll

TableName = 'Employees'

Left = 88

Top = 144

object ADOTableEmployeesEmployeeID: TAutoIncField

FieldName = 'EmployeeID'

ReadOnly = True

end

object ADOTableEmployeesLastName: TWideStringField

FieldName = 'LastName'

end

object ADOTableEmployeesFirstName: TWideStringField

FieldName = 'FirstName'

Size = 10

Page 6: ¢пражнение 5: Ъ ¡ ЪЪ Я ¡ ¡ DBGO ADOtimetable.swu.bg › lecture › WebSite_ProjectBG510PO001 › ... · © 2013 Радослава Кралева 1 ЮГОЗАПАДЕН

© 2013 Радослава Кралева 6

end

object ADOTableEmployeesTitle: TWideStringField

FieldName = 'Title'

Size = 30

end

object ADOTableEmployeesTitleOfCourtesy: TWideStringField

FieldName = 'TitleOfCourtesy'

Size = 25

end

object ADOTableEmployeesBirthDate: TDateTimeField

FieldName = 'BirthDate'

end

object ADOTableEmployeesHireDate: TDateTimeField

FieldName = 'HireDate'

end

object ADOTableEmployeesAddress: TWideStringField

FieldName = 'Address'

Size = 60

end

object ADOTableEmployeesCity: TWideStringField

FieldName = 'City'

Size = 15

end

object ADOTableEmployeesRegion: TWideStringField

FieldName = 'Region'

Size = 15

end

object ADOTableEmployeesPostalCode: TWideStringField

FieldName = 'PostalCode'

Size = 10

end

object ADOTableEmployeesCountry: TWideStringField

FieldName = 'Country'

Size = 15

end

object ADOTableEmployeesHomePhone: TWideStringField

FieldName = 'HomePhone'

Size = 24

end

object ADOTableEmployeesExtension: TWideStringField

FieldName = 'Extension'

Size = 4

end

object ADOTableEmployeesPhoto: TBlobField

FieldName = 'Photo'

GraphicHeader = False

end

object ADOTableEmployeesNotes: TWideMemoField

FieldName = 'Notes'

BlobType = ftWideMemo

end

object ADOTableEmployeesReportsTo: TIntegerField

FieldName = 'ReportsTo'

end

object ADOTableEmployeesPhotoPath: TWideStringField

FieldName = 'PhotoPath'

Size = 255

end

end

object DataSourceEmployees: TDataSource

Page 7: ¢пражнение 5: Ъ ¡ ЪЪ Я ¡ ¡ DBGO ADOtimetable.swu.bg › lecture › WebSite_ProjectBG510PO001 › ... · © 2013 Радослава Кралева 1 ЮГОЗАПАДЕН

© 2013 Радослава Кралева 7

DataSet = ADOTableEmployees

Left = 88

Top = 200

end

object ADOTableOrders: TADOTable

Connection = ADOConnectionNorthwind

CursorType = ctStatic

IndexFieldNames = 'EmployeeID'

MasterFields = 'EmployeeID'

MasterSource = DataSourceEmployees

TableName = 'Orders'

Left = 48

Top = 349

object ADOTableOrdersOrderID: TAutoIncField

FieldName = 'OrderID'

ReadOnly = True

end

object ADOTableOrdersCustomerID: TWideStringField

FieldName = 'CustomerID'

FixedChar = True

Size = 5

end

object ADOTableOrdersEmployeeID: TIntegerField

FieldName = 'EmployeeID'

end

object ADOTableOrdersOrderDate: TDateTimeField

FieldName = 'OrderDate'

end

object ADOTableOrdersRequiredDate: TDateTimeField

FieldName = 'RequiredDate'

end

object ADOTableOrdersShippedDate: TDateTimeField

FieldName = 'ShippedDate'

end

object ADOTableOrdersShipVia: TIntegerField

FieldName = 'ShipVia'

end

object ADOTableOrdersFreight: TBCDField

FieldName = 'Freight'

Precision = 19

end

object ADOTableOrdersShipName: TWideStringField

FieldName = 'ShipName'

Size = 40

end

object ADOTableOrdersShipAddress: TWideStringField

FieldName = 'ShipAddress'

Size = 60

end

object ADOTableOrdersShipCity: TWideStringField

FieldName = 'ShipCity'

Size = 15

end

object ADOTableOrdersShipRegion: TWideStringField

FieldName = 'ShipRegion'

Size = 15

end

object ADOTableOrdersShipPostalCode: TWideStringField

FieldName = 'ShipPostalCode'

Size = 10

Page 8: ¢пражнение 5: Ъ ¡ ЪЪ Я ¡ ¡ DBGO ADOtimetable.swu.bg › lecture › WebSite_ProjectBG510PO001 › ... · © 2013 Радослава Кралева 1 ЮГОЗАПАДЕН

© 2013 Радослава Кралева 8

end

object ADOTableOrdersShipCountry: TWideStringField

FieldName = 'ShipCountry'

Size = 15

end

end

object DataSourceOrders: TDataSource

DataSet = ADOTableOrders

Left = 48

Top = 405

end

object ADOTableCustomers: TADOTable

Connection = ADOConnectionNorthwind

CursorType = ctStatic

IndexFieldNames = 'CustomerID'

MasterFields = 'CustomerID'

MasterSource = DataSourceOrders

TableName = 'Customers'

Left = 224

Top = 349

object ADOTableCustomersCustomerID: TWideStringField

FieldName = 'CustomerID'

FixedChar = True

Size = 5

end

object ADOTableCustomersCompanyName: TWideStringField

FieldName = 'CompanyName'

Size = 40

end

object ADOTableCustomersContactName: TWideStringField

FieldName = 'ContactName'

Size = 30

end

object ADOTableCustomersContactTitle: TWideStringField

FieldName = 'ContactTitle'

Size = 30

end

object ADOTableCustomersAddress: TWideStringField

FieldName = 'Address'

Size = 60

end

object ADOTableCustomersCity: TWideStringField

FieldName = 'City'

Size = 15

end

object ADOTableCustomersRegion: TWideStringField

FieldName = 'Region'

Size = 15

end

object ADOTableCustomersPostalCode: TWideStringField

FieldName = 'PostalCode'

Size = 10

end

object ADOTableCustomersCountry: TWideStringField

FieldName = 'Country'

Size = 15

end

object ADOTableCustomersPhone: TWideStringField

FieldName = 'Phone'

Page 9: ¢пражнение 5: Ъ ¡ ЪЪ Я ¡ ¡ DBGO ADOtimetable.swu.bg › lecture › WebSite_ProjectBG510PO001 › ... · © 2013 Радослава Кралева 1 ЮГОЗАПАДЕН

© 2013 Радослава Кралева 9

Size = 24

end

object ADOTableCustomersFax: TWideStringField

FieldName = 'Fax'

Size = 24

end

end

object DataSourceCustomers: TDataSource

DataSet = ADOTableCustomers

Left = 224

Top = 405

end

object ADOTableEmployeesReports: TADOTable

Connection = ADOConnectionNorthwind

CursorType = ctStatic

AfterScroll = ADOTableEmployeesAfterScroll

OnCalcFields = ADOTableEmployeesReportsCalcFields

TableName = 'Employees'

Left = 608

Top = 112

object ADOTableEmployeesReportsEmployeeID: TAutoIncField

FieldName = 'EmployeeID'

ReadOnly = True

end

object ADOTableEmployeesReportsLastName: TWideStringField

FieldName = 'LastName'

end

object ADOTableEmployeesReportsFirstName: TWideStringField

FieldName = 'FirstName'

Size = 10

end

object ADOTableEmployeesReportsReportsTo: TIntegerField

FieldName = 'ReportsTo'

end

object ADOTableEmployeesReportsEmpFullName: TStringField

FieldKind = fkCalculated

FieldName = 'EmpFullName'

Size = 40

Calculated = True

end

end

object DataSourceEmployeeReports: TDataSource

DataSet = ADOTableEmployeesReports

Left = 608

Top = 176

end

Стъпка 8: От страницата DataControls на палитрата с компоненти (Tool Palette) добавете двадесет и три компонента от тип TDBEdit, и ги настроите както е показано по-долу:

object DBEdit1: TDBEdit

Left = 208

Top = 56

Width = 25

Height = 21

DataField = 'EmployeeID'

DataSource =

DataSourceEmployees

TabOrder = 0

end

object DBEdit2: TDBEdit

Page 10: ¢пражнение 5: Ъ ¡ ЪЪ Я ¡ ¡ DBGO ADOtimetable.swu.bg › lecture › WebSite_ProjectBG510PO001 › ... · © 2013 Радослава Кралева 1 ЮГОЗАПАДЕН

© 2013 Радослава Кралева 10

Left = 368

Top = 56

Width = 81

Height = 21

DataField = 'LastName'

DataSource =

DataSourceEmployees

TabOrder = 1

end

object DBEdit3: TDBEdit

Left = 280

Top = 56

Width = 81

Height = 21

DataField = 'FirstName'

DataSource =

DataSourceEmployees

TabOrder = 2

end

object DBEdit4: TDBEdit

Left = 208

Top = 96

Width = 153

Height = 21

DataField = 'Title'

DataSource =

DataSourceEmployees

TabOrder = 3

end

object DBEdit5: TDBEdit

Left = 240

Top = 56

Width = 33

Height = 21

DataField = 'TitleOfCourtesy'

DataSource =

DataSourceEmployees

TabOrder = 4

end

object DBEdit6: TDBEdit

Left = 456

Top = 56

Width = 81

Height = 21

DataField = 'BirthDate'

DataSource =

DataSourceEmployees

TabOrder = 5

end

object DBEdit7: TDBEdit

Left = 368

Top = 96

Width = 81

Height = 21

DataField = 'HireDate'

DataSource =

DataSourceEmployees

TabOrder = 6

end

object DBEdit8: TDBEdit

Left = 208

Top = 136

Width = 241

Height = 21

DataField = 'Address'

DataSource =

DataSourceEmployees

TabOrder = 7

end

object DBEdit9: TDBEdit

Left = 208

Top = 176

Width = 81

Height = 21

DataField = 'City'

DataSource =

DataSourceEmployees

TabOrder = 8

end

object DBEdit10: TDBEdit

Left = 296

Top = 176

Width = 65

Height = 21

DataField = 'Region'

DataSource =

DataSourceEmployees

TabOrder = 9

end

object DBEdit11: TDBEdit

Left = 456

Top = 136

Width = 81

Height = 21

DataField = 'PostalCode'

DataSource =

DataSourceEmployees

TabOrder = 10

end

object DBEdit12: TDBEdit

Left = 368

Top = 176

Width = 169

Height = 21

DataField = 'Country'

DataSource =

DataSourceEmployees

TabOrder = 11

end

object DBEdit13: TDBEdit

Left = 208

Top = 216

Width = 153

Height = 21

DataField = 'HomePhone'

DataSource =

DataSourceEmployees

TabOrder = 12

end

object DBEdit14: TDBEdit

Left = 456

Top = 96

Page 11: ¢пражнение 5: Ъ ¡ ЪЪ Я ¡ ¡ DBGO ADOtimetable.swu.bg › lecture › WebSite_ProjectBG510PO001 › ... · © 2013 Радослава Кралева 1 ЮГОЗАПАДЕН

© 2013 Радослава Кралева 11

Width = 81

Height = 21

DataField = 'Extension'

DataSource =

DataSourceEmployees

TabOrder = 13

end

object DBMemo1: TDBMemo

Left = 544

Top = 56

Width = 177

Height = 220

DataField = 'Notes'

DataSource =

DataSourceEmployees

ScrollBars = ssVertical

TabOrder = 14

end

object DBEdit16: TDBEdit

Left = 208

Top = 256

Width = 329

Height = 21

DataField = 'PhotoPath'

DataSource =

DataSourceEmployees

TabOrder = 15

end

object DBEdit17: TDBEdit

Left = 568

Top = 309

Width = 153

Height = 21

DataField = 'CompanyName'

DataSource =

DataSourceCustomers

TabOrder = 18

end

object DBEdit18: TDBEdit

Left = 512

Top = 349

Width = 209

Height = 21

DataField = 'ContactName'

DataSource =

DataSourceCustomers

TabOrder = 19

end

object DBEdit19: TDBEdit

Left = 512

Top = 429

Width = 209

Height = 21

DataField = 'Address'

DataSource =

DataSourceCustomers

TabOrder = 20

end

object DBEdit20: TDBEdit

Left = 624

Top = 389

Width = 97

Height = 21

DataField = 'City'

DataSource =

DataSourceCustomers

TabOrder = 21

end

object DBEdit21: TDBEdit

Left = 512

Top = 389

Width = 105

Height = 21

DataField = 'Country'

DataSource =

DataSourceCustomers

TabOrder = 22

end

object DBEdit22: TDBEdit

Left = 512

Top = 469

Width = 209

Height = 21

DataField = 'Phone'

DataSource =

DataSourceCustomers

TabOrder = 23

end

object DBEdit23: TDBEdit

Left = 512

Top = 309

Width = 49

Height = 21

DataField = 'CustomerID'

DataSource =

DataSourceCustomers

TabOrder = 24

end

Page 12: ¢пражнение 5: Ъ ¡ ЪЪ Я ¡ ¡ DBGO ADOtimetable.swu.bg › lecture › WebSite_ProjectBG510PO001 › ... · © 2013 Радослава Кралева 1 ЮГОЗАПАДЕН

© 2013 Радослава Кралева 12

Стъпка 9: От страницата DataControls на палитрата с компоненти (Tool Palette) добавете един компонент TDBNavigator и го настройте както е показано по-долу:

object DBNavigator1: TDBNavigator

Left = 8

Top = 4

Width = 710

Height = 24

DataSource = DataSourceEmployees

Flat = True

TabOrder = 16

end

Стъпка 10: От страницата DataControls на палитрата с компоненти (Tool Palette) добавете един компонент TDBLookupComboBox и го настройте както е показано по-долу:

object DBLookupComboBox1: TDBLookupComboBox

Left = 368

Top = 216

Width = 169

Height = 21

DataField = 'ReportsTo'

DataSource = DataSourceEmployees

KeyField = 'EmployeeID'

ListField = 'EmpFullName'

ListSource = DataSourceEmployeeReports

TabOrder = 25

end

Стъпка 11: От страницата DataControls на палитрата с компоненти (Tool Palette) добавете един компонент TDBGrid и го настройте както е показано по-долу:

object DBGrid1: TDBGrid

Left = 8

Top = 309

Width = 497

Height = 180

DataSource = DataSourceOrders

TabOrder = 17

TitleFont.Charset = DEFAULT_CHARSET

TitleFont.Color = clWindowText

TitleFont.Height = -11

TitleFont.Name = 'Tahoma'

TitleFont.Style = []

Columns = <

item

Expanded = False

FieldName = 'OrderID'

Width = 46

Visible = True

end

item

Expanded = False

Page 13: ¢пражнение 5: Ъ ¡ ЪЪ Я ¡ ¡ DBGO ADOtimetable.swu.bg › lecture › WebSite_ProjectBG510PO001 › ... · © 2013 Радослава Кралева 1 ЮГОЗАПАДЕН

© 2013 Радослава Кралева 13

FieldName = 'CustomerID'

Title.Caption = 'CustID'

Width = 40

Visible = True

end

item

Expanded = False

FieldName = 'OrderDate'

Width = 68

Visible = True

end

item

Expanded = False

FieldName = 'RequiredDate'

Width = 71

Visible = True

end

item

Expanded = False

FieldName = 'ShippedDate'

Width = 67

Visible = True

end

item

Expanded = False

FieldName = 'ShipVia'

Title.Caption = 'SV'

Width = 17

Visible = True

end

item

Expanded = False

FieldName = 'Freight'

Width = 40

Visible = True

end

item

Expanded = False

FieldName = 'ShipName'

Visible = True

end

item

Expanded = False

FieldName = 'ShipAddress'

Visible = True

end

item

Expanded = False

FieldName = 'ShipCity'

Visible = True

end

item

Expanded = False

FieldName = 'ShipRegion'

Visible = True

end

item

Expanded = False

FieldName = 'ShipPostalCode'

Visible = True

end

Page 14: ¢пражнение 5: Ъ ¡ ЪЪ Я ¡ ¡ DBGO ADOtimetable.swu.bg › lecture › WebSite_ProjectBG510PO001 › ... · © 2013 Радослава Кралева 1 ЮГОЗАПАДЕН

© 2013 Радослава Кралева 14

item

Expanded = False

FieldName = 'ShipCountry'

Visible = True

end>

end

След като бъдат добавени и настроени всички компоненти, формата по време на проектиране трябва да изглежда подобно на тази показана на Фиг. 5.3.

Фигура 5.3. Главната форма на приложението Ex5Demo1, след приключване на етапа на проектиране.

Стъпка 12: Създайте манипулатор (обработчик) на събитието OnCreate на главната форма и въведете следния код в редактора за код (Code Editor):

procedure TMainForm.FormCreate(Sender: TObject);

begin

ADOConnectionNorthwind.Open;

ADOTableEmployees.Open;

ADOTableEmployeesReports.Open;

ADOTableOrders.Open;

ADOTableCustomers.Open;

end;

Page 15: ¢пражнение 5: Ъ ¡ ЪЪ Я ¡ ¡ DBGO ADOtimetable.swu.bg › lecture › WebSite_ProjectBG510PO001 › ... · © 2013 Радослава Кралева 1 ЮГОЗАПАДЕН

© 2013 Радослава Кралева 15

Стъпка 13: Създайте манипулатор на събитието OnAfterScroll на таблицата ADOTableEmployeess и въведете в редактора на код показан в следващия програмен фрагмент:

procedure TMainForm.ADOTableEmployeesAfterScroll(DataSet: TDataSet);

var

B1: TBitmap;

MS: TMemoryStream;

begin

B1 := TBitmap.Create;

MS := TMemoryStream.Create;

try

TBlobField(ADOTableEmployees.FieldByName('Photo')).SaveToStream(MS);

MS.Position := 78;

B1.LoadFromStream(MS);

MainForm.Image1.Picture.Assign(B1);

except

MainForm.Image1.Picture.Assign(nil);

end;

B1.Free;

MS.Free;

end;

Понеже данните в полетата от тип Image на MS SQL Server (или OLE Object на MS Access) съдържат заглавна част (header), който е с размер 78 байта, то при извличането на изображение от такава база от данни, е необходимо да се прочетат байтове след 78-ия, където реално се съдържа пикселната информация за самото изображение. Това именно е и целта на метода ADOTableEmployeesAfterScroll.

Дата: 10.12.2013 г. Експерт: _______________________

(Радослава Кралева)