Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.05.29;
Скачать: CL | DM;

Вниз

Управление и слежением за 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
15-1297459801
Юрий
2011-02-12 00:30
2011.05.29
С днем рождения ! 12 февраля 2011 суббота


2-1298126730
Jumbo
2011-02-19 17:45
2011.05.29
Мультиязычное приложение


10-1173447466
Provodnick
2007-03-09 16:37
2011.05.29
Проблема в консольном приложении с COM


15-1297258085
Tonick2001
2011-02-09 16:28
2011.05.29
Отключение рекции на событие


2-1297969851
Criptonik
2011-02-17 22:10
2011.05.29
путь к директории с помощью opendialog