Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Отчёты / 20 сообщений из 20, страница 1 из 1
14.01.2005, 21:08
    #32865916
Одессит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчёты
Мне нужно создать отчёт, а я по созданию их ничего конкретного не нашёл. Если у кого-то есть ссылки на статьи или ещё что-то то дайте. В принципе пока я мне нужны ответы на несколько вопросов:
У меня есть форма отчёта, т.е. её вид, мне нужно:
1) Открыть на предпросмотр отчёта и его печать. Какие команды для этого?
2) Мне нужно изменять заголовок отчёта. Как это сделать через код?
3) Через Визард я указывал поля с таблицы, но мне нужно, чтоб поля получались через какой-то запрос. Как это сделать?
4) Нужно добавить столбик с нумерацией строк. Как это сделать в отчёте?
Ответьте, кто может. Буду благодарен.
...
Рейтинг: 0 / 0
14.01.2005, 21:26
    #32865935
dimka007@
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчёты
create form
create report
...
Рейтинг: 0 / 0
14.01.2005, 21:54
    #32865955
Burn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчёты
Начать отсюда - http://www.foxclub.ru/sol/index.php?act=view&id=165

>Открыть на предпросмотр отчёта и его печать
REPORT FROM .... PREVIEW ну и вдумчивое чтение Хелпа

>Мне нужно изменять заголовок отчёта. Как это сделать через код?
ВСе зависит от отчета - например открыть отчет как таблицу и отредактировать, или определить до команды REPORT переменые с заголовком отчета и его править или использовать временую таблицу

>Через Визард я указывал поля с таблицы, но мне нужно, чтоб поля получались через какой-то запрос
Дык, в чем проблема - запросом создаешь курсор той же структуры и с тем же алиасом, что и твоя таблица для визарда
...
Рейтинг: 0 / 0
14.01.2005, 21:55
    #32865957
Burn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчёты
>Нужно добавить столбик с нумерацией строк. Как это сделать в отчёте?
Поиск
...
Рейтинг: 0 / 0
15.01.2005, 00:53
    #32866061
Одессит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчёты
BurnНачать отсюда - http://www.foxclub.ru/sol/index.php?act=view&id=165

1)>Открыть на предпросмотр отчёта и его печать
REPORT FROM .... PREVIEW ну и вдумчивое чтение Хелпа

2) >Мне нужно изменять заголовок отчёта. Как это сделать через код?
ВСе зависит от отчета - например открыть отчет как таблицу и отредактировать, или определить до команды REPORT переменые с заголовком отчета и его править или использовать временую таблицу

3)>Через Визард я указывал поля с таблицы, но мне нужно, чтоб поля получались через какой-то запрос
Дык, в чем проблема - запросом создаешь курсор той же структуры и с тем же алиасом, что и твоя таблица для визарда
1) Разберусь
2) А примерчик можно, а то без кода не понятно. Вот у меня есть Отчёт, в поле title лэйбл с названием. А как к нему ссылаться, его имени я не вижу нигде, а мне надо чтоб имя совпадала со значением выбраного поля в ЛистБоксе при открытии или печати.
3) Это делается так?
select * from nameTable into cursor nameCurs where ...
Просто я не совсем понимаю, что есть алиас
Кстати, а что если у меня вместо имени таблици есть только переменная с адресом, как мне её можно использовать?
И ещё вопрос:
4) Мне с exeшником надо и файл отчёта прикреплять?
...
Рейтинг: 0 / 0
15.01.2005, 02:47
    #32866104
Burn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчёты
>А примерчик можно, а то без кода не понятно. Вот у меня есть Отчёт, в поле title лэйбл с названием
Отчет в фоксе это не объект. Хотя все зависит от версии - вроде в 9-ке чтото изменилось. А так вместо Label надо создавать Field в котором в качесве выражения задаем имя переменой, значение которой определяем перед командой Report

>Это делается так?
Да. Просто при создании отчета в дизайнере надо явно указывать имя курсора

>Просто я не совсем понимаю, что есть алиас
Алиас это замечательная штука - при открытии таблицы командой USE можно явно указать имя этой таблицы отличное от имени файла таблицы (если не указывать то они совпадают). Это дает возможность открывать различные таблицы не меняя код.

