Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа с Word и БД [D6, WinXP]


Страницы:   1 2

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо