|
DLL тип Variant -> VBA.ADODB.Recordset
|
|||
---|---|---|---|
#18+
Доброго дня господа ! Библиотека DLL (Delphi) преобразовала ADODB.Recordset в OLEVariant, этот тип принят функцией VBA и вернул тип Variant [ Public | Private ] Declare FunctionnameLib "libname" [ Alias "aliasname" ] [ ( [ arglist ] ) ] [ As type ] as Variant Данные видны в Debug-ере. Вопрос Как в VBA осуществить приведение типов, сделать ADODB.Recordset и стандартными методами пройтись по массиву (while Rs.EOF, Rs.Next т.д.) Dim Rs as ADODB.RecordSet, V as Variant V = myFunction(.......) 'возврат Variant (recordset из DLL) Rs = V ?????????????? Как преобразовать тип Заранее благодарен ! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2019, 00:13 |
|
DLL тип Variant -> VBA.ADODB.Recordset
|
|||
---|---|---|---|
#18+
Может Set V = myFunction(.......) ? А что, V.EOF приводит к ошибке? А Set Rs = myFunction(.......) тоже ошибка? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2019, 09:01 |
|
DLL тип Variant -> VBA.ADODB.Recordset
|
|||
---|---|---|---|
#18+
HOME_XБиблиотека DLL (Delphi) преобразовала ADODB.Recordset в OLEVariant, этот тип принят функцией VBA и вернул тип VariantНе бывает просто Variant, у него всегда есть субтип. В данном случае это, вероятно, Variant/Object. HOME_XКак в VBA осуществить приведение типов, сделать ADODB.Recordset Только присвоением в переменную требуемого типа - тогда Variant-обёртка удаляется. Но требуется точное соответствие типа - иначе возникнет ошибка. Пробуйте: Код: vbnet 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2019, 10:14 |
|
DLL тип Variant -> VBA.ADODB.Recordset
|
|||
---|---|---|---|
#18+
HOME_X, думаю OLEVariant из делфи это совсем не то, что просто переменная Variant в vba ... видимые данные в отладчике возможно были текстовой строкой. для обмена думаю лучше юзать какой нить общий dbf или что-то другое, хорошо перевариваемое и тем и другим... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2019, 10:35 |
|
DLL тип Variant -> VBA.ADODB.Recordset
|
|||
---|---|---|---|
#18+
Из ide в Дельфи в ide vba ,либо наоборот передать как переменную сложный объект нельзя. К сожалению. Рекордсет привязан к исполняемой среде, и активен в рамках сессии ms access. Метнуть между приложениями к сожалению не выйдет. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2019, 12:57 |
|
|
start [/forum/topic.php?fid=45&fpage=26&tid=1610453]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
20ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 140ms |
0 / 0 |