Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Word mail Merge
Message
De
05/08/1998 07:25:11
Cetin Basoz
Engineerica Inc.
Izmir, Turquie
 
 
À
04/08/1998 16:58:57
Information générale
Forum:
Visual FoxPro
Catégorie:
Problèmes
Titre:
Divers
Thread ID:
00123929
Message ID:
00123999
Vues:
22
>In my VFP medical system I have a patient record with name/address etc. I would like to have a number of standard letters in Word which I can maill merge the patients details to.....can this be done from within the VFP application? Does Word need to be running in the background?
Hi Bob,
In files\classes section there is class for MM to word. You could modify the class code to use your templates. And here is another sample code that would work with both Word95 & Word97.
**************************************************
* Start of code
**************************************************

PUBLIC oWordDocument

*** set the LOCALEID to English
nlLocaleId=sys(3004)		&& Save local id
=sys(3006,1033)				&& We will be sending instructions in English 
wait window nowait "Creating Word Document..."     && Inform user
oWordDocument=createobject("word.basic")	&& Create word object
with oWordDocument
* Remove the rem if you want the user see what's going on in word
	.appshow							&& Show word app - Word 7.0 support
	.filenewdefault        				&& New file, default template - Will create datasource
	cDSN = "DSN=Visual FoxPro Tables;UID=;PWD=;"
	cSourceDb = "SourceDB=C:\Program Files\vfp50\SAMPLES\DATA\Testdata.dbc"
	cSourceType = ";SourceType=DBC;"
	cOther = "Exclusive=No;BackgroundFetch=No;Collate=Machine;"

	cSQLStatement = "SELECT recno() as rcno,* FROM customer"

* Insertdatabase parms build here for clarifying
* 35,511 are autoformatting options for grid - ignore
* 0 Link to source false - for MM templates might be 1

	.InsertDatabase(35,511,0, ;
		cDSN+cSourceDb+cSourceType+cOther, ;
		cSQLStatement,,,,,,,1)

	.filesaveas("c:\temp\xxmmergedoc",0)			&& Save as a word doc for mailmerge
	.fileclose(1)						&& Close saving
* Datasource ready, now create mailmerge main document
   * If you have a document template with logo in header&footer etc use it else .filenewdefault
	.filenew("c:\temp\prttest.doc")     && New file based on prttest (Logo in header - address in footer)
	* This needs template file already EXISTS !
	* Just create "c:\temp\prttest.doc" for testing
	.MailMergeOpenDataSource("xxmmergedoc.doc")  && Set saved file as data source for mailmerge (Directly a table could be set via ODBC)
	.MailMergeEditMainDocument			&& Activate the main document
	.insertmergefield("rcno")
	.insertpara
	.Insert("Dear ")                    && Start writing
	.InsertMergeField("Contact")        && Insert a merge field - any field in data table
	.Insert(",")
	.InsertPara							&& Or +chr(13) to previous
	.Insert("...Some text here...")
	.InsertPara
	.Insert("Thanks.")
	.InsertPara
	.Insert("Yours sincerely")
	.InsertPara
	.InsertPara
	* Instead of these inserts template could hold the formatted text and 
	* mark the mergefield places with bookmarks
	* or totally preset template doc could there be
	*	.editbookmark("Contact",,,,1) && Goto bookmark
	*	.InsertMergeField("Contact")
	*
	* Following address is fictional (Tel. is mine)
	.insert("6200 Science Fiction Street"+chr(13))
	.insert("Somecity, AR 80111"+chr(13))
	.insert("TEL: (+90) 232-278 50 83  FAX: (+90) 232-278 50 82"+chr(13))
 .MailMergeToDoc       && Merge to a new document - For printer .MailMergeToPrinter
* .FileSaveAs("c:\temp\frmletters.doc") && If want to save
*	.MailMergeToPrinter
*	.Fileexit(2)   && Exit no save - directly print and exit w/o save
endwith
* InsertWordField could also be used but FP is more capable of it so we should have transfered the needed already
* Here the control is passed to word. Sitting and waiting for further process.
wait window "Data Merged to c:\temp\frmletters.doc"

**** Set the LocaleId to the previous value
=sys(3006,val(nlLocaleId))

**************************************************
* End of code
**************************************************
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
Répondre
Fil
Voir

Click here to load this message in the networking platform