Соединение с базой данных ADO
(defun ru-ado-connect-to-db (connect_string
user_name
password
/
connection_object
connection_parsing_property
connection_properties
result
temp_object
)
;;; Создаем объект соединения с базой данных
(setq connection_object (vlax-create-object "ADODB.Connection"))
;;; Пытаемся открыть базу данных, отлавливая возможные ошибки
(if (vl-catch-all-error-p
(setq temp_object
(vl-catch-all-apply
'vlax-invoke-method
(list connection_object
"Open"
connect_string
user_name
password
ru-ado-const-adconnectunspecified
) ;_ end of list
) ;_ end of vl-catch-all-apply
) ;_ end of setq
) ;_ end of vl-catch-all-error-p
(progn
;; Если обнаружены ошибки, обрабатываем их
(ru-ado-error-messages
(ru-ado-error-handler temp_object connection_object)
NIL
) ;_ end of ru-ado-error-messages
(vlax-release-object connection_object)
) ;_ end of progn
(setq result connection_object)
) ;_ end of if
;; Дополнительно
(if result
(progn
(setq connection_properties
(vlax-get-property
result
"Properties"
) ;_ end of vlax-get-property
) ;_ end of setq
;;Если в свойствах есть "Jet OLEDB:ODBC Parsing"
(if (not (vl-catch-all-error-p
(setq connection_parsing_property
(vl-catch-all-apply
'vlax-get-property
(list
connection_properties
"ITEM"
"Jet OLEDB:ODBC Parsing"
) ;_ end of list
) ;_ end of vl-catch-all-apply
) ;_ end of setq
) ;_ end of vl-catch-all-error-p
) ;_ end of not
;; устанавливаемe "Jet OLEDB:ODBC Parsing" в
;; "true" для использования в Jet engine двойных кавычек
;; вокруг идентификаторов
(vlax-put-property
connection_parsing_property
"VALUE"
:vlax-true
) ;_ end of vlax-put-property
) ;_ end of if
;; Удаляем ненужные объекты
(if (= 'VLA-OBJECT (type connection_parsing_property))
(vlax-release-object connection_parsing_property)
) ;_ end of if
(if (= 'VLA-OBJECT (type connection_properties))
(vlax-release-object connection_properties)
) ;_ end of if
) ;_ end of progn
) ;_ end of if
result
) ;_ end of defun