Esportare campi memo con altri tipi di campo in un file di testo con Visual FoxPro
Questo articolo descrive come esportare dinamicamente i record che contengono campi Memo in una tabella, insieme agli altri tipi di campo, in un file di testo delimitato da virgole.
Versione originale del prodotto: Visual FoxPro
Numero KB originale: 241424
Riepilogo
Questo articolo illustra come esportare dinamicamente i record che contengono campi Memo in una tabella, insieme agli altri tipi di campo, in un file di testo delimitato da virgole.
Ulteriori informazioni
Il codice di esempio in questo articolo segue questo ordine:
- Richiede una tabella di origine (file con estensione dbf).
- Richiede un file di testo di destinazione (file .txt).
- Esportare il contenuto della tabella nel file di testo.
Il codice analizza e determina ogni tipo di campo e ogni record nella tabella, quindi li elabora di conseguenza in base al tipo di dati:
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