MVD не поддерживает многопоточность, но Вы можете использовать Application.ProcessMessages();
Может я неправильно использую эту функцию, в каком месте кода она должна быть?
My Visual Database → Posts by newusr
MVD не поддерживает многопоточность, но Вы можете использовать Application.ProcessMessages();
Может я неправильно использую эту функцию, в каком месте кода она должна быть?
Добрый день, форумчане.
Делаю программу сбора данных с удалённых устройств (ККТ), устройств более 30 шт., периодически по очереди подключаюсь к устройствам и считываю данные. Во время подключения и передачи данных (доли секунды) программа не отвечает на запросы, курсор со стрелки меняется на крутящийся круг.
Подскажите, есть ли в MVDB возможность выделить часть кода скрипта в отдельный процесс/поток, чтобы процесс опроса устройств не мешал работе пользователя в программе? Или может есть другой способ решить эту задачу?
Можно ли как то поменять стандартный ярлык программы на свой?
Я использую программу Restorator 2018 для замены стандартных иконок в исполняемом файле программы вашего проекта.
Нужно подготовить 4 иконки соответсвующего размера, из них сделать файл mainicon.ico и заменить им аналогичный ресурс в Вашей программе.
Thanks, Derek! Excellent cheat.
It suits me.
...
используйте текстовое поле
...
Да, это тоже вариант. Вот только я потом из грида экспортирую в эксель и там продолжаю со временем работать, в частности форматировать (раскрашивать) по условию, со временем в виде текста это не получится.
Хотелось бы, конечно, понять почему так работает MVDB.
Спасибо за советы.
То есть я правильно предположил, что данные в базе 1899-12-30 00:00:00.000 грид воспринимает как пустую строку?
Или проблема во встроенном SQL запросе, который заполняет грид? Использую штатную кнопку "поиск", видимо придётся на кнопу вешать SQL запрос для заполнения грида.
Добрый день.
Столкнулся с такой проблемой: в гриде на форме не отображаются (пустая ячейка) данные времени, если время = 00:00, в базе данных это поле имеет тип ВРЕМЯ и содержит данные 1899-12-30 00:00:00.000, возможно грид воспринимает эти данные как пустую строку...
Как это исправить, чтобы в ячейке отображалось 00:00?
Я не работал пока с реестром в программе, подсказать ничего не могу, но по примерам вполне реально разобраться, пробуйте, эксперементируйте.
Доброго дня!
В программе есть функции для работы с реестром, как обнаружить подключение устройств к USB можно почитать здесь: http://datadump.ru/usb-usage-history/
На форуме есть примеры работы с реестром http://myvisualdatabase.com/forum/viewtopic.php?id=7024
Делаете таймер, мониторите нужный ключ реестра...
Hi Derek!
Thanks for the example. I changed the code to meet my requirements.
Добрый день.
Помогите решить задачу:
В таблице БД есть 3 поля типа ВРЕМЯ, на форме есть, связанные с этими полями, 3 DateTimePicker, где свойство kind=time, то есть отображается в компоненте только время.
Два DateTimePicker заполняются пользователем - время начала события и время окончания события. Третий DateTimePicker это длительность события (время окончания вычесть время начала).
Как сделать, чтобы длительность события расчитывалась автоматически и записывалась в таблицу БД?
Проблема ещё в том, что событие может переходить через 0:00, то есть, например начинаться в 23:50, а заканчиваться в 0:10, по факту длительность события = 20 минут, но в DateTimePicker время хранится с датой, а дата получается одинаковая ...
Эту проблему вычисления я решить могу, как потом вычисленное время записать в БД при нажатии кнопки сохранить (кнопка стандартная Save без использования скрипта).
Не жадничайте, поделитесь косячком )))
Поковырялся в файле forms.xml и "повредились" стили форм, поэтому размер шрифта не менялся, восстановил файл и всё сработало.
for i:=0 to Form1.ComponentCount -1 do IF Form1.Components[i] is TdbStringGridEx Then
TdbStringGridEx(Form1.Components[i]).Font.Size:=12;
Работает...
Косяк был в другом.
Добрый день.
А как сделать тоже самое, но с таблицей? Вот так не работает:
for i:=0 to Form1.ComponentCount -1 do IF Form1.Components[i] is TdbStringGridEx Then
TdbStringGridEx(Form1.Components[i]).Font.Size:=12;
Таблицы находит, но шрифт не меняет.
Thanks Derek!
It works.
Я правильно понимаю, что в вычисляемое поле я должен написать запрос, который выберет в первой таблице (kkm) значение из поля "номер" по id из поля id_kkm второй таблицы?
Попробовал написать такой запрос, но получил синтакс еррор:
select номер
from kkm
where id = zamena.id_kkm
Добрый день.
Помогите решить такую задачу:
Есть 2 таблицы, в первой таблице хранятся номера техники, во вторую записываются результаты перемещения техники между кабинетами.
На выходе мне нужно получить в грид таблицу вида:
старый номер | новый номер | кабинет и т.д.
111 222 7
444 666 10
для этого сделал такие связи между таблицами:
где id_kkm - старый номер, id_kkm1 - новый номер.
То есть мне в таблице нужно видеть, какой номер техники был и на какой номер техники заменили.
Не получается вывести в грид таблицу в нужном виде.
Ну вот же, где собака была зарыта! Спасибо.
Зачем проверять..? Какой смысл в лишнем действии?
Нажал "отправить". Если нет интернета - значит смс-ка не уйдет и пиши в except-е, что душе угодно - хоть выход, хоть цикл повтора...
Да в том-то всё и дело, что при отсутствии интернета строчка
smsquestion.WaitForResponse(5);
вызывает ошибку
OLE error 80020009: WaitForResponse: Ошибка
Source :: WinHttp.WinHttpRequest
Description :: Не удается разрешить имя или адрес сервера
и выполнение программы дальше не идёт и до except-а программа не доберётся.
Вот я и думаю, что надо эту ошибку перехватить (как?) чтобы не "вешать" ей программу.
Или у Вас по другому как-то этот класс срабатывает?
Вопросов к алгоритму нет, вопрос по реализации в коде этого самого алгоритма, как проверить есть интернет или нет?
Возможно ли реализовать эту проверку при помощи класса WinHttpRequest или нет?
Я попробовал запустить размещённый в этой теме проект отправки смс и посмотреть что будет если нет интернета, так как в финальной версии строчка проверки доступности сети интернет (при помощи ping) удалена. В своём проекте для проверки я использую это код:
try
url:= HTTPGet('https://www.ya.ru',True);
except
if ExceptionMessage <> 'HTTP/1.1 404 Not Found' then .....
Посмотрел документацию WinHttpRequest на майкрософт, но с ходу не нашёл ответа, надо глубже изучать, поэтому и возник вопрос
... дописывать логику (циклы, таймауты, перехват и обработка ошибок и т.п.)...
или продолжать использовать приведённый выше код.
Доброго дня. Можно ли при помощи WinHttpRequest проверять доступность к сети интернет? У меня мобильное интернет соединение, часто прерывается и тогда этот объект вызывает ошибку.
---------------------------
OLE error 80020009: WaitForResponse: Ошибка
Source :: WinHttp.WinHttpRequest
Description :: Соединение с сервером было неожиданно прервано
---------------------------
P.S: Функция ping работает только при запуске программы с правами админа.
Не замечал такого (покрайней мере - последние 5 лет точно).
Я приложение делал в 2018г, может с обновлениями VLC таких уже глюков нет. Отдельно VLC работал замечательно, а в связке с MVDB начинались проблемы.
"встроенный плеер" - не что иное как заимствованный из системы Windows Media Player.
Да понятно, что проблема не в MVDB, я таки не смог заставить сам WMP показывать rtsp поток, какие бы кодеки и плагины не ставил.
Поэтому нашёл подходящий пример на Delphi (я совсем не программист), адаптировал под свои задачи и скомпилировал. Кстати там используется библиотека libvlc, то есть получился как бы vlc плеер.
Вообще было бы интересно посмотреть Ваше решение, может пригодится для будущих проектов. Можем обсудить в личке.
Использование VLC было первым моим вариантом решения задачи, это тот же костыль, но тяжёлый и капризный (то в трей свернётся, то зависнет), мой же костылёк лёгкий и рабочий, не требует установки на комп клиента (как VLC) и упаковывается вместе с программой.
Что касается первой части моего вопроса, то я в скрипте повторяю 2 раза строчки прикрепления окна, чтобы уж наверняка прикрепить к панели.
Пробовал воспроизвести поток встроенным плеером (кто-то на форуме утверждал, что работает, у меня - нет), вот это было бы "магаровым" решением.
А магар за готовое работающее решение..?
"Готовое решение" очень похоже на работу VLC плеера...
А о каком магаре идёт речь?
My Visual Database → Posts by newusr
Powered by PunBB, supported by Informer Technologies, Inc.
Theme Hydrogen by Kushi