2121
Типичные вопросы [отчёты]
На этой станице помещены ответы на вопросы, которые я сам мучительно (или легко) находил, я не думаю, что ответы исчерпывающие, и если Вы найдёте, что что-нибудь дисанирует с Вашими представлениями, давайте обсудим и найдём лучшие решения... Кроме того, часто ответ может зависеть от версии как OS так и Visual FoxPro, проверить всё на всех версиях и платформах для меня просто непосильно. Изначально этот список был исключительно для VFP 5.0, в то время как сейчас это только VFP 7.0/8.0, я мог где-нибудь и пропустить упоминание о версии, и если Вы найдёте несоответствия, сообщите пожалуйста мне.

 

Вопрос: Можно ли из отчёта, полученного средствами создания отчёта в Visual FoxPro получить "полнофункциональный текстовый документ" (шрифты, и т.д.)? 

Ответ: Напрямую нет. Средствами отчёта можно получить только чисто текстовый документ (опция ANSI в команде REPORT). Если Вам необходимо получить "полнофункциональный документ" какого-либо продукта, например Word, Вам следует использовать OLE-механизм именно этого продукта для оформления своих результатов из Visual FoxPro.

Вопрос: Имеется ли возможность автоматически максимизировать окно предварительного просмотра отчёта? 

Ответ: Попробуйте:
#DEFINE WND_PRVREP "Report"
IF WEXIST(WND_PRVREP)
    ZOOM WINDOW (WND_PRVREP) MAX
ENDIF
где-нибудь в событии MyReport.DataEnvironment.Init(). Обратите внимание, что это не будет работать в приложении, построенном средствами Application Wizard в VFP 6.0, однако там и нет этих проблем.

Вопрос: Желаю из VFP напечатать текстовый файл, но у меня чего-то не получается :-( Это можно как-нибудь сделать? 

Ответ: Попробуйте что-нибудь подобное следующему
#DEFINE C_FILENAME	"D:\MyApp\Vfp\Picture.prg"
#DEFINE C_OUT_PORT	"\\Server\Printer1"
*
******************* Or:
*#DEFINE C_OUT_PORT	"PRN:"  &&<- default
*#DEFINE C_OUT_PORT	"LPT1:" &&<- LPT1
******************* 
*
DECLARE INTEGER CopyFile IN KERNEL32.DLL ;
	STRING lpExistingFileName,; && name of an existing file
	STRING lpNewFileName,;      && name of new file
	INTEGER bFailIfExists       && operation if file exists

LOCAL lbRetVal
IF CopyFile(C_FILENAME, C_OUT_PORT, 0) = 0
	ACTIVATE SCREEN
	?CHR(7)
	=MessageBox('Can not print file', 16, _SCREEN.Caption)
ELSE
	lbRetVal = .T.	
	WAIT WINDOW 'Ok!' NOWAIT
ENDIF
CLEAR DLLS
RETURN lbRetVal

Вопрос: При REPORT FORM ... TO PRINTER получаю ошибку: 1958 Error loading printer driver. Как побороть? 

Ответ:
- В Report designe воспользуйтесь пунктом меню: File->Page Setup, Print Setup..., OK, OK.
- См. также раздел "HOWTO: Control Printer Attributes for a Report at Run Time" в MSDN,
- наконец попробуйте вычистить поля TAG и TAG2 используя
USE Myreport.frx  && Open the FRX as a table
LOCATE FOR Objtype = 1 AND Objcode = 53  && find the record that holds
** the printer information. For more information on the Table Structure
** of an .FRX file, see 'Table Structures of Table Files' in Help.
REPLACE Tag WITH ""  && Remove any Printer codes that may be stored in
** the Tag memo
REPLACE Tag2 WITH ""  && Remove any Printer codes that may be stored in
** the Tag2 memo

Вопрос: Есть желание выводить на печать линии из VFP но не могу понять, как это можно сделать. Возможно ли такое?  

Ответ: Попробуйте посмотреть Q255744 раздел "HOWTO: Obtain a Device Context Handle for a Print Device" в MSDN

Вопрос: Не получается завершить сеанс после предварительного просмотра отчёта. Как побороть? 

Ответ: См. в MSDN:
Q179605 PRB: Cannot Quit Visual FoxPro When Previewing Report in a DESKTOP Window
Q156237 PRB: Report Designer/Preview Needs VFP Desktop to Display
Q190069 HOWTO: Showing Print Preview as MDI Child of Top-Level Form
Q188887 HOWTO: How to Display Print Preview in a Top-Level Form

Вопрос: Можно ли выбрать принтер при печати отчёта? 

Ответ: Выполните команды:
REPORT ... to printer PROMPT
SET PRINTER ON PROMPT
см. также SYS(1037), GETPRINTER(), APRINTERS(), ...
 
 
Hosted by uCoz