__________________________________

             FoxData             
__________________________________

FoxData is a sample application that shows how FoxPro can be used as 
Dynamic Data Exchange (DDE) server.  You can use FoxData to paste or 
link the contents of a FoxPro table or query to a Microsoft Excel 
spreadsheet, for example, or to create a tab-delimited Microsoft Word 
document.  Full source code is included with the application.  FoxData
is located in the FOXPROW\GOODIES\FOXDATA directory.  

A copy of this FoxData help information is also available in the 
FOXPROW\GOODIES\FOXDATA directory and is named FOXDATA.TXT.  You may 
want to print FOXDATA.TXT to the printer for easier viewing.

__________________________________

     FoxData DDE Server Dialog   
__________________________________

The FoxData DDE Server dialog contains these options:

	Copy push button
		Copies the selected table or query to the clipboard, and puts 
		sufficient DDE link information on the clipboard to support the
		Paste or Paste Link options in the client application.  
		Choosing Paste from a client application pastes a one-time 
		snapshot of the copied FoxPro table or query into the client 
		application's active document or spreadsheet.  Choosing Paste 
		Link creates a link between the client application and the 
		FoxPro table or query so that the linked information will be 
		refreshed at least as often as every time you open the linked 
		document or spreadsheet.  Data may be updated even more 
		frequently, depending upon the client application.  

		Use the popup to select the type of file (Table/DBF or Query) 
		you want to copy.  Select a file from the Copy Table or Query 
		list, then choose Copy.

	Quit push button
		Exits FoxData without taking any action.

	Help push button
		Displays help information about FoxData.

	Include Field Names check box
		Check this check box to include the names of table or query 
		fields in the data copied to the clipboard.
	
	Directory push button
		Displays the Select Directory dialog so you can choose the 
		drive and/or directory on which the desired table or query 
		is located. 

	Directory text display area 
		Displays the currently selected directory.  To change the 
		directory, choose the Directory... push button.
   
	Number of DDE Clients area
		Displays the number of active DDE connections, and includes 
		the following push button:  
		
		Show Log push button
			Enabled only when an error occurs in copying the table or
			query to the clipboard.  Choose this button to view a log 
			of the error(s).

__________________________________

   Using the FoxData Application 
__________________________________

To use the FoxData sample application, choose Do... from the FoxPro 
Program menu and select FoxData.app from the FOXPROW\GOODIES\FOXDATA 
directory.  The FoxData DDE Server dialog is displayed.  Use this 
dialog to select a table or query and copy it to the clipboard.  Then
access the client application and paste or link the copied data to the
client application.

Copying from a FoxPro table to a Microsoft Excel spreadsheet
	To copy, for example, the contents of the Sales table from FoxPro 
	to a Microsoft Excel spreadsheet, select the Sales table from the 
	FoxData DDE Server dialog and choose Copy.  The contents of the 
	Sales table are placed on the clipboard.  Click on cell A1 in a 
	blank spreadsheet in Microsoft Excel, then choose Paste, Paste 
	Special or Paste Link from the Edit menu in Excel.  The contents of
	the Sales table are now pasted into the appropriate cells in the 
	Excel spreadsheet.  

Copying from a FoxPro table to a Microsoft Word document
 	To copy the contents of the table to Microsoft Word, you can choose
 	Paste Special from the Word Edit menu and then choose Paste Link 
 	from the Paste Special dialog.  The contents of the Sales table are
 	formatted as tab-delimited rows in Microsoft Word.

Note:  It may take your computer a few moments to display the results 
of linking data between applications, especially if you're transferring
large amounts of information.  For example, if you choose Paste Link to
paste FoxPro data into a spreadsheet, Excel first may fill the 
spreadsheet cells with the comment "#N/A" while the DDE transfer is 
taking place.  In a moment or two the "#N/A" will clear from each cell
and you will see the linked table fields and rows displayed in the 
appropriate cells.  When you transfer data to a Microsoft Word 
document, Windows may display the hourglass for a moment or two, 
until the transfer is complete.  

__________________________________

          Editing a Link          