>Мне с exeшником надо и файл отчёта прикреплять?
Нет. По умолчанию он включается в exe-шник
...
Рейтинг: 0 / 0
15.01.2005, 05:20
    #32866119
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчёты
Hi Одессит!

> 2) А примерчик можно, а то без кода не понятно. Вот у меня есть
> Отчёт, в поле title лэйбл с названием.

А ты сделай вместо лейбла текстбокс с переменной, которую определи перед
REPORT FORM или к полю временной таблички тестбокс привяжи - заметно проще
IMHO. А ссылаться на что-то там в отчёте можно лишь в VFP9...

> Просто я не совсем понимаю, что есть алиас

Значится надо читать советы для начинающих Владимира Максимова :) У тебя
алиас это "nameCurs"

> Кстати, а что если у меня вместо имени таблици есть только переменная
> с адресом, как мне её можно использовать?

Через макро, но лучше через именованное выражение (Name Expression) - в
хелпе всё описано.

> И ещё вопрос:
> 4) Мне с exeшником надо и файл отчёта прикреплять?

Можно внутрь положить, можно отдельно распространять, можно положенный
внутрь вынимать оттуда, править, печатать а потом уничтожать временный
файл... Всё зависит от ситуации и того что же тебе нужно от отчёта :)

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
15.01.2005, 22:04
    #32866524
Одессит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчёты
Так всем спасибо, многое сделал. Хотя появились новые вопросики.
1) Почитал хелп по REPORT FORM .... PREVIEW. Сделала, работает, но запускается только в окне моего приложения, как дочернее. А мне надо, чтоб была отдельно. Как это сделать? Сейчас что-то попробую поделать, но может кто-то сразу скажет, кто делал.
2) Не совсем по отчётам. Кто-то может написать SQL запрос, который добавляет к исходной таблицы первый столбик с нумерацией строк? А то я SQL не давно изучаю. И не знаю все подробности, но мне кажется, что алгоритм такой: count строк, создание таблицы(курсора) с одним столбцом, цикл от 0(?) до количества строк - 1, в теле цикла добавление записи в новую таблицу по переменной цикла+1, как-то объединить таблицы, наверно так:
select <имя столбца курсора с нумерацией>, <все столбцы таблицы(а так можно TableName.* ?)>;
from CurName1 join TableName;
into CurName2
Примерно так, после этого получаем курсор CurName2 с добавленным столбцом нумерации. Хотя в последнем коде не уверен, никогда так не делал, тем более в VFP.
Кто-то может этот алгоритм представить в виде кода, а то я точно не знаю, как это сделать? Или напишите свой, но с таким заданием.
...
Рейтинг: 0 / 0
17.01.2005, 01:09
    #32866867
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчёты
Hi Одессит!

SELECT 000000 AS RecNum, далее_твои_поля FROM ... WHERE ... ORDER BY ...
READWRITE
REPLACE RecNum WITH RECNO()

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
17.01.2005, 20:57
    #32868881
Одессит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчёты
Igor Korolyov
Hi Одессит!

SELECT 000000 AS RecNum, далее_твои_поля FROM ... WHERE ... ORDER BY ...
READWRITE
REPLACE RecNum WITH RECNO()

Posted via ActualForum NNTP Server 1.1
Ничего не понял. Что здесь что? Подробнее можно?
...
Рейтинг: 0 / 0
17.01.2005, 21:17
    #32868896
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчёты
Одессит Igor Korolyov
Hi Одессит!

SELECT 000000 AS RecNum, далее_твои_поля FROM ... WHERE ... ORDER BY ...
READWRITE
REPLACE RecNum WITH RECNO()

Ничего не понял. Что здесь что? Подробнее можно?
А самому HELP почитать?

Здесь 2 команды: SELECT ... и затем REPLACE на результат выборки

Делается запрос, который полностью повторяет по содержимому исходную таблицу, но к нему добавляется пустой числовой столбец (RecNum).

Результат записывается в курсор, который можно модифицировать (READWRITE)

