Функция DDERequest( )

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

Синтаксис:

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

Параметры:
nChannelNumber
Задает номер канала приложения-сервера.
cItemName
Задает имя элемента. Оно зависит от приложения и должно быть ему понятно. Например, Microsoft Excel ссылается на ячейки электронной таблицы, используя систему обозначений в виде номеров строк и столбцов. Имя элемента R1C1 определяет ячейку в первой строке и первом столбце электронной таблицы.
cDataFormat
Задает формат запрошенных данных. По умолчанию используется формат CF_TEXT. В этом формате поля разделяются табуляторами, а записи ѕ возвратом каретки и переводом строки.
cUDFName
Допускает асинхронную передачу данных. Если имя cUDFName опущено, Visual FoxPro ждет поступления данных из сервера в течение периода времени, заданного функцией DDESetOption( ). Если вы задали имя пользовательской функции в аргументе cUDFName, Visual FoxPro продолжит выполнение программы сразу после выдачи запроса.
Когда данные берутся из приложения-сервера, выполняется пользовательская функция cUDFName. Ей передаются шесть параметров в следующем порядке:

  1. Channel Number (номер канала) Номер канала приложения-сервера
  2. Action (действие) XACTCOMPLETE (успешная транзакция), XACTFAIL (ошибка в транзакции)
  3. Item (элемент) Имя элемента, например R1C1 в качестве имени ячейки электронной таблицы Microsoft Excel
  4. Data (данные) Новые данные (REQUEST) или передаваемые данные (POKE или EXECUTED)
  5. Format (формат) Формат данных, например CF_TEXT
  6. Transaction Number (номер транзакции) Номер транзакции, возвращаемый функцией DDERequest( )

Используйте функцию 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

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 01.01.2003