Форум: "Начинающим";
Текущий архив: 2009.08.16;
Скачать: [xml.tar.bz2];
ВнизДокумент 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c