Форум: "Прочее";
Текущий архив: 2011.05.29;
Скачать: [xml.tar.bz2];
ВнизУправление и слежением за Word / Excel и другими редакторами Найти похожие ветки
← →
bss (2011-02-10 19:30) [0]Такая задача - генератор отчетов делает и записывает .doc или .xls файл на диск. Далее он фактически делает что-то аля ShellExecute над этим файлом - соответственно, файл открывается в редакторе.
Не показывать отчет пользователю - нельзя.
Дело в том, что пользователь иногда что-то изменяет в документе, жмет сохранить, выходит из редактора... А в базе остается, естественно, старый отчет. Таким образом нужно как-то отслеживать данный процесс..
Каким образом можно организовать данный процесс?
1) каким-то образом следить за файлом, при его изменении - сдергивать в базу. Но как узнать когда уже можно перестать следить?
Word, например, при запуске может отыскать свой предыдущий процесс и передать туда команду открыть файл.
А в общем случае и вообще откроется не Word, а другой ассоциированный редактор. Хорошо бы сделать универсально...
2) встроить OLE контейнер в форму дельфи и там отобразить MS Word / MS Excel. Тут просто - как закроется форма - так и актуализировать значение в базу.
Но тут хорошо бы отлавливать флаги, что документ был изменен, и отлавливать момент нажатия кнопки "Сохранить" (и точно также хорошо бы отключить пункт меню "Сохранить как...").
P.S. Если doc файл открывается MS Word"ом (как вариант - xls файл открывается MS Excel"ом), можно ли им отключить пункт меню "Сохранить как..." ?
← →
Игорь Шевченко © (2011-02-10 19:32) [1]
> Такая задача - генератор отчетов делает и записывает .doc
> или .xls файл на диск
> А в базе остается, естественно, старый отчет
А как база с диском связана ?
> Но как узнать когда уже можно перестать следить?
ShellExecuteEx + WaitForSingleObject + GetProcessExitCode
← →
oldman © (2011-02-10 21:20) [2]
> Не показывать отчет пользователю - нельзя.
показывать можно. разрешать менять - шиш!
← →
XXL (2011-02-10 22:11) [3]
Workbooks.Open "Filename", 0, True
← →
TUser © (2011-02-11 08:10) [4]СОМ
> ShellExecuteEx + WaitForSingleObject + GetProcessExitCode
А если у меня до того был открыт ворд/эксель? :-(
← →
Dennis I. Komarov © (2011-02-11 09:23) [5]Отчет, который пользователь изменил - подделка!
[2] +1
← →
bss (2011-02-11 11:45) [6]
> А как база с диском связана ?
отчет пишется в базу и пишется на диск, чтобы дать возможность Word/Excel его открыть. Дальше дело в том, что отчет могут изменить, а в базу это изменение уже не уйдет. Об этом топик - как бы такое побороть.
> ShellExecuteEx + WaitForSingleObject + GetProcessExitCode
я об этом писал:
> Word, например, при запуске может отыскать свой предыдущий
> процесс и передать туда команду открыть файл.
вот такой он гад ((
> показывать можно. разрешать менять - шиш!
это, к сожалению, не всегда так. Генератор отчетов, например, иногда генерирует типовые письма, которые человек вполне может поправить.
> Workbooks.Open "Filename", 0, True
это ты имеешь в виду, если открыть Word/Excel документ внутри формы дельфи как OLE? Для ReadOnly отчетов это верно, но дело в том, что некоторые отчеты реально можно править.
← →
clickmaker © (2011-02-11 11:51) [7]> Дальше дело в том, что отчет могут изменить, а в базу это
> изменение уже не уйдет. Об этом топик - как бы такое побороть.
FindFirstChangeNotification на файл отчета, при изменении сливать в базу
← →
bss (2011-02-11 12:24) [8]хорошая функция - спасибо!
Но остается вопрос как понять когда заканчивать слежение ((
← →
Anatoly Podgoretsky © (2011-02-11 13:22) [9]> bss (11.02.2011 11:45:06) [6]
Зачем отчеты хранить, их надо просто выводить.
← →
bss (2011-02-11 13:44) [10]>Anatoly Podgoretsky © (11.02.11 13:22) [9]
ваш пост очень важен для нас. Оставайтесь на связи.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2011.05.29;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.004 c