|
Com-объект, Access, Кассовый принтер АТОЛ
|
|||
---|---|---|---|
#18+
Добрый день. Форум техподдержки Атол склонен уговаривать вопрошающих перейти на их ПО, а я не готов. Поэтому вопрос сюда. Windows 10 64 бита. Access 2016 32 bit. Устройство АТОЛ FPrint-22ПТК. Драйвер стоит, Access его видит, экземпляр драйвера создается и успешно открывается. Ссылка на библиотеку необходимую поставлена. Public Sub DateTest() Set fptr = CreateObject("AddIn.Fptr10") fptr.setSingleSetting fptr.LIBFPTR_SETTING_MODEL, CStr(fptr.LIBFPTR_MODEL_ATOL_22F) fptr.setSingleSetting fptr.LIBFPTR_SETTING_PORT, CStr(fptr.LIBFPTR_PORT_COM) fptr.setSingleSetting fptr.LIBFPTR_SETTING_COM_FILE, "COM3" fptr.setSingleSetting fptr.LIBFPTR_SETTING_BAUDRATE, CStr(fptr.LIBFPTR_PORT_BR_115200) fptr.applySingleSettings MsgBox fptr.Version() 'Версию драйвера возвращает! fptr.Open MsgBox fptr.isOpened 'Открытие подтверждает TRUE! До сюда всё работает! Дальше я пытаюсь запрашивать у аппарата информацию, например время: Инструкция говорит: "Для запроса текущих даты и времени в ККТ необходимо вызвать метод queryData() с типом запроса LIBFPTR_PARAM_DATA_TYPE равным LIBFPTR_DT_DATE_TIME" Пример на Delphi: var dateTime: TDateTime; begin fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_DATE_TIME); fptr.queryData; dateTime := fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME); end; Я его переписываю для VBA: Dim dateTime As Date fptr.setParam fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_DATE_TIME fptr.queryData dateTime = fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME) И не возвращается ничего, даже ошибки. Однако, если попросить вот так: MsgBox dateTime - она возвращается (причём явно не помимо метода queryDate - если его закомментить - возвращается 01.01.1970, то есть 0). Можно попросить и так: MsgBox fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME) - тоже вернёт правильную дату... Точно также происходит если запрашивать не время, а серийный номер. Оно доступно, но не выводится..... У меня есть две версии: возможно я не справился с изложением на VBA дельфийского кода... А может быть моя версия Access не умеет вернуть данные в том виде, какой предполагается производителем кассы. Это должно выглядеть как результат запроса, как-то так: Параметр Описание Тип LIBFPTR_PARAM_DATE_TIME Текущие дата и время в ККТ datetime Может для этого библиотеки какой не хватает? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 17:27 |
|
Com-объект, Access, Кассовый принтер АТОЛ
|
|||
---|---|---|---|
#18+
Oldnick1972, а если Dim dateTime As Variant? м.б. там строка, а не дата? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 17:38 |
|
Com-объект, Access, Кассовый принтер АТОЛ
|
|||
---|---|---|---|
#18+
booby, спасибо, но нет... не помогло. Кроме того строковый параметр serialNumber ведёт себя точно также. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 17:43 |
|
Com-объект, Access, Кассовый принтер АТОЛ
|
|||
---|---|---|---|
#18+
Oldnick1972 Однако, если попросить вот так: MsgBox dateTime - она возвращается (причём явно не помимо метода queryDate - если его закомментить - возвращается 01.01.1970, то есть 0). Можно попросить и так: MsgBox fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME) - тоже вернёт правильную дату... Код: vbnet 1.
и в окне Immediate увидеть название типа. Или как выше предложили присвоить переменной типа Variant , остановить выполнение кода (брекпоинт или команда Stop в коде) и в окне Locals увидеть тип данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 17:48 |
|
Com-объект, Access, Кассовый принтер АТОЛ
|
|||
---|---|---|---|
#18+
Панург, спасибо. Неожиданно про дату пишет "Long"... и про серийник, который строка, тоже пишет Long... и про температуру, которая integer, тоже пишет Long. Если поставить Long - ничего не меняется... Что с таким принято делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 17:56 |
|
Com-объект, Access, Кассовый принтер АТОЛ
|
|||
---|---|---|---|
#18+
Oldnick1972, стоп я же неправильно написал (внимательней нужно быть) там же перечисление, оно конечно Long. так нуно Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 18:17 |
|
Com-объект, Access, Кассовый принтер АТОЛ
|
|||
---|---|---|---|
#18+
И object browser все параметры аппарата считает Long, хотя они string, datetime, int и double ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 18:18 |
|
Com-объект, Access, Кассовый принтер АТОЛ
|
|||
---|---|---|---|
#18+
Панург, то я всё ещё вчера изучил:( Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 18:19 |
|
Com-объект, Access, Кассовый принтер АТОЛ
|
|||
---|---|---|---|
#18+
Oldnick1972 Панург, то я всё ещё вчера изучил:( Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 18:21 |
|
Com-объект, Access, Кассовый принтер АТОЛ
|
|||
---|---|---|---|
#18+
Панург, ага, а так вернул Date!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 18:36 |
|
Com-объект, Access, Кассовый принтер АТОЛ
|
|||
---|---|---|---|
#18+
Панург, да, дату определяет как Date, серийный номер как String (так и должно быть), температуру как Long с типами выходит всё нормально ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 18:45 |
|
Com-объект, Access, Кассовый принтер АТОЛ
|
|||
---|---|---|---|
#18+
Таким образом, похоже, что код выполняется, значения вычисляются, но предполагаемая производителем аппарата форма вывода информации не выводится. А MsgBox - всё выдаёт... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 19:00 |
|
Com-объект, Access, Кассовый принтер АТОЛ
|
|||
---|---|---|---|
#18+
Oldnick1972 Таким образом, похоже, что код выполняется, значения вычисляются, но предполагаемая производителем аппарата форма вывода информации не выводится. А MsgBox - всё выдаёт... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 19:02 |
|
Com-объект, Access, Кассовый принтер АТОЛ
|
|||
---|---|---|---|
#18+
Oldnick1972 "Для запроса текущих даты и времени в ККТ необходимо вызвать метод queryData() с типом запроса LIBFPTR_PARAM_DATA_TYPE равным LIBFPTR_DT_DATE_TIME" Пример на Delphi: Код: pascal 1. 2. 3. 4. 5. 6. 7.
Я его переписываю для VBA: Код: vbnet 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 19:08 |
|
Com-объект, Access, Кассовый принтер АТОЛ
|
|||
---|---|---|---|
#18+
Sub setParam ( paramId As Long, value ) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 19:09 |
|
Com-объект, Access, Кассовый принтер АТОЛ
|
|||
---|---|---|---|
#18+
Панург, буду рад иной интерпретации. Код: Dim serialNumber As String fptr.setParam fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_SERIAL_NUMBER fptr.queryData serialNumber = fptr.getParamString(fptr.LIBFPTR_PARAM_SERIAL_NUMBER) не возвращает ничего, а если сразу после него MsgBox serialNumber или MsgBox fptr.getParamString(fptr.LIBFPTR_PARAM_SERIAL_NUMBER) то возвращается серийный номер, причём правильный и Debug.Print TypeName(fptr.getParamString(fptr.LIBFPTR_PARAM_SERIAL_NUMBER)) - возвращает string То есть результат есть, но я его не вижу... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 19:14 |
|
Com-объект, Access, Кассовый принтер АТОЛ
|
|||
---|---|---|---|
#18+
в общем нужно копаться в документации и устанавливать полностью драйвер. чего мне не охота ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 19:15 |
|
Com-объект, Access, Кассовый принтер АТОЛ
|
|||
---|---|---|---|
#18+
Oldnick1972, ты когда пишешь код пользуйся тэгами оформления (см https://www.sql.ru/faq/faq_topic.aspx?fid=202). иначе читать это невозможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 19:16 |
|
Com-объект, Access, Кассовый принтер АТОЛ
|
|||
---|---|---|---|
#18+
Панург, чуть подробней, я срамоучка. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 19:17 |
|
Com-объект, Access, Кассовый принтер АТОЛ
|
|||
---|---|---|---|
#18+
Oldnick1972 чуть подробней, я срамоучка. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 19:19 |
|
Com-объект, Access, Кассовый принтер АТОЛ
|
|||
---|---|---|---|
#18+
Панург, с тегами оформления разберусь ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 19:22 |
|
Com-объект, Access, Кассовый принтер АТОЛ
|
|||
---|---|---|---|
#18+
Oldnick1972, у тебя пример отсюда работает -> Атол ККТ10 и VBA ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 19:36 |
|
Com-объект, Access, Кассовый принтер АТОЛ
|
|||
---|---|---|---|
#18+
Oldnick1972, Вы создали SerialNumber в процедуре - он в ней и умер после её окончания(только посмотреть debug.print или msgbox). я так понимаю создаете чек (отчет), его нужно печатать. Код: vbnet 1. 2. 3. 4.
хотя... может я что то упустил. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 19:57 |
|
Com-объект, Access, Кассовый принтер АТОЛ
|
|||
---|---|---|---|
#18+
Ага, спасибо огромное. Я разобрался... по пути сильно обогатился. Панург, я очень благодарен. А проблема была во мне. Я почему-то думал, что результат должен выводится в виде таблички, созданной производителем драйвера (ну так в инструкции нарисовано). А оно у меня всё правильно работает, просто по-умолчанию никуда не печатается. Рисую форму, туда всё выводится. Ещё раз спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 20:29 |
|
|
start [/forum/topic.php?fid=45&msg=39993574&tid=1609962]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
130ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 290ms |
total: | 507ms |
0 / 0 |