Select * from myTable where Something into cursor myCursor _CRReport("myCursor","c:\myCR_RPT_Files\", "myTest.RPT", "myTable") Function _CRReport Lparameters tcCursorName, tcPath, tcRPTName, tcTableName lcAlias = alias() Select (tcCursorName) lcTemp = sys(2015) Copy to (tcPath+lcTemp) type fox2x oCrystal=CreateObject("Crystal.CRPE.Application") #Define WS_MAXIMIZE 29949952 Declare integer GetForegroundWindow in WIN32API Declare short IsWindow in WIN32API integer oRpt = oCrystal.OpenReport(tcRPTName) With oRpt With .Database.Tables(tcTableName) .Location = tcPath+lcTemp+".dbf" Endwith With .PrintWindowOptions .CanDrillDown = .t. .HasCancelButton = .t. .HasCloseButton = .t. .HasExportButton = .t. .HasGroupTree = .t. .HasNavigationControls = .t. .HasPrintButton = .t. .HasPrintSetupButton =.t. .HasProgressControls =.t. .HasRefreshButton =.f. .HasSearchButton =.t. .HasZoomControl =.t. Endwith .preview ("Report Preview "+"by Cet",,,,,WS_MAXIMIZE,0) Endwith lnHwndActiveX = GetForegroundWindow() && Save window handle Do while IsWindow(lnHwndActiveX) # 0 && Wait while Activex Alive Enddo Clear dlls Erase (tcPath+lcTemp+".*") If !empty(lcAlias) and used(lcAlias) Select (lcAlias) EndifCetin