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

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

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

>Через Визард я указывал поля с таблицы, но мне нужно, чтоб поля получались через какой-то запрос
Дык, в чем проблема - запросом создаешь курсор той же структуры и с тем же алиасом, что и твоя таблица для визарда
...
Рейтинг: 0 / 0
Отчёты
    #32865957
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Нужно добавить столбик с нумерацией строк. Как это сделать в отчёте?
Поиск
...
Рейтинг: 0 / 0
Отчёты
    #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
Отчёты
    #32866104
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>А примерчик можно, а то без кода не понятно. Вот у меня есть Отчёт, в поле title лэйбл с названием
Отчет в фоксе это не объект. Хотя все зависит от версии - вроде в 9-ке чтото изменилось. А так вместо Label надо создавать Field в котором в качесве выражения задаем имя переменой, значение которой определяем перед командой Report

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Так скорее всего придётся пересылать через сеть файлы. Хотя pdf и сам большой.
ОдесситА есть что-то по созданию отчётам для других форматов? Где-то можно почитать описание команд по формированию отчётов в формате ворда или Excelя?
Сделай поиск по данному формуму на ключевое слово "Excel"
Да искал, но описаний команд нигде не нашёл, для Экселя есть пример программы, но у меня она не запустилась. Для Форда тоже есть, она работает, но я не знаю, как представить свой отчёт на нём.
...
Рейтинг: 0 / 0
Отчёты
    #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
Отчёты
    #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
Отчёты
    #32875198
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
REPLACE ALL RecNum WITH Recno()

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

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

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


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