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

Вниз

Документ Word не удаляется.   Найти похожие ветки 

 
KiLLiR ©   (2009-06-20 15:19) [0]

Приветствую всех мастеров и начинающих.
Прошу помочь с проблемкой...
Следующий модуль должен:
1)Скопировать исходный файл.
2)В копии произвести изменения (на места закладок в документе вставить значения из таблицы в базе данных).
3)Распечатать копию.
4)Удалить копию.


procedure TMain.PechatBitBtnClick(Sender: TObject);
var
WordApp, BookmarkName, Doc, R: OleVariant;
WordDocument: String;
begin
CopyFile(PChar(GetCurrentDir+"/Shablonii/Blank_zayavki.doc"), PChar(GetCurrentDir+"/Shablonii/Blank_zayavki1.doc"), True);
WordDocument:=GetCurrentDir+"/Shablonii/Blank_zayavki1.doc";
try
WordApp := CreateOleObject("Word.Application");
except
Application.MessageBox("Не удалось запустить приложение Microsoft Word! Проверьте наличие приложения в системе!", "Ошибка другого приложения!", MB_ICONERROR)
end;
WordApp.Documents.Open(WordDocument);
Doc := WordApp.ActiveDocument;

BookmarkName := "zayavka_num";
if Doc.Bookmarks.Exists(BookmarkName) then
begin
R := Doc.Bookmarks.Item(BookmarkName).Range;
R.InsertAfter(Main.Zayavki.FieldValues["Kod"]);
R.Font.Color := clBlack;
end;
BookmarkName := "zayavka_datetime";
if Doc.Bookmarks.Exists(BookmarkName) then
begin
R := Doc.Bookmarks.Item(BookmarkName).Range;
R.InsertAfter(Main.Zayavki.FieldValues["Data_vizova"]+" "+Main.Zayavki.FieldValues["Vremya_vizova"]);
R.Font.Color := clBlack;
end;
BookmarkName := "adres";
if Doc.Bookmarks.Exists(BookmarkName) then
begin
R := Doc.Bookmarks.Item(BookmarkName).Range;
R.InsertAfter("óë."+Main.Zayavki.FieldValues["Ulitsa"]+" ä."+Main.Zayavki.FieldValues["Dom"]+" êâ."+IntToStr(Main.Zayavki.FieldValues["Kvartira"]));
R.Font.Color := clBlack;
end;
BookmarkName := "fio";
if Doc.Bookmarks.Exists(BookmarkName) then
begin
R := Doc.Bookmarks.Item(BookmarkName).Range;
R.InsertAfter(Main.Zayavki.FieldValues["Familiya"]+" "+Main.Zayavki.FieldValues["Imya"]+" "+Main.Zayavki.FieldValues["Otchestvo"]);
R.Font.Color := clBlack;
end;
BookmarkName := "zhalobi";
if Doc.Bookmarks.Exists(BookmarkName) then
begin
R := Doc.Bookmarks.Item(BookmarkName).Range;
R.InsertAfter(Main.Zayavki.FieldValues["Zhalobi"]);
R.Font.Color := clBlack;
end;
Doc.PrintOut;
if not VarIsEmpty(WordApp) then
begin
WordApp.DisplayAlerts:=0;
WordApp.Documents.Item(1).Save;
WordApp.Quit;
BookmarkName:=Unassigned;
R:=Unassigned;
WordApp:=Unassigned;
end;
DeleteFile(GetCurrentDir+"/Shablonii/Blank_zayavki1.doc");
end;


Самый 1-ый запуск прошел как надо, все распечаталось, а вот при каждой последующей распечатке  документ "Blank_zayavki1.doc"  не затирается, а на месте закладок происходит накопление строки и вместе с тем, что мне надо распечатываются все прошлые данные - они идут один за другим.
Т.е. похоже на то, что DeletFile вообще  не работает. Файл как был, так и остается на месте.
Может есть какие то другие методы удаления файлов?


 
KiLLiR ©   (2009-06-20 18:50) [1]

Похоже решение нашел. Не надо сохранять этот файл, точнее надо его не сохранять. Посему переформулирую вопрос. Чем заменить строку

WordApp.Documents.Item(1).Save;

чтобы изменения в файл не вносились?

P.S.
Не знаю почему, но делфи мне даже подсказок не дает в этой процедуре при наборе кода. Как обычно после точки список вариантов вываливаться должен.


 
Andy BitOff ©   (2009-06-20 19:17) [2]

Word Developer Reference
Documents.Close Method
Closes the specified documents.
Syntax

expression.Close(SaveChanges, OriginalFormat, RouteDocument)

expression   Required. A variable that represents a Documents collection.

Parameters

Name Required/Optional Data Type Description
SaveChanges Optional Variant Specifies the save action for the document. Can be one of the following WdSaveOptions constants: wdDoNotSaveChanges, wdPromptToSaveChanges, or wdSaveChanges.
OriginalFormat Optional Variant Specifies the save format for the document. Can be one of the following WdOriginalFormat constants: wdOriginalDocumentFormat, wdPromptUser, or wdWordDocument.
RouteDocument Optional Variant True to route the document to the next recipient. If the document doesn"t have a routing slip attached, this argument is ignored.

© 2007 Microsoft Corporation. All rights reserved.


 
KiLLiR ©   (2009-06-20 20:07) [3]

Andy BitOff спасибо!

WordApp.Documents.Item(1).Save;

заменил на:

WordApp.Documents.Close(wdDoNotSaveChanges, wdWordDocument);

и все пошло как надо. )))


 
Andy BitOff ©   (2009-06-20 20:13) [4]

Ты же используешь OLE объест, по нему нет справки в Дельфи, да и быть не может. Запусти Ворд, нажми Alt+F11, а там уже хелп.



Страницы: 1 вся ветка

Текущий архив: 2009.08.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
3-1225916584
RamzesIII
2008-11-05 23:23
2009.08.16
Диаграмма


2-1245298026
novai
2009-06-18 08:07
2009.08.16
Как изменить цвет полос прокрутки в TRichEdit?


1-1211958221
Still Swamp
2008-05-28 11:03
2009.08.16
Dsgjkyb


2-1245321293
Franzy
2009-06-18 14:34
2009.08.16
Always on top в пределах одного приложения


3-1225817639
pushkin42
2008-11-04 19:53
2009.08.16
Incorrect values within SQLDA structure при выполнении запроса