Объект n_rad_connectservice

Откройте объект n_rad_connectservice из библиотеки rad.pbl, воспользовавшись окном Library. В заголовке окна вы увидите надпись - "User Object - n_rad_connectservice inherited from nonvisualobject", т.е. этот объект является потомком стандартного объекта nonvisualobject языка PowerScript.

Пользовательский невизуальный объект n_rad_connectservice используется для выполнения следующих действий:

  1. Получение информации о свойствах соединения с базой данных.
  2. Установки соединения с базой данных.
  3. Разрыв соединение с базой данных.

Объявление переменных

string is_connectfrom = "1"
CONSTANT string IS_USE_INIFILE 	= "1"
CONSTANT string IS_USE_REGISTRY	= "2"
CONSTANT string IS_USE_SCRIPT 	= "3"

В блоке declare окна Script художника UserObject была объявлена переменная is_connectfrom типа string и три константы, которые определяют тип получения информации для связи с базой данных - из ini-файла, registry и скрипта соответственно.

Событие constructor

Скрипт события cunstructor объекта n_rad_connectservice, который был создан художником Start Wizard:

string ls_dbms, ls_database, ls_userid, ls_dbpass, ls_logid, ls_logpass
string ls_server, ls_dbparm, ls_lock, ls_autocommit
If of_GetConnectionInfo ( ls_dbms, ls_database, ls_userid, ls_dbpass, ls_logid, ls_logpass, ls_server, ls_dbparm, ls_lock, ls_autocommit ) = 1 Then
	SQLCA.DBMS			= ls_dbms
	SQLCA.Database		= ls_database
	SQLCA.UserID		= ls_userid
	SQLCA.DBPass		= ls_dbpass
	SQLCA.LogID			= ls_logid
	SQLCA.LogPass		= ls_logpass
	SQLCA.ServerName		= ls_server
	SQLCA.DBParm		= ls_dbparm
	SQLCA.Lock			= ls_lock
	Choose Case Lower ( ls_autocommit ) 
		Case "1", "true", "on", "yes"
			SQLCA.AutoCommit	= True
		Case "0", "false", "off", "no"
			SQLCA.AutoCommit	= False
		Case Else
			SQLCA.AutoCommit	= False
	End Choose
End If

Скрипт выполняет следующие действия

  1. Объявление локальных переменных.
  2. Вызов метода of_GetConnectionInfo для получения информации о свойствах соединения.
  3. Установка свойств стандартного объекта SQLCA для связи с базой данных.

Очевидно, что переменные в метод of_GetConnectionInfo были переданы по ссылке, т.е. в процессе выполнения метода были изменены их значения. Язык PowerScript позволяет передавать параметры в методы, как по значению, так и по ссылке.

Функция of_getconnectioninfo

Нажмите кнопку Show/Hide Prototype окна Script художника User Object. Будет открыто окно с описанием метода of_getconnectioninfo. Перечислим некоторые параметры методов:

  1. Access - доступ к методу. Может принимать значения:
    • Public - неограниченный доступ.
    • Private - доступ только из самого объекта и унаследованных от него объектов.
    • Protected - доступ только из данного объекта.
  2. Return type - возвращаемое значение.
  3. Pass by - способ передачи параметра, по значению (value), по ссылке (reference), только для чтения (readonly).

Скрипт функции достаточно длинный, и не имеет смысла приводить его полностью. В зависимости от способа передачи параметров соединения (переменная is_connectfrom, объявленная в описании переменных объекта), параметры беруться из ini-файла, registry или скрипта сответственно. В нашем примере они беруться из ini-файла rad.ini и присваиваются переменным, переданным по ссылке.

Для каждого из вариантов передачи параметров используются соответствующие функции. Получить описание стандартной функции, оператора, параметра и т.п. можно, установив курсор в любое место искомого слова в тексте скрипта и нажав комбинацию клавиш Ctrl-F1. Если в описании есть такое слова, будет раскрыт соответствующий раздел помощи.

Функция of_connectdb

Connect using SQLCA;
If SQLCA.SQLCode <> 0 Then
	MessageBox ("Cannot Connect to Database", SQLCA.SQLErrText )
End If
Return SQLCA.SQLCode

Скрипт выполняет следующие действия

  1. Cоединение с базой данных. Т.к. в данном случае используется стандартный объект SQLCA, "using SQLCA" можно было опустить.
  2. Проверка кода возврата SQLCode.
  3. Если код возврата не равен нулю, произошла ошибка соединения, необходимо открыть модальное окно с сообщением об ошибке. В качестве сообщения об ошибке используется сообщение, возвращаемое производителем базы данных.
  4. Возврат значения SQLCode.

Функция of_disconnectdb

Disconnect using SQLCA;
If SQLCA.SQLCode <> 0 Then
	MessageBox ("Cannot Disconnect to Database", SQLCA.SQLErrText )
End If
Return SQLCA.SQLCode

Скрипт выполняет следующие действия

  1. Разрыв соединение с базой данных. Т.к. в данном случае используется стандартный объект SQLCA, "using SQLCA" можно было опустить.
  2. Проверка кода возврата SQLCode.
  3. Если код возврата не равен нулю, произошла ошибка соединения, необходимо открыть модальное окно с сообщением об ошибке. В качестве сообщения об ошибке используется сообщение, возвращаемое производителем базы данных.
  4. Возврат значения SQLCode.