Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Save report
Message
De
17/04/1998 14:51:30
Cetin Basoz
Engineerica Inc.
Izmir, Turquie
 
 
À
17/04/1998 14:07:32
Information générale
Forum:
Visual FoxPro
Catégorie:
Gestionnaire de rapports & Rapports
Titre:
Divers
Thread ID:
00083852
Message ID:
00093000
Vues:
50
>The app which I'm working on is the query builder and the reporting needs to be very flexible. Basically users should be able to choose what to print and how through an easy interface. They won't use report designer, but I wanted to massage the basic .frx instead, based on their selection. And that approach works fine, the problem is with the hard copy of their reports. FoxWord lets you save the report in Word doc, but Foxword doesn't work under NT.
Well I don't also have foxword and prefer talking to word. The below code is from one of my projects and sending data to word (from an optiongroup - send to word). Users could then format their word anyway they want (fields are under mergefield tab) :
lparameters nScopeOption  && 1-Thisform.rcno 2-All records
cDefDir = sys(5)+curdir()
cTempFile = cDefDir+"t"+right(sys(2015),7)
cFlds = ""
for ix = 1 to fcount()
	if !type(field(ix))$"LG"
		cFlds = cFlds+iif(empty(cFlds),"",",")+field(ix)
	endif	
endfor
if nScopeOption = 2 
	cWhere = iif(!empty(set("filter"))," where "+strtran(lower(set("filter")),"hasta.",""), "")
	select &cFlds from hasta &cWhere into table (cTempFile)
else
	select &cFlds from hasta where recno() = thisform.rcno into table (cTempFile)
endif
cDataFullPath = dbf(alias())
use in (alias())
select hasta
cDSN = "DSN=FoxPro Files;DBQ="+cDefDir+";DefaultDir="+cDefDir+";"
cSourceDB = ""
cSourceType = ""
cOther = "DriverId=536;MaxBufferSize=512;PageTimeout=5;"
cSQLStatement = "SELECT * FROM "+cTempFile
cDataFile = cTempFile+".dbf"
Public oWordDocument    
oWordDocument = createobject("word.basic")
with oWordDocument    
    .FileNewDefault()
    tcWaitWindowClass = this.findwindowclass("Microsoft Word - Document1")
	.InsertDatabase(35,511,0, ;
		cDSN+cSourceDb+cSourceType+cOther, ;
		cSQLStatement,,,,cDataFile,,,1)
	.filesaveas(ctempFile,0)			&& Save as a word doc for mailmerge
	.fileclose(1)						&& Close saving
* Datasource ready, now create mailmerge main document
	.filenewdefault()     && A template could be here
	.MailMergeOpenDataSource(cTempFile+".doc")  && Set saved file as data source for mailmerge (Directly a table could be set via ODBC)
	.MailMergeEditMainDocument			&& Activate the main document
	.AppShow
endwith
do while this.findwindowhandle(tcWaitWindowClass)<>0
enddo
release oWordDocument
erase (cTempFile+".*")

*****
* findwindowclass method
* Prefer class for Title is likely to change
*****
lparameters tcWintitle
DECLARE integer FindWindow in WIN32API string cNull, string cWinName
declare integer GetClassName in WIN32API integer hWnd, string @cClass, integer nMaxBuffer
hWnd = FindWindow(0,tcWintitle)
lpClassName = space(200)
nBufLen = GetClassName(hWnd,@lpClassName,200)
clear dlls
return substr(lpClassName,1,nBufLen)

*****
* findwindowhandle method
* Prefer class for Title is likely to change
*****
lparameter tcWinClass
DECLARE integer FindWindow in WIN32API string cNull, string cWinName
nHWND = FindWindow(tcWinClass,0)
clear dlls
return nHWND
Cetin
Çetin Basöz

The way to Go
Flutter - For mobile, web and desktop.
World's most advanced open source relational database.
.Net for foxheads - Blog (main)
FoxSharp - Blog (mirror)
Welcome to FoxyClasses

LinqPad - C#,VB,F#,SQL,eSQL ... scratchpad
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform