Created
September 21, 2021 15:33
-
-
Save kaizhu256/5972acb2755baf01dde2c42eda7264b7 to your computer and use it in GitHub Desktop.
Export memo fields with other field types to a text file with Visual FoxPro
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
* https://docs.microsoft.com/en-us/previous-versions/troubleshoot/visualstudio/foxpro/export-record-memo-fields | |
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. | |
*!* Prompt for Output file and use Low-Level functions | |
*!* to create it. | |
lcTextFile = FCREATE(GETFILE('txt', 'Select Text')) | |
*!* Starts scanning the table and converts the fields | |
*!* values according to their types ** | |
SCAN | |
WAIT WINDOW STR(RECNO()) + ' Of ' + STR(RECCOUNT()) NOWAIT | |
FOR lnCount = 1 TO lnFieldCount | |
lcType = laGetFields(lnCount, 2) | |
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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment