Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Вниз

Работа с 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.015 c
3-1125400079
Dragoon
2005-08-30 15:07
2005.10.09
Ошибка table is read only от TQuery


14-1126255437
Заинтересованный
2005-09-09 12:43
2005.10.09
Не могу скачать пример к статье, к кому обратиться?


4-1123689747
Bios_
2005-08-10 20:02
2005.10.09
Обои


4-1123418703
psa247
2005-08-07 16:45
2005.10.09
ProcessID -> Путь Filename.exe


8-1111810698
wlf
2005-03-26 07:18
2005.10.09
Экспорт в Excel





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский