Добрый день.
Нужно ли после создания объекта Drv:=CreateOleObject('Addin.DrvFR')
освобождать объект Drv.Free ?

Получилось подключиться к ККТ, вот пример подключения:

procedure Form1_OnShow (Sender: TObject; Action: string);
var
  Drv: Variant;
begin
  Drv:=CreateOleObject('Addin.DrvFR');
  Drv.ConnectionType := 6; // подключение через TCP socket
  Drv.ProtocolType := 0; // Стандартный протокол
  Drv.IPAddress := '192.168.137.111'; // IP адрес ККТ
  Drv.UseIPAddress := True; // Используем свойство IPAddress
  Drv.TCPPort := 7778; // TCP Порт ККТ
  Drv.Timeout := 5000; // Таймаут в мс
  Drv.Password := 30; // Пароль системного администратора
  if Drv.Connect <> 0 then showmessage('Not Connected((( ERR_MSG:'+inttostr(Drv.Connect)) else showmessage('Connected!!!');
  Drv.Beep; //гудок для сигнализации подключения
end;

103

(5 replies, posted in Russian)

Привет. Обсуждаем управление ККТ здесь: http://myvisualdatabase.com/forum/viewtopic.php?id=4452

Если бы в программе можно было провернуть такую штуку: CreateOleObject('Addin.DrvFR') программа заиграла бы совсем другими красками, появилась бы возможность написать полноценную кассовую программу.

Вот, на базе найденного здесь примера допилил для печати на ККТ.
В программе можно "погудеть" ККМ и вывести на печать строку.
https://yadi.sk/d/I4GMp4043aKcny
А вообще я забросил идею печати через СОМ порт и занялся написанием модуля на Delphi, гораздо интереснее получается.

pt.82 wrote:

а можно будет потом проект глянуть??)))

А что конкретно интересует?
"Свой драйвер" это я, конечно, сильно сказал, планирую реализовать всего лишь одну функцию протокола ККТ v 2.0, для передачи строки символов для печати на ККТ.

Супер! Всё получилось. Спасибо.

Похоже я собственный драйвер для ККТ напишу...

Спасибо, Дмитрий, получилось!
А как можно также в массив получить данные из СОМ порта?

А подскажите, как правильно сформировать строку для передачи в СОМ порт, например мне нужно передать последовательность байт (НЕХ): 02 05 13 1E 00 00 00 08. Разбираюсь с примером "COM port", который нашёл здесь на форуме.

Понятно, спасибо. Буду ковырять СОМ порт...

Добрый день.
Можно ли в программе подключить устройство через драйвер в виде DLL?
Хочу попробовать создать базу с подключением контрольно кассовой техники и выводом информации на неё.
Есть готовый код на Delphi, можно ли его реализовать в Myvisualdatabase?

uses SysUtils, DrvFRLib_TLB;  // драйвер DrvFR.DLL
//...
procedure TestSale;
var
Drv: TDrvFR;
begin
Drv := TDrvFR.Create(nil); // Создание объекта драйвера
try
Drv.ConnectionType := 6; // подключение через TCP socket
Drv.ProtocolType := 0; // Стандартный протокол Drv.IPAddress := '192.168.0.2'; // IP адрес ККТ
Drv.UseIPAddress := True; // Используем свойство IPAddress
// для указания адреса ККТ
// (в противном случае будет
// использоваться свойство
// ComputerName)
Drv.TCPPort := 7778; // TCP Порт ККТ
Drv.Timeout := 5000; // Таймаут в мс
Drv.Password := 30; // Пароль системного администратора
if Drv.Connect <> 0 then // Проверяем подключение
raise Exception.Create(Drv.ResultCodeDescription);
// ну и т.д. ....
if Drv.FNCloseCheckEx <> 0 then
raise Exception.Create(Drv.ResultCodeDescription);
finally

Ну или просто подключить драйвер так получится?

function Code(s: PChar; Key: integer): PChar; stdcall;
         external 'DrvFR.DLL';

Здравствуйте.
А можно сделать так, чтобы у других пользователей заблокированная запись подсвечивалась красным, например, чтобы они знали, что запись редактирует другой пользователь?

Добрый день.
Вы не думали над созданием версии "лайт", например без поддержки MySQL, с более низкой ценой?
Зачем мне переплачивать за неиспользуемый функционал программы, если мне достаточно SQLite...

1) Действительно, инструментов импорта в программе нет, придётся руками добавлять таблицы, формы и код в скрипт.
Только проверяйте, чтобы имена переменных не дублировались с Вашим кодом.
2) По второму вопросу, к сожалению, не посоветую ни чего. Я не программист, а такой же любитель...

