-\ч
Н. 3, Елманова. C++Builder 3.0, архкектура "клиент/сервер" и Internet      ______
Помимо этого поместим t удаленный модуль данных компонент TSession и установим его свойство AutoSessionName равным true, а затем у компонента TDatabase установил то же значение свойства SessionName, что и у компонента TSession. Это необходимо для того, чтобы не было конфликтов между соединениями с базой данных, устанавливаемых в разных экземплярах модуля данных (рис. 8.28).
Создание многозвенных информационных систем с помощью C++Builder 3.0
уш
ТаЫе1    ГаЫе2   Session!  Databasel
Рис. 8.28. Удаленный модуль данных сервера приложений с независимыми соединениями клиентов с базой данных
Теперь установим необходимые значения свойств компонента TDatabase, оставив пустые значения параметров User Name и Password (рис. 8.29).
Далее установим значения свойств DatabaseName компонентов ТТаЫе равными имени компонента TDatabase. После этого с главной формы компонент TDatabase можно удалить - он больше не нужен.
Теперь можно заняться созданием метода Login(). Для этой цели откроем связанную с модулем данных библиотеку типов, щелкнем правой клавишей мыши по имени интерфейса удаленного модуля данных и из появившегося контекстного меню выберем опцию New/Method. Присвоим вновь созданному методу имя Login.
Очевидно, что у этого метода должны быть параметры, передаваемые из клиентского приложения, такие, как имя пользователя и пароль. Поэтому теперь перейдем к закладке Parameters в правой части редактора, нажмем кнопку Add, в качестве имени вновь созданного параметра введем username, а в_качестве типа - BSTR, так как этот параметр представляет собой символьную строку. В колонке Flags выберем значение [in], так как это входной параметр. Точно так же создадим параметр password (рис. 8.30).
		
^^•MyRDM->Database1 Database	тшшш^тт	l^^^^^^lBvl
Г Database		
• Name:                                   Alias name:                             [Jriver name:                         ',		
: jmydb                        (ORACLE?             _»j   |		3
Patametli^fenides: .:     ,-,.-.-:ia- ••		
SERVER NAME=2: USERNAME=	fl-	Defaults       :
NET PROTOCOL=TNS OPEN MODE=READ/WRITE		Clear       i ;
SCHEMA CACHE SIZE=8		-.
;   LANGDRIVER=	d	
;   Options                   '         •-• -       "•'•••"•	,.v^s;;iS::;:* '. ....             .; Ж!1|^:.::. < .. ^||;^ .    •          •; ;щшр	
Г" Login prompt	•.   ijjljt;          ':.!111|:' '	
i Pf Keep inactive connection	ь -ЯР.	I
||f::';':.     '                                                                                       '...•-:•	:!!lf:	
ill? 'ii;    . -  •v,::v..;-	:• ок:: |     Jiff   j	Help      |
ъ,::-Хж„;..,.-,                        -:-.:l I..1..1.;.'                                                                          -    .   :   -              :•	-     •         ••fliSiUS''' '  '	
Рис. 8.29. Свойства компонента TDatabase из удаленного модуля данных
^? appsrv lib		^^^^^^^^^^^^H< :|nl vl
••''11Я|=1ШШ11: ffm:f':^.^&':^  & ",i"'^    le»" lr*e(ts«^Bfelirai:i;CpClasS:ft;EriUni:     Alias :    Record     Union    Module    Method  Property      ;  Refresh   !::!;,i		
= A appsrv В 9* IMjpRDM :    : ?$ ТаЫе2 1     L ^ Table! 1   ? MuROM ilsiKvi'.:   1	Attributes   Parameters | F|ags	|Tert   |
	Return Type; JHRESUL.T ; Par3rr«ter-s	d
	1 \^"           iType	| Flags                    ]
	; [password       BSTR Add       |        Delete	Ы :W Move Up        Move Down
	.......  -   -   -..._....-  ~_ ..     .._..... ...._....           .   .......„„.:,..	
Рис. 8.30. Создание метода Login удаленного модуля данных
Если теперь открыть файл модуля, связанного с удаленным модулем данных, в нем можно обнаружить сгенерированную "заготовку" вновь созданного метода Login():
196
197