Microsoft KB Archive/241424

= How to export memo fields with other field types to a text file with Visual FoxPro =

Article ID: 241424

Article Last Modified on 1/27/2005

-

APPLIES TO


 * Microsoft Visual FoxPro 5.0 Standard Edition
 * Microsoft Visual FoxPro 5.0a
 * Microsoft Visual FoxPro 6.0 Professional Edition
 * Microsoft Visual FoxPro 7.0 Professional Edition
 * Microsoft Visual FoxPro 8.0 Professional Edition
 * Microsoft Visual FoxPro 9.0 Professional Edition

-



This article was previously published under Q241424



SUMMARY
This article demonstrates how to dynamically export records that contain Memo fields in a table, together with the other field types, into a comma delimited text file.



MORE INFORMATION
The sample code in this article follows this order:
 * 1) Prompts for a source table (.dbf file).
 * 2) Prompts for a target text file (.txt file).
 * 3) Export the contents of the table to the text file.

The code scans and determines every field type and every record in the table and then processes them accordingly to the data type: CLOSE ALL CLEAR ALL

lcFieldString = '' lcMemo = ''

USE GETFILE('dbf', 'Select DBF') && Prompts for table to be used.

lnFieldCount = AFIELDS(laGetFields) && Builds array of fields from the && selected table.

lcTextFile = FCREATE(GETFILE('txt', 'Select Text'))
 * !* Prompt for Output file and use Low-Level functions
 * !* to create it.

SCAN WAIT WINDOW STR(RECNO) + ' Of ' + STR(RECCOUNT) NOWAIT FOR lnCount = 1 TO lnFieldCount lcType = laGetFields(lnCount, 2)
 * !* Starts scanning the table and converts the fields
 * !* values according to their types **

IF lcType # 'G' && Don't try to turn a general field into a string lcString = EVALUATE(laGetFields(lnCount, 1)) EndIf DO CASE CASE lcType = 'M' && Process the Memo Fields lnMemoLines = MEMLINES(EVALUATE(laGetFields(lnCount,1))) FOR lnLoop = 1 TO lnMemoLines IF lnLoop < lnMemoLines lcMemo = lcMemo + ; ALLTRIM(MLINE(EVALUATE(laGetFields(lnCount, 1)), ; lnLoop)) + ' ' ELSE lcMemo = lcMemo + ; ALLTRIM(MLINE(EVALUATE(laGetFields(lnCount, 1)), ; lnLoop)) ENDif ENDfor lcString = lcMemo lcMemo = '' CASE lcType = 'G' && Process the General Fields lcString = 'Gen' CASE lcType = 'D' && Process the Date Fields lcString = DTOC(lcString) CASE lcType = 'T' && Process the DateTime Fields lcString = TTOC(lcString) CASE lcType = 'N' && Process the Numeric Fields lcString = STR(lcString, LEN(STR(lcString)), 2) CASE lcType = 'I' && Process the Integer Fields lcString = STR(lcString) CASE lcType = 'L' && Process the Logical Fields IF lcString = .T.              lcString = 'T'            ELSE lcString = 'F'           ENDif ENDcase IF lnCount < lnFieldCount && Determines if the last field was && processed and sets the closing quote. lcFieldString = lcFieldString + '"' + lcString + '"' + ',' ELSE lcFieldString = lcFieldString + '"' + lcString + '"' ENDif ENDfor

FPUTS(lcTextFile, lcFieldString) && Writes string to the text file. lcFieldString = '' ENDscan

FCLOSE(lcTextFile)

CLOSE All CLEAR All WAIT WINDOW 'Text File Creation Completed' NOWAIT

