Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Путь к шаблону word / 25 сообщений из 28, страница 1 из 2
01.02.2008, 22:03
    #35105473
Nikita_2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к шаблону word
Проясните пжста такую ситуация , в проекте несколько документов выводятся в шаблон word , на кнопке вывода на печать указывается путь к шаблону:

loWord = CREATEOBJECT( 'WORD.APPLICATION')
loDoc=m.loWord.Documents.Add('C:\FOX_pr\s11.dot')

при компиляции в exe , шаблон включается в exe файл, при работе с прогой при попытке вывода в шаблон ругается 'LODOC is not an object' , так понимать что не найден ? или как ?
...
Рейтинг: 0 / 0
01.02.2008, 22:08
    #35105479
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к шаблону word
Это рассчитано на то, что Word залезет в фоксовый ехе-файл за шаблоном? А как он это сделает? А он это умеет? А ему это разрешат?
...
Рейтинг: 0 / 0
01.02.2008, 22:18
    #35105487
Nikita_2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к шаблону word
я не скрываю что дилетант, и не переоцениваю свои силы, если не лень объясни что к чему по сути, , вынести эти шаблоны в отдельную папку или как?
...
Рейтинг: 0 / 0
01.02.2008, 22:22
    #35105491
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к шаблону word
Не включать их в ехе-файл, а уж насчет отдельной папки по желанию.
...
Рейтинг: 0 / 0
01.02.2008, 22:32
    #35105498
Nikita_2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к шаблону word
а как быть с указанием пути с программным указанием пути
loDoc=m.loWord.Documents.Add('C:\FOX_pr\s11.dot')
...
Рейтинг: 0 / 0
01.02.2008, 22:35
    #35105501
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к шаблону word
А что с ним не так? В чем проблема-то?
...
Рейтинг: 0 / 0
01.02.2008, 22:46
    #35105510
Nikita_2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к шаблону word
В общем , перекомпилировал проект не включаяя шаблоны, создал инсталлятором пакет
при установке получается путь
C:\Program Files\foxy

где соответственно находится exe и прочее
тк же по этому пути находятся папки DAT (база данных), и OTH (где и находятся соответственные шаблоны)

config включен в exe

RESOURCE=OFF
SCREEN=OFF
DEFAULT=C:\Program Files\foxy
PATH=Data,foxy, OTH
TITLE=VetServise programs v 2.01 (Nikitov Aeduard)
CODEPAGE=1251
COMMAND=DO _start.prg

один пес не находит , берет их из папки проекта, т.е. по указанному пути
ломаешь папку проекта , пишет 'LODOC is not an object'
...
Рейтинг: 0 / 0
01.02.2008, 23:02
    #35105519
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к шаблону word
Для Word надо указывать полный путь доступа. Начиная с буквы диска. Относительные пути доступа он не поймет, поскольку относительные они для FoxPro, а не для Word.

Т.е. надо сначала сформировать полный путь доступа до файла шаблона и только потом подсовывать его Word. Ну, примерно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
LOCAL lcFileName, lcFullFileName
lcFileName = "s11.dot"
IF File(m.lcFileName)
	lcFullFileName = FullPath(m.lcFileName)
ELSE
	MessageBox("Файл шабона "+m.lcFileName+" не найден")
	return
ENDIF

loWord = CREATEOBJECT( 'WORD.APPLICATION')
loDoc=m.loWord.Documents.Add(m.lcFullFileName) 
...
Рейтинг: 0 / 0
01.02.2008, 23:15
    #35105526
Nikita_2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к шаблону word
т.е. следуя этому если конечный пользователь поставит программу не на с:\foxy , а на d:\foxy шаблоны так же перестанут находится?
...
Рейтинг: 0 / 0
02.02.2008, 17:03
    #35106007
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к шаблону word
Nikita_2т.е. следуя этому если конечный пользователь поставит программу не на с:\foxy , а на d:\foxy шаблоны так же перестанут находится?
А попробовать?
...
Рейтинг: 0 / 0
02.02.2008, 23:00
    #35106263
