Запрашивает данные из приложения-сервера в ходе сеанса связи динамического обмена данными (DDE).
Синтаксис:
DDERequest(nChannelNumber, cItemName [, cDataFormat [, cUDFName]])
Параметры:
nChannelNumber
Задает номер канала приложения-сервера.
cItemName
Задает имя элемента. Оно зависит от приложения и должно быть ему понятно. Например, Microsoft Excel ссылается на ячейки электронной таблицы, используя систему обозначений в виде номеров строк и столбцов. Имя элемента R1C1 определяет ячейку в первой строке и первом столбце электронной таблицы.
cDataFormat
Задает формат запрошенных данных. По умолчанию используется формат CF_TEXT. В этом формате поля разделяются табуляторами, а записи ѕ возвратом каретки и переводом строки.
cUDFName
Допускает асинхронную передачу данных. Если имя cUDFName опущено, Visual FoxPro ждет поступления данных из сервера в течение периода времени, заданного функцией DDESetOption( ). Если вы задали имя пользовательской функции в аргументе cUDFName, Visual FoxPro продолжит выполнение программы сразу после выдачи запроса.
Когда данные берутся из приложения-сервера, выполняется пользовательская функция cUDFName. Ей передаются шесть параметров в следующем порядке:
Используйте функцию DDEAbortTrans( ) для отмены незавершенной транзакции. Если транзакция завершается неудачно, с помощью функции DDELastError( ) можно определить причину ошибки.
Если задан аргумент cUDFName, функция DDERequest( ) возвращает неотрицательный номер транзакции в случае успешного выполнения или -1 в случае ошибки.
Результат:
Символьный
Комментарии:
Допустима только в Visual FoxPro и FoxPro для Windows.
Перед тем как запрашивать данные с помощью функции DDERequest( ), необходимо установить канал с приложением-сервером, используя функцию DDEInitiate( ).
Если запрос данных увенчался успехом, DDERequest( ) возвращает данные в виде символьной строки. Если запрос оказывается неудачным, DDERequest( ) возвращает пустую строку, а DDELastError( ) ненулевое значение. Если задана асинхронная функция cUDFName, определенная пользователем, DDERequest( ) возвращает номер транзакции в случае успеха или -1 в случае ошибки.
Пример:
* В следующем примере функция DDEInitiate( ) устанавливает канал DDE * между Visual FoxPro и электронной таблицей 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