Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Работа с документом WORD из приложения на VFP / 10 сообщений из 10, страница 1 из 1
18.06.2004, 13:47
    #32567266
vl2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с документом WORD из приложения на VFP
Всем привет!
На сервере есть поле BLOB, в котором хранится документ Ворд. Как с диска записать файл в это поле, и обратно- это ясно. А как сделать, что бы из приложения документ открылся для редактирования, и после внесения изменений, опять записывался в базу. У кого есть готовый кусок кода- поможите!
...
Рейтинг: 0 / 0
28.06.2004, 23:27
    #32580136
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с документом WORD из приложения на VFP
Код тут очень простой - поле на форме...

Но у Вас таблица так быстро "раздуется", что FoxPro ее просто "провернуть" не сможет очень скоро. Так что храните лучше ссылки на эти документы и работайте с ними средствами Word...
...
Рейтинг: 0 / 0
30.06.2004, 21:49
    #32584287
vl2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с документом WORD из приложения на VFP
>Sergey Ch
В базе будет примерно 2000 договоров по 30кб каждый. Получается около 60Мб. Не так уж и много.
А фокс её и не будет переворачивать, это дело SQL сервера. На клиента будет передаваться только один договор.

Но вопрос не в этом. Получил я на клиента эту запись. На сервере поле BLOB, а на клиенте, в курсоре у него будет тип MEMO. Дальше мне надо энтот документ как-то отредактировать. Пока только одно решение:

1. Сохранить значение этого поля во временный файл на диске функцией strtofile()
2. Запустить Ворд и открыть в нем этот временный файл на редактирование, после окончания редактирования, сохранить изменения в этом файле.
3. Записать измененый файл в мемо поле функцией FILETOSTR( ), а временный файл удалить
4. Сделать TABLEUPDATE() курсора (изменения уйдут на сервер).

У кого есть критика по этому алгоритму? Может кто проще знает метод?
...
Рейтинг: 0 / 0
30.06.2004, 22:56
    #32584326
vl2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с документом WORD из приложения на VFP
Вот первая проблема, на клиенте получается не МЕМО, a General.
А с ним strtofile() не хочет работать.
Зато работает MODIFY GENERAL. После двойного щелчка запускается Ворд. Можно редактировать файл, но иконка распечатки- недоступна.
...
Рейтинг: 0 / 0
30.06.2004, 23:47
    #32584356
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с документом WORD из приложения на VFP
Все правильно - Word формат никакого отношения к обычному MEMO не имеет :) Это сложный объект и обрабатывается от так прописан в реестра по расширению файла (скорее всего).

Ну а для работы я бы попробовал команду

Код: plaintext
1.
MODIFY GENERAL GeneralField1 [, GeneralField2 ...] [NOMODIFY]
   [NOWAIT] [[WINDOW WindowName1] [IN [WINDOW] WindowName2 | IN SCREEN]]
...
Рейтинг: 0 / 0
30.06.2004, 23:48
    #32584357
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с документом WORD из приложения на VFP
А печать через меню доступна?
...
Рейтинг: 0 / 0
01.07.2004, 08:20
    #32584476
vl2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с документом WORD из приложения на VFP
Печать не доступна (через иконку, через меню не смотрел, а тест остался дома), сам документ скачет, курсор- то здесь то там, особенно, когда пытаюсь нарисовать таблицу.
Попробовал на сервере изменил поле BLOB c бинарного на TEXT.
Теперь в курсоре на клиенте тип поля- мемо.
А дальше, как я и говорил:
1. Сохранить значение этого поля во временный файл на диске функцией strtofile()
2. Запустить Ворд и открыть в нем этот временный файл на редактирование, после окончания редактирования, сохранить изменения в этом файле.
3. Записать измененый файл в мемо поле функцией FILETOSTR( ), а временный файл удалить
4. Сделать TABLEUPDATE() курсора (изменения уйдут на сервер).

Всё работает.
...
Рейтинг: 0 / 0
01.07.2004, 10:40
    #32584685
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с документом WORD из приложения на VFP
Да, кстати а в каком формате Вы храните документы Word? - doc, rtf... ?

Memo бывает двух видов - видимо у Вас сейчас binary тип...

Удачи!
...
Рейтинг: 0 / 0
01.07.2004, 12:16
    #32584887
vl2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с документом WORD из приложения на VFP
На сервере (InterBase60):
Код: plaintext
1.
2.
3.
4.
5.
Храню документ с расширением DOC (хотя можно с любым).
CREATE TABLE tmp (
    ID INTEGER NOT NULL,
    ID_DOG INTEGER NOT NULL,
    BLB BLOB SUB_TYPE  1  SEGMENT SIZE  80 
);
т.е. ВЛОБ типа Текст. На клиенте тип МЕМО.
Дальше редактирование через (была ветка на этом форуме):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
lcFileName='c:\tren.doc' 
DECLARE INTEGER ShellExecute ;
	IN SHELL32.DLL ;
	INTEGER nWinHandle,;
	STRING cOperation,;   
	STRING cFileName,;
	STRING cParameters,;
	STRING cDirectory,;
	INTEGER nShowWindow
DECLARE SetForegroundWindow IN WIN32API integer
=ShellExecute( 0 ,'open',lcFileName,'','', 3 )
...
Рейтинг: 0 / 0
02.07.2004, 00:03
    #32586217
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с документом WORD из приложения на VFP
Попробовал Ваш пример - все работает (в смысле распечатка идет через иконку и меню). Так что проблема скорее всего где-то в конфигурации Word...
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Работа с документом WORD из приложения на VFP / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]