Nikita_2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к шаблону word
Спасибо Владимир. Попровал, все работает как надо. Но ведь мало чтоб работало , надо чтобы дошло почему, вот и разбирался пол дня с Вашей помощью, еще раз спасибо.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
19.12.2012, 23:54
    #38085998
Nikita_2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к шаблону word
Здравствуйте всем, давно не обращался за помощью ... кстати с наступающим всех (кого с новым годом , кого с концом света ) как кому нравится ..
Вопрос спецам , разжуйте не разумному можно ли как либо в шаблоне (таблице) word(а), при выводе отчета из fox(а) объединить строки в 1 -й колонке?
табл: колонки

- наименование -дата кол-во

Пенициллин 10/10.12 200
15/10.12 100
18/10.12 150

как сделать объединение строк в колонке наименование , дабы вместо 3-х строк стала 1 и текст по центру...
...
Рейтинг: 0 / 0
20.12.2012, 00:38
    #38086046
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к шаблону word
А зачем объединять *в данном конкретном случае)? То есть три разных наименования вы объедините, а количества - нет,затем наименования уедут "куда-то в центр", и что будкут в таком случае обозначать количества в соседнем столбце?

Если всё же надо работать с объектной моделью Ворда - задайте вопрос в том разделе .
...
Рейтинг: 0 / 0
20.12.2012, 06:21
    #38086140
Jonny540
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к шаблону word
Nikita_2можно ли как либо в шаблоне (таблице) word(а), при выводе отчета из fox(а) объединить строки в 1 -й колонке?
табл: колонки

- наименование -дата кол-во

Пенициллин 10/10.12 200
15/10.12 100
18/10.12 150

как сделать объединение строк в колонке наименование , дабы вместо 3-х строк стала 1 и текст по центру...Данные для отчета лучше подготовить в фоксе:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT * FROM myTable INTO CURSOR t1 READWRITE
lcNm=''
SCAN
  IF ALLT(t1.naim)==lcNm
    REPLACE t1.naim WITH ''
  ELSE
    lcNm=ALLT(t1.naim)
  ENDIF
ENDSCAN


Отчет делать на основе временной таблицы t1.

P.S. Нечто подобное недавно было
...
Рейтинг: 0 / 0
20.12.2012, 06:42
    #38086146
Jonny540
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к шаблону word
!!! Если исходная таблица физически не упорядочена, то:
Код: plsql
1.
SELECT naim, data, kolvo FROM myTable ORDER BY 1,2 INTO CURSOR t1 READWRITE
...
Рейтинг: 0 / 0
20.12.2012, 21:11
    #38087431
Nikita_2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к шаблону word
Спасибо за ответы, но маленько не то , похоже я как всегда криво объяснил свою хотелку ..

В общем-то объединение нужно только т.с. из эстетических соображений ..

Создаю курсор из двух таблиц, вывожу в шаблон word с таблицей:


а хотелось бы вот такой формы, т.е. посчитать строки в первой корлонке для объединения не составляет труда, а вот как их объединить .......?.....
...
Рейтинг: 0 / 0
20.12.2012, 21:18
    #38087439
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к шаблону word
А, ну если так объединить...
Я же сказал - задайте вопрос в Офисе, поскольку вам нужны свойства и методы вордовского объекта (перейти в нужную таблицу, пройтись по строкам/ячейкам, объединить).
Как затем работать с VBA в VFP - вот только что ВладимирМ ссылку давал: 13661488
...
Рейтинг: 0 / 0
21.12.2012, 07:07
    #38087666
Jonny540
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к шаблону word
Nikita_2,

Раз уж я начал... :)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
Есть таблица в документе Word.
Нужно объединить N ячеек в M столбце.

Set myCell1 = ActiveDocument.Tables(1).Cell(Row:=N_нач, Column:=M)
Set myCell2 = ActiveDocument.Tables(1).Cell(Row:=N_конеч, Column:=M)
Set rngTable = ActiveDocument.Range(Start:=myCell1.Range.Start, End:=myCell2.Range.End)
rngTable.Cells.Merge 

