Форум: "Базы";
Текущий архив: 2002.10.31;
Скачать: [xml.tar.bz2];
ВнизHELP!!!!!! Найти похожие ветки
← →
Lariska (2002-10-08 13:57) [0]Доброе время суток господа! Помогите нерадивой!! У меня совершенно тупо выводился отчет в MSWord. Все было чудно, но тут меня попутал нечистый сделать апдейт моего офиса. И теперь вместо отчета в ворд мне рисуется такой кошмар типа: "Access violation at address 65346990 in module "oleaut32.dll". Read of address 658670E1". Что делать-то теперь????...
← →
relict (2002-10-08 15:25) [1]ты из делфики в ворд пишеш...
если да то в делфи есть примерно такие строки:
....
var
Word: Variant;
....
Word:= CreateOleObject( ..<непомню чего>...,
"Word.Application.<а тут типа версия ворда>") );
...
пишем сам рапорт
...
меняй версию компили и пробуй
хотя может я и не прав..просто видел что где то так было зделано
← →
Prooksius (2002-10-08 17:01) [2]http://delphi.mastak.ru/cgi-bin/faq.pl?look=1&id=988619885&n=18
← →
Lariska (2002-10-09 06:51) [3]код такой:
на форме TWordApplication и TWordDocument
по клику на кнопке
.....
var
Shablon, FileName, OldStr, NewStr, replace, ext: OLEVariant;
i:integer;
begin
Shablon:=ExtractFilePath(Application.EXEName)+"f36.doc";
FileName:= ExtractFilePath(Application.EXEName)+"Forma36.doc";
// открывает шаблон
WordApplication1.Documents.Open(Shablon, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam);
// открывает компоненту с инерфейсом
WordDocument1.ConnectKind:=ckAttachToInterface;
WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
// переменные для выполнения методов сервера
replace:=1;
oldStr:="Name";
newStr:=tbClient.FieldByName("Name").Value;
//собственно замена
WordDocument1.Range.Find.Execute(oldStr,EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, newStr, replace);
....
а где тут версию ворда ставить и зачем? если она таже, просто пропаченная.
← →
KA_ (2002-10-09 09:23) [4]Попробуй в uses прописать Word2000, вместо Word97 - они оба содержат TWordApplication и пр. или наоборот :)
← →
Lariska (2002-10-09 09:30) [5]Да, а где мне взять тогда этот Word2000.dcu? Ох, как же тяжело мне жить с такой тупой головой!
← →
Max Zyuzin (2002-10-09 09:32) [6]А вообще я долго пытался разобраться с этими серверами под Delphi5 потом вышел 6-й и моя прога перестала в нем компелироваться из за того, что количество параметров на все функции выросла в 2 раза. Я забросил такой способ подключения к офиссным прогам.
← →
KA_ (2002-10-09 12:22) [7]2 Lariska:
Word2000.dcu присутствует в D6 - \Delphi\Imports. Если прога написана в пятых, то действуй как советует relict, но придется переписать код.
Кстати, до боли знакомый кусок текста. Люди не читайте легкомысленные статьи. Открывайте библиотеки типов - там все написано.
Итак, после периписи получим примерно следующее:
var
Word: Variant;
ShablonName, FileName, oldStr, replace, newStr: OleVariant;
begin
Word:= CreateOleObject("Word.Application.9");
ShablonName := ExtractFilePath(Application.ExeName) + "1.doc";
try
Word.Documents.Open(ShablonName);
replace := 1;
oldStr := "Name";
newStr := "111";
Word.ActiveDocument.Range.Find.Execute(oldStr,EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, newStr, replace);
FileName := ExtractFilePath(Application.ExeName) + "2.doc";
Word.ActiveDocument.SaveAs(FileName);
finally
Word.Quit(EmptyParam, EmptyParam, EmptyParam);
end;
← →
Lariska (2002-10-09 14:12) [8]Всем ОГРОМНОЕ спасибо! Теперь все ОК!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.10.31;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c