Форум: "Начинающим";
Текущий архив: 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