Запрашивает Данные от приложения-сервера в сеансе динамического обмена данными (DDE).

DDERequest(nChannelNumber, cItemName [, cDataFormat [, cUDFName]])

Параметры

nChannelNumber

Определяет номер канала приложения-сервера.
cItemName

Определяет имя элемента. Имя элемента является специфическим для приложения и должно быть понято приложением. Например, Microsoft Excel использует обозначение строки и столбца для обращения к ячейкам в рабочем листе. Имя элемента R1C1 определяет ячейку в первой строке и первом столбце рабочего листа.
cDataFormat

Определяет формат для запроса данных. Заданный по умолчанию формат - CF_TEXT. В этом формате, поля разграничены табуляторами, а записи разграничены переводом каретки и переводом строки.
cUDFName

Позволяет асинхронную передачу данных. Если Вы опускаете cUDFName , Visual FoxPro ждет данных от сервера в течение периода, указанного в DDESetOption( ) . Если Вы определяете имя определяемой пользователем функции через cUDFName , Visual FoxPro продолжает выполнение программы немедленно после того, как запрос сделан. Когда данные становятся доступны от приложения-сервера, определяемая пользователем функция, указанная через cUDFName выполняется. В Определяемую пользователем функцию передаются шесть параметров в следующем порядке:

Параметр Содержание

Channel Number

Номер канала приложения - сервера.

Action

XACTCOMPLETE (успешная транзакция).XACTFAIL (неуспешная транзакция).

Item

Имя элемента; например, R1C1 для ячейки рабочего листа Microsoft Excel.

Data

Новые данные (REQUEST) или переданные данные (POKE или EXECUTED).

Format

Формат данных; например, CF_TEXT.

Transaction Number

Номер транзакции, возвращенный DDERequest( ) .

Используйте DDEAbortTrans( ) для отмены незаконченной транзакции. В случае сбоев транзакции, Вы можете использовать DDELastError( ) для определения, почему она оказалась незавершенной. Когда Вы включаете cUDFName , DDERequest( ) возвращается номер транзакции равный или больший чем 0 в случае завершения, или -1, если происходит ошибка.

Возвращаемое значение

Символьное

Замечания

Прежде, чем Вы можете запросить данных используя DDERequest( ) , Вы должны установить канал к приложению-серверу через DDEInitiate( ) .

Если запрос о данных успешен, DDERequest( ) возвращает данные как символьную строку. При сбоях запроса, DDERequest( ) возвращает пустую строку и DDELastError( ) возвращает значение отличное от нуля. Если Вы включаете асинхронную определяемую пользователем функцию cUDFName , DDERequest( ) возвращает номер транзакции в случае успеха, или -1, если происходит ошибка.

Пример

Следующие пример использует DDEInitiate( ) для устанавлки DDE канала между Visual FoxPro и рабочим листом Microsoft Excel, по имени Sheet1. 'Excel' - сервисное имя, и 'Sheet1' является именем темы. Номер канала сохранен в переменной памяти mchannum для использования в последующих функциях DDE.

DDERequest( ) запрашивает имя элемента R1C1, т.е. данные в первой строке и столбце таблицы Sheet1.

Скопировать код
mchannum = DDEInitiate('Excel', 'Sheet1')
IF mchannum != -1
mrequest = DDERequest(mchannum, 'R1C1')
IF !EMPTY(mrequest) AND DDELastError( ) = 0 && Successful
WAIT WINDOW 'R1C1 contents: ' + mrequest
ENDIF
= DDETerminate(mchannum) && Close the channel
ENDIF

См. Также