Здравствуйте.
А какие трудности возникли при внедрении шаблона?
И что Вы имеете в виду под "сохранение и восстановление данных в базе"?

Добрый день.

Задачу решил, проект прикрепил в первом сообщении, посмотрите, может есть какие-то замечания...

Добрый день.
Дмитрий, помогите разобраться со следующей задачей:
Хочу сделать вход в программу с авторизацией, но чтобы при первом входе пользователь сам себе задавал пароль.
Предварительно в базу внесены пользователи и когда пользователь выбирает себя из выпадающего списка, ему предлагается придумать себе пароль.
Проект на я.диске https://yadi.sk/d/kiJ6iz-qpwNV5
В моём проекте две проблемы:
1. Если выбрать из выпадающего списка пользователя, который уже входил в программу, появляется ошибка
Could not convert variant of type (UnicodeString) into type (Double)
2. SQL запрос на изменение пароля ошибок не выдаёт, но новый пароль в таблицу не записывает.
Помогите пожалуйста.

P.S.: Решил кое как свою задачу, но чувствую, что не совсем грамотно. Посмотрите, укажите на ошибки.

Спасибо!
То, что нужно.

Здравствуйте.
Подскажите, как сделать фильтр для комбобокса в зависимости от выбора в другом комбобоксе.
Поясню на примере:
Есть список парковочных мест, разбитых на линии (1 линия - места 1,2,3; 2 линия - места 4,5,6 и т.д.) и список машин, привязанных к парковочным линиям. Как сделать так, чтобы при выборе номера машины в первом комбобоксе, во втором комбобоксе был список только тех парковочных мест, к линии которых привязана машина?

Получилось воспроизвести пример в версии 1.45. Только заменил событие для кнопки "редактировать" (bEdit) на OnClick вместо OnAfterClick
Работает, но при нажатии на кнопку "редактировать" появляется окно с ошибкой.
---------------------------
Cannot make a visible window modal.
---------------------------
После закрытия окна с ошибкой вкладка переключается и запись доступна для редактирования.
https://yadi.sk/d/1ElIRd1MjmyFp

Ура! Заработала!
Спасибо...

Ещё вопросик - сделал базу, положил на файловое хранилище, ярлыки на исполнительный файл раскидал по рабочим местам. Может надо было на файловом сервере только базу разместить, а на рабочие места скопировать exe-шники и dll-ки со скриптами? Как правильно и почему?

Спасибо за молниеносную поддержку.
Открыл Ваш пример в версии программы 1.52, кнопка "добавление" работает как надо, "сохранение" тоже, но кнопка "редактировать" не работает. При нажатии кнопки "редактировать" на вкладке "search" поля вкладки заполняются значениями выбранной для редактирования записи, переключение на вкладку "Create/Edit record" не происходит. И ещё заметил, что кнопке "bEdit" назначено 2 события - OnClick и OnAfterClick, но процедуры для события OnClick в скрипте нет. Это так задумано, или это из-за версии 1.52?

Здравствуйте.
Тот же вопрос - как реализовать сохранение в базу и редактирование записей из одной формы, но на разных вкладках (чтобы не открывать множество окон)?
Необходимо чтобы на одной вкладке можно было выполнять поиск, а в другой редактировать и добавлять новые записи (вкладки находятся на одной форме). Например, после выполнения поиска при нажатии кнопки "редактировать" нужная запись открывалась на другой вкладке. А при добавлении записи, после нажатия кнопки сохранить, появлялось сообщение "сохранено" и поля очищались для добавления новой записи.
Ну или хотя бы как сделать так, чтобы при нажатии кнопки "сохранить" форма не закрывалась, а очищались поля и появлялось сообщение "сохранено".

Спасибо...

PS: ситуация, конечно, анекдотичная... Сделал базу, нужно заполнить большим объёмом информации с бумажных носителей, отдал в работу. Прибегает пользователь и говорит, что окно добавления записи пропало при нажатии кнопки сохранить! Я ему объясняю, что нужно каждый раз нажимать кнопку "добавить"...
Вот поэтому и хочу сделать чтобы при нажатии кнопки "сохранить" поля формы очищались и появлялось сообщение "сохранено".
Пытался сделать процедуру, чтобы при нажатии кнопки "сохранить" форма закрывалась, выводилось сообщение "сохранено" и форма снова открывалась для добавления новой записи, но чего-то не получается.