__________________________________

To change the link between a FoxPro table or query and a client 
application, you can edit the link.  The following illustrations 
refer to the links established in the 'Using the FoxData Application'
examples above. 

Editing a link in a Microsoft Excel spreadsheet
	To remove field names from the displayed FoxPro table or query 
	information in a linked Excel spreadsheet, for example, select a 
	non-blank cell and choose F2 to edit the cell's contents.  Change 
	the word "All" at the end of the command to "Data", then press 
	Ctrl+Shift+Enter.  The linked fields in the spreadsheet are 
	redisplayed without field names.  

Editing a link in a Microsoft Word document
	To edit a link in a Microsoft Word document, choose Links... from
	the Edit menu in Word.  Select the link you want to edit, then 
	choose Change Link....  In the Change Link dialog, edit the 
	information in the Item text box.  For example, change the word
	"All" in the Item text box to "Data" and choose OK until you 
	return to the document.  The linked data is redisplayed without
	field names.

For more information about manipulating linked data, refer to the 
manuals for the linked applications.  

__________________________________

     DDE Commands and FoxData     
__________________________________

As a DDE server, FoxData responds to predetermined DDE commands.  These
commands are described in the following section.  Normally you would 
build these commands into the application that is trying to access the 
data.  The syntax used depends very much on the application that you're
using.  For example, Microsoft Excel has INITIATE, REQUEST and 
TERMINATE commands in its macro language.  Microsoft Word uses 
DDEInitiate, DDERequest and DDETerminate from WordBasic.  See your 
application's manual for how to use DDE with that application.  
(Note that sometimes you will need to find additional programming 
documentation to supplement the manuals that come with the product.  
Sometimes the information is in text files supplied on the application 
disks.)

__________________________________

   Using FoxData as a DDE Server  
__________________________________

FoxData supports dynamic data exchange (DDE) as a source (server).  

This section describes the five topics that FoxData supports as a DDE 
server and the items that are valid for each topic.  The five topics 
are <table name>, <query name>, "SQL <expr>", <directory> and "System".  


<table name> Topic
__________________________________

	When requesting the contents of a table, you may specify the 
	directory the object is in, followed by a semicolon, the key word 
	TABLE, and then the name of an existing table.

	The syntax for this topic is:

   		[<path>;]TABLE <table name>

	For example, to request the contents of the Sales table in the 
	FoxPro FOXDATA subdirectory, you can type just the name of the 
	table or its full path:

  		TABLE Sales

  		or

  		c:\FOXPROW\GOODIES\FOXDATA;TABLE Sales 
	
	(Note: Do not enclose table name in brackets [ or ].)

	The following table lists the items that are valid with the 
	<table name> topic.

	Item		Returns
	_______________________________________________________

	All			All the data in the table, including field names.
	Data		All rows of data without field names.
	NextRow		The next row in the table or query.  When you first 
				initiate a channel, NextRow returns the first row.  If 
				the current row is the last record and you execute 
				NextRow, the request fails.
	PrevRow		The previous row in the table or query.  If PrevRow is 
				the first request over a new channel, the last row of 
				the table or query is returned.  If the current row is 
				the first record, the request for PrevRow fails.
	FirstRow	The data in the first row of the table or query.
	LastRow		The data in the last row of the table or query.
	<fieldname>	The value of field <fieldname> for the current row.
	FieldCount	The number of the fields in the table or query.
	FieldNames	A list of field names.
	
	The <table name> topic also supports a DDE poke command from 
	another application.  You can change the contents of a field by 
	supplying a field name and the new data value.


<query name> Topic
__________________________________

	The <query name> topic supports the same items as the <table name> 
	topic.  To copy a query using FoxData the query output must be 
	directed to a table or cursor.  When requesting the results of 
	a query, you may specify the directory the object is in, followed 
	by a semicolon, the key word QUERY, and then the name of an 
	existing query.

	The syntax for this topic is:

   		[<path>;]QUERY <query name>

	For example, to request the results of the Westsale query in the 
	FoxPro FOXDATA subdirectory, you can type just the name of the 
	query or its full path:

  		QUERY Westsale

  		or

  		c:\FOXPROW\GOODIES\FOXDATA;QUERY Westsale 
	
	(Note: Do not enclose query names in brackets [ or ].)

	For a list of items that are valid with the <query name> topic,
	refer to the table of items in the <table name> topic above.

		
