Имя: Пароль:
IT
 
МИНИ-ФП6 (ole) и VBA
0 ivanich1789
 
11.04.15
16:49
Всем привет. Рабочая среда кассира реализована в excel\access. Появилась необходимость прикрутить фискальный принтер.
Драйвер становиться.
Объект создается.
Set FP = CreateObject("OLE_MiniFP6.FP6")
Простые методы(вроде дневного отчета) не предусматривающие возврат значений параметрами работают.
FP.DayReport_ (Ncom)

Затык с методами которые возвращают значения. Например
GetStrCheck_(Ncom, StrType: Integer;  var Str:  WideString; var Dh,Dw: WordBool): WordBool;

Из мануала к фискалу:
"Согласно концепции OLE-технологии, выходные данные методов объекта могут быть сформированы в выходных параметрах, передаваемых по ссылке, но не по значению. Некоторые системы ( 1С: «Предприятие») не поддерживают это требование (доступ к OLE-данным по ссылке). Поэтому методы сервера OLE_MiniFP6, в которых формируются выходные параметры, параллельно формируют одноименные свойства, доступ к которым из прикладной среды обеспечивается по значению. Для таких прикладных систем рекомендуется применять следующий подход:
1) Выполнение метода.    2) Обработка свойств (сформированных методом), а не выходных параметров."

Однако VBA матюкает оба способа (Все переменные ес-но определены)
-----------------------
FP.GetStrCheck_(Ncom, 0, Str, Dh, Dw)            //Syntax Error
-----------------------
if FP.GetStrCheck_(Ncom, 0, Str, Dh, Dw) = true then...  //Type mismatch (Error 13)

В чем затык? Как правильно к такому объекту обратиться? Спасибо
1 ivanich1789
 
11.04.15
17:00
Sub FP6INIT()
Dim FP As Object

Dim Ncom, StrType As Long
Dim Dh, Dw As Variant
Dim Str As String

Ncom = 1
StrType = 0
      
Set FP = CreateObject("OLE_MiniFP6.FP6")

If FP.GetStrCheck_(Ncom, StrType, Str, Dh, Dw) = True Then
  UserForm1.Label8.Caption = Str
End If

Set FP = Nothing

End Sub

---------

Type mismatch (Error 13)