Далее в каждую запись этого курсора в это пустой поле заноситься физический номер записи (Recno()). В данном случае он будет совпадать с порядковым номером.
...
Рейтинг: 0 / 0
18.01.2005, 05:15
    #32869016
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчёты
Hi ВладимирМ!

Спасибо, а то почтовик перенёс не там где нужно :(

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
18.01.2005, 22:07
    #32871161
Одессит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчёты
А что делать, если мне надо отчёт загнать в какой-то файл, чтоб потом напечатать его на другом компьютере? Мне нужен какой-то способ по легче, где можно об этом почитать. Например, как конвертировать в HTML, Excel, Word и т.д.
И вот ещё что, при открытии отчёта можно указать, чтоб он помещался в файл. Написано, что должен быть TXT, я сделал так, а в этом файле иероглифы. Что это вообще за опция в Report Form ... To File?
...
Рейтинг: 0 / 0
18.01.2005, 23:54
    #32871207
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчёты
ОдесситА что делать, если мне надо отчёт загнать в какой-то файл, чтоб потом напечатать его на другом компьютере? Мне нужен какой-то способ по легче, где можно об этом почитать. Например, как конвертировать в HTML, Excel, Word и т.д.
Если у тебя версия FoxPro ниже 9, то простейший вариант - это установить PDF-distiller. Входит в полную поставку Acrobat 6. Эта штука устанавливается как еще один драйвер принтера и при печати отчета надо просто указать его в качестве принтера. Будет сформирован файл в формате PDF, который и переноси куда хочешь.

Все другие варианты фактически означают создание еще одного отчета для формирования в чем-то еще.

ОдесситИ вот ещё что, при открытии отчёта можно указать, чтоб он помещался в файл. Написано, что должен быть TXT, я сделал так, а в этом файле иероглифы. Что это вообще за опция в Report Form ... To File?
Это будет файл в принтерных кодах. Теоретически, его надо будет потом послать на принтер, чтобы получить готовый отчет. Но как именно это делается я не знаю. Не было необходимости запускать.

Если указать опцию ASCII, то будет обычный текстовый файл шрифтом равной ширины. Но при этом теряется вся графика.
...
Рейтинг: 0 / 0
19.01.2005, 19:36
    #32873334
Одессит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчёты
ВладимирМ ОдесситА что делать, если мне надо отчёт загнать в какой-то файл, чтоб потом напечатать его на другом компьютере? Мне нужен какой-то способ по легче, где можно об этом почитать. Например, как конвертировать в HTML, Excel, Word и т.д.
Если у тебя версия FoxPro ниже 9, то простейший вариант - это установить PDF-distiller. Входит в полную поставку Acrobat 6. Эта штука устанавливается как еще один драйвер принтера и при печати отчета надо просто указать его в качестве принтера. Будет сформирован файл в формате PDF, который и переноси куда хочешь.

Все другие варианты фактически означают создание еще одного отчета для формирования в чем-то еще.
Pdf наврядли подойдёт, ведь перенести я перенесу, а вот будет ли у них акробат?
А есть что-то по созданию отчётам для других форматов? Где-то можно почитать описание команд по формированию отчётов в формате ворда или Excelя?
...
Рейтинг: 0 / 0
19.01.2005, 22:16
    #32873452
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчёты
ОдесситPdf наврядли подойдёт, ведь перенести я перенесу, а вот будет ли у них акробат?
Ну, так захвати дистрибутив Acrobat-Reader. Он немного весит. Около 5...6МБ

ОдесситА есть что-то по созданию отчётам для других форматов? Где-то можно почитать описание команд по формированию отчётов в формате ворда или Excelя?
Сделай поиск по данному формуму на ключевое слово "Excel"
...
Рейтинг: 0 / 0
20.01.2005, 12:33
    #32874348
Одессит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчёты
ВладимирМ ОдесситPdf наврядли подойдёт, ведь перенести я перенесу, а вот будет ли у них акробат?
Ну, так захвати дистрибутив Acrobat-Reader. Он немного весит. Около 5...6МБ

Так скорее всего придётся пересылать через сеть файлы. Хотя pdf и сам большой.
ОдесситА есть что-то по созданию отчётам для других форматов? Где-то можно почитать описание команд по формированию отчётов в формате ворда или Excelя?
Сделай поиск по данному формуму на ключевое слово "Excel"
Да искал, но описаний команд нигде не нашёл, для Экселя есть пример программы, но у меня она не запустилась. Для Форда тоже есть, она работает, но я не знаю, как представить свой отчёт на нём.
...
Рейтинг: 0 / 0
20.01.2005, 13:51
    #32874690
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчёты
Одессит
Так скорее всего придётся пересылать через сеть файлы. Хотя pdf и сам большой.
А файл Word или Excel думаете будет меньше? Про то, что существуют архиваторы, надеюсь, знаете?

Одессит ОдесситА есть что-то по созданию отчётам для других форматов? Где-то можно почитать описание команд по формированию отчётов в формате ворда или Excelя?
Сделай поиск по данному формуму на ключевое слово "Excel"
Да искал, но описаний команд нигде не нашёл, для Экселя есть пример программы, но у меня она не запустилась. Для Форда тоже есть, она работает, но я не знаю, как представить свой отчёт на нём.
Описание команд Excel находится в справке самого Excel. Там и надо искать. Необходимо только "перевести" команду из синтаксиса VB в синтаксис VFP.

Шпаргалка по командам Excel
http://www.foxpopuli.narod.ru/books/vfpexcel.htm

Создание отчетов в Word
http://alkud.boom.ru/
...
Рейтинг: 0 / 0
20.01.2005, 15:16
    #32875013
Одессит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчёты
ВладимирМ Одессит Igor Korolyov
Hi Одессит!

SELECT 000000 AS RecNum, далее_твои_поля FROM ... WHERE ... ORDER BY ...
READWRITE
REPLACE RecNum WITH RECNO()

Ничего не понял. Что здесь что? Подробнее можно?
А самому HELP почитать?

Здесь 2 команды: SELECT ... и затем REPLACE на результат выборки

Делается запрос, который полностью повторяет по содержимому исходную таблицу, но к нему добавляется пустой числовой столбец (RecNum).

Результат записывается в курсор, который можно модифицировать (READWRITE)

Далее в каждую запись этого курсора в это пустой поле заноситься физический номер записи (Recno()). В данном случае он будет совпадать с порядковым номером.
Сделал, как написали, в результате первый столбец все нули, а если с реплейсом, то первая строчка с номером 1. Что я не так сделал? Кстати я не совсем понимаю, что должно делать эта RECNO(). Она что возвращает номер текущей строки? А какой таблицы? Что-то страно работает.
Вот мой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
if (len(cCurSt) >  0 ) AND (len(cCurCl) >  0 )
	select * from stations into CURSOR CurSt where ccurSt=ALLTRIM(TRANSFORM(stations.kodst))
	repName = ALLTRIM(TRANSFORM(CurSt.name))+" " + ALLTRIM(TRANSFORM(CurSt.kodst))+ ". Ìåñÿö îáðàáîòêè èíôîðìàöèè: " + ALLTRIM(TRANSFORM(Bd.misvvody))
	SELECT  000000  AS RecNum, Bd.nomdok, Bd.nomvag, Bd.nk12, Bd.kodstvid, Bd.datavidpr, Bd.datapryb, Bd.kodvantaz, Bd.vaga FROM Bd into cursor PrSQL WHERE alltrim(TRANSFORM(Bd.KODSTPR))= cCurSt and alltrim(TRANSFORM(Bd.KODKLIENT))= cCurCl ORDER BY  1  READWRITE 
             REPLACE RecNum WITH RECNO()
	REPORT FORM repbd PREVIEW
endif
...
Рейтинг: 0 / 0
20.01.2005, 15:58
    #32875198
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отчёты
REPLACE ALL RecNum WITH Recno()

FoxPro работает с файлами DBF. А у них есть такое понятие, как "физический номер записи". Вот функция Recno() и возвращает этот физический номер записи.

Вообще-то, для отчета особого смысла записывать это значение именно в таблицу - нет. Можно просто сформировать объект отчета и в качестве источника данных вписать в него вызов этой функции.

Разумеется, это сработает, только если в отчете отображаются все без исключения записи временной таблицы. В противном случае, нужны переменные отчета, чтобы формировать порядковый номер строки.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Отчёты / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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