"SQL <expr>"
__________________________________

	The "SQL <expr>" topic returns the results of the specified SQL 
	expression.  The syntax for this topic is:

		[<path>;]SQL <sql SELECT statement>

	For example, to select all fields from the Sales table in the 
	FoxPro FOXDATA directory, enter:

  		c:\FOXPROW\GOODIES\FOXDATA;SQL Select * from Sales;
          
	To select only the values in the Fourthqtr field in the Sales 
	table, enter:

		c:\FOXPROW\GOODIES\FOXDATA;SQL Select Fourthqtr from Sales;

	Note: End each SQL statement with a semicolon (;).

	The "SQL <expr>" topic supports the same items as the <table name>
	 and <query name> topics.


<directory> Topic
__________________________________

	<directory> is the directory that contains tables, queries, screens
	and other directory elements.  This topic can be a fully qualified 
	path.  After you initiate a DDE link with a directory, you can 
	request a listing of the objects in that directory.  Initiating 
	this Topic has the effect of setting the default directory to the 
	one specified.

	Item		Returns
	_______________________________________________________

	TableList	A list of .DBF files in the path
	QueryList	A list of .QPR files in the path
	MacroList	A list of .FKY files in the path
	ReportList	A list of .FRX files in the path
	ScreenList	A list of .SPR files in the path
	FormList	Synonym for ScreenList
	ModuleList	A list of .APP and .PRG files in the path
            

"System" Topic
__________________________________

	"System" is a standard topic for all Windows applications.  
	It returns information about the topics FoxData supports.  
	The following table lists the valid items for the "System" topic.
         
	Item		Returns
	_______________________________________________________

 	SysItems	A list of items supported by the topic "System"
	Format		A list of the formats FoxData can copy onto 
				the Clipboard
 	Status		"Busy" or "Ready"
	<command>	Executes a FoxPro command

				Note: To send a command to FoxData, use the DDEExecute
				statement.  Some commands may interfere with the 
				internal operation of FoxData.  If you wish to send 
				extensive command sequences to FoxPro it is probably 
				better to write a server to specifically match 
				your needs. 

__________________________________

     Installing FoxData as a 
       Program Manager Icon   
__________________________________

To install FoxData as an application in the Microsoft Windows Program
Manager, click on your FoxPro program group window to make it active, 
then choose New... from the File menu in Program Manager.  In the New 
Program Object dialog, choose the New Program Item radio button, then 
choose OK.  Enter the following information in the Program Item 
Properties dialog:

	Text Box Name			Enter
	_______________________________________________________

	Description			FoxData 
	Command Line			c:\foxprow\foxprow.exe foxdata.app
	Working Directory	c:\foxprow\goodies\foxdata
	
Choose the Change Icon... push button.  In the Change Icon dialog, 
choose the Browse... push button.  In the Browse dialog, choose the 
C:\FOXPROW\GOODIES\FOXDATA directory, be sure that Icon Files is 
selected in the List Files of Type popup, and then select foxdata.ico
as the icon file.  Choose OK until you return to the Program Item 
Properties dialog, then choose OK to return to the FoxPro program group
window in the Program Manager and view the newly installed FoxData 
icon.  Now when you double-click on the FoxData icon, FoxPro launches
the FoxData application and displays the FoxData DDE Server dialog.


__________________________________

     More about FoxPro and DDE    
__________________________________

For more information about using DDE with FoxPro, refer to the Dynamic 
Data Exchange (DDE) chapter in the FoxPro Developer's Guide.

Note that the commands outlined above are modeled on Microsoft Access's 
DDE Server functionality and are designed to be compatible.  If you are 
careful to follow these command standards when you write programs that 
use FoxData, you'll be able to use either FoxPro or Microsoft Access to 
store your data.