Конвертирует значение типа Variant ADO в обычные для LISP типы данных
(defun ru-ado-variant-to-value (variant_item / variant_type vlax-vbDecimal)
;;; Конвертирует значение типа Variant в обычные
;;; для LISP типы данных
(setq vlax-vbDecimal 14)
(cond
((or (= vlax-vbcurrency
(setq variant_type (vlax-variant-type variant_item))
) ;_ end of =
(= vlax-vbDecimal variant_type)
) ;_ end of or
;; Предварительно конвертируем в vlax-vbdouble
(vlax-variant-value
(vlax-variant-change-type variant_item vlax-vbdouble)
) ;_ end of vlax-variant-value
)
;|
((= vlax-vbdate variant_type)
;; Дату нужно конвертировать в строку, да еще с учетом
;; формата хранения даты в ADO. Оставим это на будущее
;; так как вряд ли мы с этим встретимся
(ru-conv-1900-based-julian-to-calender (vlax-variant-value variant_item))
)
|;
;; Логические значения
((= vlax-vbboolean variant_type)
(if (= :vlax-true (vlax-variant-value variant_item))
t
NIL
) ;_ end of if
)
(t (vlax-variant-value variant_item))
) ;_ end of cond
) ;_ end of defun