Экспорт полей MEMO с другими типами полей в текстовый файл с помощью Visual FoxPro


Аннотация


В этой статье показано, как динамически экспортировать записи, содержащие поля MEMO в таблице вместе с другими типами полей, в текстовый файл с разделителями-запятыми.

Дополнительная информация


Пример кода в этой статье описан в следующем порядке:
  1. Запрашивает исходную таблицу (DBF-файл).
  2. Запрашивает Целевой текстовый файл (txt-файл).
  3. Экспортируйте содержимое таблицы в текстовый файл.
Код проверяет и определяет все типы полей и все записи в таблице, а затем обрабатывает их в соответствии с типом данных:
CLOSE ALLCLEAR ALLlcFieldString = ''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 = ''ENDscanFCLOSE(lcTextFile)CLOSE AllCLEAR AllWAIT WINDOW 'Text File Creation Completed' NOWAIT

Ссылки


Чтобы получить дополнительные сведения об экспорте полей MEMO, щелкните следующий номер статьи базы знаний Майкрософт:
95722 Экспорт полей MEMO в ASCII файл