DDEAdvise( ) -Funktion

Erstellt eine halbautomatische oder automatische Verknüpfung, die für den dynamischen Datenaustausch (DDE) verwendet wird.

DDEAdvise(nChannelNumber, cItemName, cUDFName, nLinkType)

Rückgabewerte

Logisch

Parameter

  • nChannelNumber
    Gibt die Nummer des Kanals an.

  • cItemName
    Gibt den Namen des Elements an. Microsoft Excel arbeitet z. B. mit Zeilen- und Spaltennotation, um auf die Zellen in einem Arbeitsblatt zu verweisen. Der Elementname Z1S1 bezeichnet die Zelle in der ersten Zeile und der ersten Spalte des Arbeitsblattes.

  • cUDFName
    Gibt die benutzerdefinierte Funktion an, die beim Einrichten einer halbautomatischen oder automatischen Verknüpfung und dem Ändern des Elements cItemName ausgeführt wird. Wenn die benutzerdefinierte Funktion ausgeführt wird, werden die folgenden sechs Parameter in der unten aufgeführten Reihenfolge an diese Funktion übergeben:

    Parameter Inhalt
    Kanalnummer Kanalnummer der Serveranwendung
    Aktion ADVISE oder TERMINATE
    Element Elementname; z. B. Z1R1 für die Zelle eines Microsoft Excel-Arbeitsblattes
    Daten Die neuen Daten (automatische Verknüpfung) oder die leere Zeichenfolge (halbautomatische Verknüpfung)
    Format Datenformat; z. B. CF_TEXT.
    Auskunftsstatus Verknüpfungstyp (0 = manuell, 1 = halbautomatisch, 2 = automatisch)

    Die LPARAMETER- oder PARAMETER-Anweisung der benutzerdefinierten Funktion muss sechs Parameter enthalten, damit die von der Serveranwendung übergebenen Werte akzeptiert werden können. Wenn Sie eine halbautomatische Verknüpfung herstellen, wird die benutzerdefinierte Funktion ausgeführt, und im Parameter "Daten" wird eine leere Zeichenfolge übergeben. Sie können später eine DDERequest( )-Funktion ausgeben, um die Daten abzurufen. Wenn Sie eine automatische Verknüpfung herstellen, wird die benutzerdefinierte Funktion ausgeführt, und die Daten werden im Parameter "Daten" übergeben.

    Der Parameter "Aktion" enthält ADVISE, wenn die Verknüpfung vom Server aus aktualisiert wird. Die benutzerdefinierte Funktion wird aufgerufen, und der Parameter "Aktion" enthält TERMINATE, wenn die Verknüpfung vom Client oder Server beendet wird.

    Alle von der benutzerdefinierten Funktion zurückgegebenen Werte werden ignoriert.

  • nLinkType
    Der Verknüpfungstyp wird wie folgt angegeben:

    nLinkType Verknüpfungstyp
    0 Manuell
    1 Halbautomatisch
    2 Automatisch

    Sie können die Benachrichtigung seitens der Serveranwendung (bei halbautomatischer Verknüpfung) deaktivieren, indem Sie für nLinkType 0 angeben. Wenn sich das Element ändert, wird in diesem Fall die benutzerdefinierte Funktion nicht ausgeführt.

Hinweise

Mit DDEAdvise( ) wird eine halbautomatische oder automatische Verknüpfung zu einem Elementnamen in einer Serveranwendung hergestellt. Wird mit DDEAdvise( ) eine halbautomatische Verknüpfung hergestellt, benachrichtigt die Serveranwendung Visual FoxPro, wenn sich der Elementname geändert hat. Wird eine automatische Verknüpfung hergestellt, teilt die Serveranwendung Visual FoxPro mit, dass sich der Elementname geändert hat, und übergibt die neuen Daten an Visual FoxPro.

Bevor Sie eine Verknüpfung herstellen können, müssen Sie mit DDEInitiate( ) einen Kanal zur Serveranwendung herstellen.

Mit DDEAdvise( ) können Sie auch die Benachrichtigung seitens des Servers deaktivieren.

DDEAdvise( ) gibt bei erfolgreicher Ausführung Wahr (.T.) zurück, andernfalls wird Falsch (.F.) zurückgegeben.

Beispiel

Das folgende Beispiel veranschaulicht, wie Sie einen DDE-Kanal zu einem Microsoft Excel-Arbeitsblatt mit dem Namen "Sheet1" aufbauen. DDEAdvise( ) wird verwendet, um zwei Verknüpfungen zu den Daten in zwei Tabellenzellen (Z1S1 und Z1S2) herzustellen. Die benutzerdefinierte Funktion NEWDATA wird ausgeführt, wenn sich die Daten in einer der beiden Zellen ändern. Die benutzerdefinierte Funktion testet die Parameter item und advise, um zu ermitteln, welches Element sich geändert hat und welche Art von Verknüpfung eingerichtet wurde.

PUBLIC mchannum
mchannum = DDEInitiate('Excel', 'Sheet1')
IF mchannum != -1
   = DDEAdvise(mchannum, 'R1C1', 'newdata', 1)     && Notify link
   = DDEAdvise(mchannum, 'R1C2', 'newdata', 2)     && Automatic link
   WAIT WINDOW 'Enter data in first two cells in Excel.'
ENDIF
PROCEDURE newdata
PARAMETERS channel, action, item, data, format, advise
IF action = 'ADVISE'
   DO CASE
      CASE item = 'R1C1'   && Notify link
         newvalue = DDERequest(channel, item)
         ? 'R1C1 notify link: ' + newvalue
      CASE item = 'R1C2'   && Automatic link
         newvalue = data
         ? 'R1C2 automatic link: ' + newvalue
   ENDCASE
ELSE
   IF action != "TERMINATE"
      = DDETerminate(mchannum)
 ENDIF
ENDIF

Siehe auch

DDEInitiate( ) | DDELastError( ) | DDESetOption( ) | DDETerminate( )