Отправить файл debug.print в другое окно
Я настроил многопоточность в Access, которая одновременно открывает несколько файлов Access и выполняет определенную функцию в каждом файле. Файлы действуют параллельно. Я хотел бы отправить Debug.Print
сообщения в основной файл, который инициирует многопоточность.
Я не уверен, может ли это сделать это или есть лучшее решение.
2 ответа
У вас есть несколько процессов, каждый из которых работает над своей частью общей картины.
Непосредственная панель "основной" IDE принадлежит этому экземпляру в этом процессе; Вы можете нажать Alt + Tab, а затем Alt + F11, чтобы вызвать экземпляр VBE в любом / каждом экземпляре для просмотра этого экземпляра. Debug.Print
выход.
То, что вы хотите, это что-то вроде ILogger
реализация, которая записывает записи журнала в выделенную таблицу базы данных: DatabaseLogger
, например.
Вы заменяете Debug.Print
с Logger.Log
звонки; таким образом вы позволяете серверу базы данных обрабатывать несколько входящих потоков, и в зависимости от РСУБД вы можете даже настроить задание для очистки, агрегирования и / или архивирования старых записей журнала. Или что угодно, пока это не логика, о которой мне нужно заботиться в коде VBA.
Запись в другое непосредственное окно инструментов VBE включает в себя низкоуровневое межпроцессное волшебство Win32, которое не должно загромождать приятный и аккуратный проект VBA. Я не стал бы беспокоиться об этом, есть более простые решения.
Вы можете создать пользовательскую форму PublicNotCreatable (не форму доступа) в основном приложении и передать ссылку на нее всем параллельным приложениям. Добавьте пользовательский метод в пользовательскую форму, например PrintLine(сообщение в виде строки), and each app can call
form.PrintLine("приложение работает")`?
Затем вы можете сделать так, чтобы пользовательская форма отображала выходные данные, или, возможно, чтобы пользовательская форма выводила сообщение в окно немедленных действий основного приложения.