|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
05.04.2009, 09:28 | #1 |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 842
|
Выбор оператора ЭВМ
Есть таблицы по результатам работы с которыми формируется ряд документом, нескольких видов (типов), состоящие из нескольких листов. Документы могут формироваться в произвольном порядке, количество и вид (тип) листов зависит от характеристик объектов. То есть для объекта формируются ограниченное количество листов каждого вида документов.
Планируется ведения лога в текстовый файл на каждое действия с объектом. В общем случае будет сохраняться: дата, время, оператор, объект, действие. Возникают следующие сложности: 1. Выбор оператора. Необходимо что бы эксель знал кто за ним работает в настоящий момент. Вижу следующие пути реализации: а) Через ячейку. ИМХО наиболее простой, и наиболее худший способ. Оператор банально может забыть изменить значение ячейки. б) Через начальное окно. При запуске эксель проверяет наличие уже запущенных программ. Если такие есть имя оператора берется от туда, если таких нет выводим окно с просьбой указать имя оператор. Имя оператора сохраняется в переменную VBA. Без этого дальше не пропускаем. Пока это выглядит наиболее реалистичным. в) Через USB ключ. Для защиты информации планируется в далекой перспективе использовать USB ключики. Для чего часть макросов будет перенесены в dll. (я пока нашел два способа: переписать на дельфи, попробовать создать dll в полном VB). Есть идей сделать такие ключи именными. Есть ключ работаем, имя оператора берем из ключа, нет ключа не работаем. 2. Как вести лог: в один файл или несколько? В идеале хотелось бы в один, но не будет ли конфликтов доступа при работе нескольких операторов на разных компьютерах в сети.
С уважением, Алексей.
Последний раз редактировалось tae1980; 05.04.2009 в 09:32. |
05.04.2009, 09:40 | #2 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
Environ("username") - login, под которым пользователь вошел в домен или систему.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
05.04.2009, 09:46 | #3 | |||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Получается что-то вроде этого: Код:
Цитата:
Цитата:
Просто записи будут неупорядочены. Лог ведь как пишется: открывается текстовый файл в режиме "для добавления", записываются несколько текстовых строк в конец файла, и файл закрывается. Всё это происходит моментально. Впрочем, я в этом случае использую буферизацию - запись непосредственно в файл производится только после накопления в буфере нескольких строк. Запись буфера в файл произвожу примерно такой функцией: Код:
Код:
Код:
|
|||
05.04.2009, 10:35 | #4 | |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 842
|
Цитата:
Тем более что это лишь частично решит задачу, при этом наложит кучу ограничений.
С уважением, Алексей.
|
|
05.04.2009, 12:01 | #5 | |||||
Форумчанин
Регистрация: 02.02.2009
Сообщений: 842
|
Цитата:
Цитата:
Вывести окошко с запросом имени не проблема, тем более я планировал выводить просто информационное окно о программе и т.п. Буду рад если есть уже стандартные заготовки. Интересует вопрос: как лучше определять наличие уже открытых документов, при условии что имена могут быть любые, а так же могут быть открыты обычные файлы ексель не участвующие в работе? Как я вижу возможные варианты: 1) по флагу (классика), 2) по наличию объявленной переменной (теория: при старте проверяем объявлена ли переменная, если да используем ее, нет даем запрос и объявляем. Как система поведет себя если закрыть все окна с объектами, но остались окна с обычными листами ексель? Удалиться ли при этом переменная?). Цитата:
Цитата:
Как поведет себя система при записи по сети, особенно в случае отказа сети, или полной потери связи на неопределенный период? Цитата:
С уважением, Алексей.
|
|||||
05.04.2009, 12:22 | #6 | |||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
От Вас нужна информация: 1) где хранить логины и пароли? Есть 2 уже реализованных мной варианта: первый - все учётки хранятся на скрытом листе (могу выслать готовый проект Вам на почту) и второй - список логинов хранится в коде (но можно ввести любой логин, вот только за паролем в этом случае придётся обращаться к разработчику), а после авторизации в реестр записываются учётные данные: (пароль и уровень доступа шифруются) Но с этим вариантом сложнее - придётся выдирать кучу кода из проекта. Цитата:
Первая записывает в файл только после того, как в буфере накопилось хотя бы 5000 символов, а вторая осуществляет немедленную запись строки в файл (для критичных событий) Но всего, разумеется, не предусмотришь. А вдруг система вылетит с синим экраном? Или электричество отключат? Цитата:
Если Ваш код не вылетает с ошибками - с буфером ничего не случится (ну можно писать буфер в ячейки скрытого листа, если уж так важна отказоустойчивость)
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов Последний раз редактировалось EducatedFool; 05.04.2009 в 12:25. |
|||
05.04.2009, 12:40 | #7 | |||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Критичные в плане безопасности функции (если в случае использования VBA вообще можно говорить о какой-то безопасности) можно при желании вынести в Com AddIn Цитата:
Кстати, нашел у себя ещё кусок кода для определения имени пользователя (которое прописано в настройках Excel): Код:
Цитата:
В некоторых случаях использую запись в нужные файлы пользовательских свойств (типа именованной переменной, значение которой можно посмотреть и изменить в свойствах файла) Разумеется, значение этой переменной шифруется перед записью. Используется примерно такой код: Код:
Код:
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов Последний раз редактировалось EducatedFool; 06.04.2009 в 10:51. |
|||
05.04.2009, 12:53 | #8 | |||||||
Форумчанин
Регистрация: 02.02.2009
Сообщений: 842
|
Цитата:
Цитата:
а) в текстовом файле на сервере. б) у меня планируется постоянное присутствие надстройки расположенной на сервере, так что можно там. Можно вообще без пароля, так как интересует имя оператора. А факт истинности ввода, можно решать административными мерами. Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
С уважением, Алексей.
|
|||||||
05.04.2009, 13:15 | #9 | ||||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Только если отправить текст на Ваш адрес. Скинул пример файла на почту. Цитата:
Код:
Цитата:
Цитата:
|
||||
11.04.2009, 16:52 | #10 |
Пользователь
Регистрация: 10.04.2009
Сообщений: 64
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Десятично-двоичный преобразователь (хрестоматийная задача любой ЭВМ) | Sasha_Smirnov | Microsoft Office Word | 13 | 06.10.2013 11:01 |
Перегрузка оператора + | z3rg | Общие вопросы C/C++ | 1 | 22.03.2009 03:06 |
Перегрузка оператора | Crucian | Общие вопросы C/C++ | 2 | 22.10.2007 09:44 |
Сумма ряда на ЭВМ и вычисленная аналитически, программы на языке Pascal | SunCHO | Помощь студентам | 2 | 02.05.2007 22:37 |