Announcement

Collapse
No announcement yet.

Neuer Record + gemeldet bekommen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Neuer Record + gemeldet bekommen

    <pre> Hallo,
    ich habe eine Anwendung als Multitier:
    MS-SQL; Externes Datenmodul; DCOM-Client;
    Im Externen Datenmodul wird die DB über ADO angesprochen.
    Wenn nun ein neuer Datensatz in einer bestimmten Tabelle angelegt wird, wie kann ich dieses Ereignis dem Client mitteilen?
    Helmut</pre>

  • #2
    Hallo,

    für diese Aufgabe stehen mindestens 3 Wege zur Verfügung: <br>
    1. Anwendungsserver pollt die Tabelle regelmässig an <br>
    2. Trigger im MS SQL Server ruft eine Stored Procedure auf, die beim Anwendungsserver bzw. direkt beim Client zurückruft.<br>
    3. Rückgriff auf die Microsoft SQL Server Notification Services (siehe <i>http://www.microsoft.com/sql/techinfo/development/2000/sqlnsto.asp </i>)

    Der zweite Weg könnte so aussehen, dort frage ich zum einen eine Eigenschaft des COM+ Objekts ab und rufe danach die Interface-Methode DoWork auf:

    <pre>

    CREATE PROCEDURE spCallCOMplusObj
    @sTXT VARCHAR(50) OUTPUT
    AS
    Declare @Object int, @hr int, @RetVal int, @iStatus int
    SET @iStatus = 1
    -- Objektinstanz erzeugen
    Exec @hr = sp_OACreate '{0E9447C4-EF22-4570-B202-45D50D3B5EFB}', @Object OUTPUT
    IF @hr = 0
    BEGIN
    SET @iStatus = 2
    END
    -- Interface-Methode (Property) abfragen
    Exec @hr = sp_OAGetProperty @Object, 'Daten', @sTXT OUTPUT
    IF @hr=0
    BEGIN
    SET @iStatus = 3
    END
    Exec @hr = sp_OAMethod @Object, 'DoWork'
    IF @hr=0
    BEGIN
    SET @iStatus = 4
    END
    Exec @hr = sp_OADestroy @Object
    Return @iStatus

    </pre&gt

    Comment

    Working...
    X