برای اینکه ساختار گزارش پایه بهم نریزه ابتدا یک جدول با ساختار گزارش می سازیم :
Use reportBase.frx
COPY STRUCTURE TO rptstruct.dbf
اشیا اولیه مانند تنظیمات چاپگر و dataenvironment و خطوط عمودی و افقی را از گزارش پایه به این جدول کپی می کنیم :
APPEND FROM reportBase.frx FOR objtype=1 OR objtype=9 OR objtype=23 OR objtype=25
خب مسلما اگه گزارشتون متغیر هم داشته باشد کد 18 رو هم باید اضافه کنید و عر آنچه که می خواهید. ;-)
اگر یادتون باشه در بالا گفتم تنظیمات کاغذ در رکوردی انجام می شه که objType مقدار 1 را دارد.
پس بهتره در ابتدا ی کار نوع افق یا عمودی بودن کاغذ رو مشخص کنیم . چه بهتر که کاربر خودش انتخاب کنه.
مثلا قبل از گزاش یه فرمی داشته باشه که تعیین کنه می خواد گزارش افق چاپ بشه یا عمودی
IF amoodi = .t. && amodi papaer DEFAULT
REPLACE expr WITH ALLTRIM(expr)+"ORIENTATION=0"+CHR(13)
pwidth = 20
ELSE && ofoghi page
REPLACE expr WITH ALLTRIM(expr)+"ORIENTATION=1"+CHR(13)
pwidth = 29
ENDIF
حالا با استفاده از متغیر pwidth اندازه صفحه رو داریم