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

Вниз

Работа с Word и БД   Найти похожие ветки 

 
Magnus   (2005-08-19 09:20) [0]

добрый день. Существует такая проблема: у меня есть база 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-19 10:17) [1]

переформулирую вопрос. Как сделать так, чтобы при закрытии документа ворд содержимое этого документа записывалось в поле мемо базы данных? какие события и методы при этом использовать?


 
tesseract ©   (2005-08-19 10:28) [2]

Что за изврат текст в Ворде набирать, чем тебя TrichEdit не радует?


 
Плохиш ©   (2005-08-19 10:33) [3]


> Magnus   (19.08.05 09:20)  
> добрый день. Существует такая проблема: у меня есть база
> dbf, в ней поле с типом мемо. Для того, чтобы добавить новую
> запись, необходимо  перейти в Word, набрать текст и затем
> сохранить этот документ в поле мемо. Просмотр же этого документа
> осуществляется с помощью DBRichEdit. Ниже представлен кусок
> кода, который связывается с Word"ом. Но текст из Word не
> сохраняется в БД. Подскажите, в чем проблема.

Программировать сохранение текста в "базу dbf" за тебя Пушкин должен?


 
magnus   (2005-08-19 10:34) [4]

Это не моя прихоть, а заказчика. Ей видите ли надо все примочки вордовские. Так как сделать?


 
magnus   (2005-08-19 10:35) [5]

2 Плохиш. Как это запрограммировать, я как раз и не пойму.


 
Плохиш ©   (2005-08-19 10:42) [6]


> magnus   (19.08.05 10:35) [5]

1. Сохраняешь документ из ворда в файл
2. Загружаешь из сохранённого файла в базу данных. Описание работы с бд на делфи читать в любой книжке по программированию. Подсказка: TBLOBField.
3. Удаляешь никому не нужный больше файл.


 
magnus   (2005-08-19 11:28) [7]

2 Плохиш ©/ а как мне написать в методе saveas() формат сохранения файла текстовыфй или вордовый?


 
Плохиш ©   (2005-08-19 11:34) [8]


> magnus   (19.08.05 11:28) [7]
> 2 Плохиш ©/ а как мне написать в методе saveas() формат
> сохранения файла текстовыфй или вордовый?

Отличие этих форматов знаешь? Вот и спроси заказчика нужно ему форматирование или нет. ;-)


 
magnus   (2005-08-19 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 указать текстовый формат сохранения?


 
magnus   (2005-08-19 15:24) [10]

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


 
alex_***   (2005-08-19 15:53) [11]

Поставть полный путь к файлу при загрузке


 
magnus   (2005-08-19 16:09) [12]

2 alex_*** ставил, все равно не находит. Хотя сам файл создается.


 
alex_***   (2005-08-19 16:42) [13]

создается где? поставь полный путь при создании и при загрузке


 
Плохиш ©   (2005-08-19 16:54) [14]


> 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 указать текстовый формат
> сохранения?

Что-то в консерватории не так. Тут только отладчик поможет.


 
rts111 ©   (2005-08-20 21:23) [15]

> 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 указать текстовый формат
    > сохранения?


 
alex_***   (2005-08-20 21:45) [16]

100 пудово word создает файл в "Мои документы", а приложение пытается его найти в текущей папке... кстати почему задается расширение  *.doc, а приложение ругается на .txt. Странно это. Как было сказано выше консерватория сломалась.


 
magnus   (2005-08-22 09:36) [17]

сейчас обработчик вот как выглядит:
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;
Но ошибка всё та же. Не пойму пока, где грабли.


 
Наиль ©   (2005-08-22 10:18) [18]

Просто ужас какой-то.
Столько эксперементов с путями, только из-за того что Word не даёт доступ к открытому им файлу.
Закрой документ в Ворде, а лучше сам Ворд. И только после этого считывай свой файл.


 
magnus   (2005-08-22 14:21) [19]

теперь файл находится, но не загружается в базу и не видится в 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;


 
alex_***   (2005-08-22 14:26) [20]

вот проблем-то.. зачем делать assignfile()? и в каком виде ты хочешь увидеть его в гриде?


 
magnus   (2005-08-22 14:43) [21]

вот проблем-то.. зачем делать assignfile()? и в каком виде ты хочешь увидеть его в гриде?
assignfile() я делал, чтобы проверить будет так работать или нет, т.к. просто loadfromfile() не загружает в поле ничего. А в DBRichEdit нужно чтобы отбражалось содержимое введенного документа.


 
Плохиш ©   (2005-08-22 15:11) [22]

Есть надежда, что где-то в программе делаются Table1.Edit/Table1.Insert и Table1.Post?


 
magnus   (2005-08-22 15:32) [23]

2 Плохиш © буду много думать. Насколько я понимаю в этом же обработчике необходимо проделать эти операции?


 
alex_***   (2005-08-22 15:45) [24]

я не уверен что файл .doc будет понятен для DBRichEdit


 
Плохиш ©   (2005-08-22 17:03) [25]


> magnus   (22.08.05 15:32) [23]
> 2 Плохиш © буду много думать. Насколько я понимаю в этом
> же обработчике необходимо проделать эти операции?

Я не телепат. Ты алгоритм программы составлял, тебе и знать, в каком месте и как ты добавляешь/изменяешь записи в твоей БД.


 
magnus   (2005-08-26 14:07) [26]

переформулирую вопрос: правильно я делаю, что пытаюсь запись в базу данные в событии WordDocument1Close? А то дельфи ругается на то, что файл занят другим приложением.


 
Плохиш ©   (2005-08-26 15:53) [27]

Ещё раз спрашиваю:

> str.Create(a,fmopenread);

Вот это на фига?


 
magnus   (2005-08-26 16:32) [28]

все, разобрался, сделала немного не так, как хотелось, но все же. всем спасибо за советы.



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

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

Наверх




Память: 0.53 MB
Время: 0.056 c
2-1125079596
Ed
2005-08-26 22:06
2005.10.09
excel


2-1125162227
LamerZ
2005-08-27 21:03
2005.10.09
Как програмно свернуть окно?


1-1126797182
TStas
2005-09-15 19:13
2005.10.09
Как получить путь к папке «Мои документы»?


14-1126849420
Разгневанный манагер
2005-09-16 09:43
2005.10.09
Как защитить свой компьютер от непрошенных гостей?


14-1126867894
Вопрошающий
2005-09-16 14:51
2005.10.09
Задачка по бухгалтерии