А теперь сам: это надо преобразовать в код фокса. См. ссылку выше.
...
Рейтинг: 0 / 0
21.12.2012, 09:19
    #38087750
Nikita_2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к шаблону word
Jonny540
сам на word(е) этот пример нашел..
все равно спасиб , дорогой, оно то что надо ..
...
Рейтинг: 0 / 0
22.12.2012, 22:22
    #38089311
Nikita_2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к шаблону word
Извиняйте за надоедливость, но не легкая это работа , из болота тащить .....
моска моего похоже не хватает организовать вышеописанное действо по объединению ,
не могу расчитать начало / конец объединения ячеек в столбце . Если б данные выводились с фиксированным кол-м строк это понятно, а вот когда хай знает сколлько их будет это..?..

вот такой код вывода наваял :


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Local lnWordRowNum
lnWordRowNum = 3  
SELECT prt
SCAN 
IF m.loTable.Rows.Count < m.lnWordRowNum  
m.loTable.Rows.Add()  
ENDIF  
m.loTable.Cell(m.lnWordRowNum,1).Range.Text = prt.p_name
IF prt.btdat<>{}
m.loTable.Cell(m.lnWordRowNum,2).Range.Text = DTOC(prt.btdat)
endif
ENDSCAN
m.loWord.Visible = .T.



** конструкция для объединения ячеек:

Где n начальная ячейка 1 столбца
m конечная

Код: sql
1.
2.
3.
WITH loTable
m.loDoc.Tables(1).Cell(n,1).Merge(.Cell(m,1))
ENDWITH


вот куда ее притачать и расчитать n и m ????
уж звиняйте за беспокойство , программист из меня еще тот, исключительно из необходимости
...
Рейтинг: 0 / 0
23.12.2012, 09:21
    #38089472
Jonny540
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к шаблону word
Nikita_2,

Была похожая задачка. :)) Допилишь под себя:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Select prt
lnRecc=Recc()
Go top
With loWord
* создаем всю таблицу сразу
  .ActiveDocument.Tables.Add(.Selection.Range,lnRecc,3) 
  n=1
  Scan 
    IF !Isblank(prt.p_name)
      lnRecn=Recno()   && чтобы не вычислять несколько раз одно и то же
      If n<lnRecn
        m=lnRecn-1
        If n < m      && n=m - одна ячейка, нет смысла в объединении
*  объединение с (n,1) по (m,1)
        Endif
        n=lnRecn
      Endif
      .ActiveDocument.Tables(1).Cell(lnRecn,1).Range.Text = ALLT(prt.p_name)
    Endif
    IF !Isblank(prt.btdat)
      .ActiveDocument.Tables(1).Cell(lnRecn,2).Range.Text = DTOC(prt.btdat)
    Endif
  Endscan
  If n < lnRecc
*  объединение с (n,1) по (lnRecc,1)
  Endif
Endwith
m.loWord.Visible = .T.


Если p_name в первой строке dbf-таблицы пустое, до первой непустой тоже будет объединение. :)
Используется функция Recno(), поэтому порядок записей в dbf-таблице должен быть физический, без SET ORDER.
...
Рейтинг: 0 / 0
24.12.2012, 10:13
    #38090261
Nikita_2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к шаблону word
Jonny540,

алаверды, как говорится домучил сие действо. Спасиб , пример очень даже помог.
...
Рейтинг: 0 / 0
24.12.2012, 11:30
    #38090348
Jonny540
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к шаблону word
А теперь у меня вопрос: как обращаться к ячейке, полученной объединением (n,m) и (n+k1,m+k2)?
Вроде все перерыл...
...
Рейтинг: 0 / 0
24.12.2012, 11:31
    #38090350
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к шаблону word
Jonny540, в экселе - так же, как и к ячейке (n,m). А в ворде так не получается?
...
Рейтинг: 0 / 0
24.12.2012, 12:05
    #38090422
Jonny540
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Путь к шаблону word
tanglir, нет.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Путь к шаблону word / 25 сообщений из 28, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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