![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с Word и БД [D6, WinXP]
Magnus © (2005-08-19 09:20:00)добрый день. Существует такая проблема: у меня есть база dbf, в ней поле с типом мемо. Для того, чтобы добавить новую запись, необходимо перейти в Word, набрать текст и затем сохранить этот документ в поле мемо. Просмотр же этого документа осуществляется с помощью DBRichEdit. Ниже представлен кусок кода, который связывается с Word"ом. Но текст из Word не сохраняется в БД. Подскажите, в чем проблема.
procedure TForm10.Button2Click(Sender: TObject);
var
i,j:integer;
a,b:OleVariant;
begin
WordApplication1.Connect;
WordApplication1.Documents.Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam);
WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
WordDocument1.Range.Font.Name:='Times New Roman';
WordDocument1.Range.Font.Size:=14;
//первый вариант вставки
WordDocument1.Range.InsertAfter(form33.protokol.Text);
//второй вариант вставки
WordDocument1.Range.InsertAfter(table1.FieldByname('prot').AsString);
WordApplication1.Visible:=true;
WordApplication1.Disconnect;
end;
P.S. Поскажите еще, где можно взять хэлп по работе с Word В Delphi.
magnus (2005-08-26 16:32:00) [1]все, разобрался, сделала немного не так, как хотелось, но все же. всем спасибо за советы.
Плохиш (2005-08-26 15:53:00) [2]Ещё раз спрашиваю:
> str.Create(a,fmopenread);
Вот это на фига?
magnus (2005-08-26 14:07:00) [3]переформулирую вопрос: правильно я делаю, что пытаюсь запись в базу данные в событии WordDocument1Close? А то дельфи ругается на то, что файл занят другим приложением.
Плохиш (2005-08-22 17:03:00) [4]
> magnus (22.08.05 15:32) [23]
> 2 Плохиш © буду много думать. Насколько я понимаю в этом
> же обработчике необходимо проделать эти операции?
Я не телепат. Ты алгоритм программы составлял, тебе и знать, в каком месте и как ты добавляешь/изменяешь записи в твоей БД.
alex_*** (2005-08-22 15:45:00) [5]я не уверен что файл .doc будет понятен для DBRichEdit
magnus (2005-08-22 15:32:00) [6]2 Плохиш © буду много думать. Насколько я понимаю в этом же обработчике необходимо проделать эти операции?
Плохиш (2005-08-22 15:11:00) [7]Есть надежда, что где-то в программе делаются Table1.Edit/Table1.Insert и Table1.Post?
magnus (2005-08-22 14:43:00) [8]вот проблем-то.. зачем делать assignfile()? и в каком виде ты хочешь увидеть его в гриде?
assignfile() я делал, чтобы проверить будет так работать или нет, т.к. просто loadfromfile() не загружает в поле ничего. А в DBRichEdit нужно чтобы отбражалось содержимое введенного документа.
alex_*** (2005-08-22 14:26:00) [9]вот проблем-то.. зачем делать assignfile()? и в каком виде ты хочешь увидеть его в гриде?
magnus (2005-08-22 14:21:00) [10]теперь файл находится, но не загружается в базу и не видится в DBGrid. Что опять не так?
procedure TForm10.WordDocument1Close(Sender: TObject);
var a,b:olevariant;
sr: TSearchRec;
f:textfile;
str:string;
begin
a:='C:\podr\base2\1.txt';
b:=wdFormatDOSText;
WordDocument1.SaveAs(a,b);
if findfirst(a,faanyfile,sr)=0 then
application.MessageBox('Зашибись!','',mb_ok);
worddocument1.Disconnect;
worddocument1.Close;
WordApplication1.Disconnect;
assignfile(f,str);
reset(f);
(form10.Table1.FieldByName('prot') as TBlobField).LoadFromFile(a);
closefile(f);
end;
Наиль (2005-08-22 10:18:00) [11]Просто ужас какой-то.
Столько эксперементов с путями, только из-за того что Word не даёт доступ к открытому им файлу.
Закрой документ в Ворде, а лучше сам Ворд. И только после этого считывай свой файл.
magnus (2005-08-22 09:36:00) [12]сейчас обработчик вот как выглядит:
procedure TForm10.WordDocument1Close(Sender: TObject);
var a,b:olevariant;
begin
a:='1.txt';
b:=wdFormatDOSText;
WordDocument1.SaveAs(a,b);
while not FileExists(a) do Application.ProcessMessages;
LoadFromFile('E:\Мои документы\'+a);
end;
Но ошибка всё та же. Не пойму пока, где грабли.
alex_*** (2005-08-20 21:45:00) [13]100 пудово word создает файл в "Мои документы", а приложение пытается его найти в текущей папке... кстати почему задается расширение *.doc, а приложение ругается на .txt. Странно это. Как было сказано выше консерватория сломалась.
rts111 (2005-08-20 21:23:00) [14]> magnus (19.08.05 11:48) [9]
> вот что примерно получилось:
> procedure TForm10.WordDocument1Close(Sender: TObject);
> var a :olevariant;
> begin
> a:='1.doc';
> WordDocument1.SaveAs(a);
Попробуй вставить следущее:
while not FileExist(a) do Application.ProcessMessages;
Возможно документ не сразу сохраняется на диске.
> (form10.Table1.FieldByName('prot') as TBlobField).LoadFromFile(a);
> end;
> Только ругается на 2 строчку : "cant open file 1.txt"/ Что
> не так делаю? И как в методе SaveAS указать текстовый формат
> сохранения?
Плохиш (2005-08-19 16:54:00) [15]
> magnus (19.08.05 11:48) [9]
> вот что примерно получилось:
> procedure TForm10.WordDocument1Close(Sender: TObject);
> var a :olevariant;
> begin
> a:= '1.doc';
> WordDocument1.SaveAs(a);
> (form10.Table1.FieldByName('prot') as TBlobField).LoadFromFile(a);
> end;
> Только ругается на 2 строчку : "cant open file 1.txt"/ Что
> не так делаю? И как в методе SaveAS указать текстовый формат
> сохранения?
Что-то в консерватории не так. Тут только отладчик поможет.
alex_*** (2005-08-19 16:42:00) [16]создается где? поставь полный путь при создании и при загрузке
magnus (2005-08-19 16:09:00) [17]2 alex_*** ставил, все равно не находит. Хотя сам файл создается.
alex_*** (2005-08-19 15:53:00) [18]Поставть полный путь к файлу при загрузке
magnus (2005-08-19 15:24:00) [19]как текстовый формат сохранения ставить, нашел. Но призагрузке файла все равно та же ошибка. Подскажите, в чем дело.
magnus (2005-08-19 11:48:00) [20]вот что примерно получилось:
procedure TForm10.WordDocument1Close(Sender: TObject);
var a :olevariant;
begin
a:='1.doc';
WordDocument1.SaveAs(a);
(form10.Table1.FieldByName('prot') as TBlobField).LoadFromFile(a);
end;
Только ругается на 2 строчку : "cant open file 1.txt"/ Что не так делаю? И как в методе SaveAS указать текстовый формат сохранения?