UTILIZZO DI UN TRIGGER

di Anonimizzato13446 il
3 risposte
Salve,

Sono nuovo del forum, e Vi ringrazio anticipatamente per le eventuali risposte.

Avrei bisogno di capire una cosa:

-Utilizzo un sw gestionale che si gira con un db, su un motore sql.

- questio sw, ovviamente, utilizza delle maschere, scritte in vb6, per registrare dei documenti

Avrei bisogno, di capire se, tramite l'utilizzo di un TRIGGER o di un' altra istruzione, posso intercettare l'insert o l'update su una determinata tabella, e far comparire un messaggio di poche righe sul video dell' utente.

è importante che il messaggio non sia bloccante, e che quindi l' insert o l' update vadano a buon fine.

faccio un banale esempio:

L'utente preme sul bottone registra, compare il messaggio "attenzione, licenza scaduta", e il documento viene registrato.


Spero di essere stato abbastanza chiaro, e mi scuso per gli eventuali strafalcioni

Grazie

3 Risposte

  • Itachi86 ha scritto:


    Avrei bisogno, di capire se, tramite l'utilizzo di un TRIGGER o di un' altra istruzione, posso intercettare l'insert o l'update su una determinata tabella, e far comparire un messaggio di poche righe sul video dell' utente.
    ciao,
    si puoi farlo.

    Ad esempio con un trigger, AFTER INSERT fai un controllo e se si verifica una condizione Stampi il messaggio.

    Essendo il trigger AFTER INSERT il messaggio comparira' dopo l'inserimento.
  • Ciao,

    grazie mille per l'attenzione e la risposta

    io ho tentato (raccogliendo un po' di info, dato che mi sono da poco affacciato su questo tipo di operazioni)

    di scrivere una cosa del genere:

    IF OBJECT_ID ('TR_MSDO11','TR') IS NOT NULL
    DROP TRIGGER TR_MSDO11;
    GO

    CREATE TRIGGER TR_MSDO11 ON DO11_DOCTESTATA
    AFTER INSERT
    AS

    DECLARE @PrintMessage nvarchar(50);

    SET @PrintMessage = N'ATTENZIONE LICENZA SCADUTA'

    DECLARE @DATACTL DATETIME;

    SET @DATACTL = GETDATE()

    IF @DATACTL >= (SELECT ISNULL(FW07_DATAFINEVAL, @DATACTL) FROM FW07_APPUSER
    WHERE FW07_CODICE = 'TeamSa'
    )


    RAISERROR (@PrintMessage, 16, 1);


    Ma purtroppo, nonostante utilizzo AFTER INSERT, la transazione viene comunque interrotta e ricevo l'errore che mi chiede se voglio o meno ripetere la transazione.

    Esiste un modo per avere un semplice messaggio a video, e far andare a buon fine la transazione? (in questo caso la scrittura di un documento)


    Grazie mille
  • Itachi86 ha scritto:


    Ciao,

    grazie mille per l'attenzione e la risposta

    io ho tentato (raccogliendo un po' di info, dato che mi sono da poco affacciato su questo tipo di operazioni)

    di scrivere una cosa del genere:

    IF OBJECT_ID ('TR_MSDO11','TR') IS NOT NULL
    DROP TRIGGER TR_MSDO11;
    GO

    CREATE TRIGGER TR_MSDO11 ON DO11_DOCTESTATA
    AFTER INSERT
    AS

    DECLARE @PrintMessage nvarchar(50);

    SET @PrintMessage = N'ATTENZIONE LICENZA SCADUTA'

    DECLARE @DATACTL DATETIME;

    SET @DATACTL = GETDATE()

    IF @DATACTL >= (SELECT ISNULL(FW07_DATAFINEVAL, @DATACTL) FROM FW07_APPUSER
    WHERE FW07_CODICE = 'TeamSa'
    )


    RAISERROR (@PrintMessage, 16, 1);


    Ma purtroppo, nonostante utilizzo AFTER INSERT, la transazione viene comunque interrotta e ricevo l'errore che mi chiede se voglio o meno ripetere la transazione.

    Esiste un modo per avere un semplice messaggio a video, e far andare a buon fine la transazione? (in questo caso la scrittura di un documento)


    Grazie mille
    ciao,

    non conosco i trigger in sqlserver quindi non so dirti se il trigger che hai creato e' corretto.

    Ad occhio sembra corretto.

    Comunque puoi piu semplicemente scrivere del codice che faccia questo semplice controllo , quindi niente trigger
Devi accedere o registrarti per scrivere nel forum
3 risposte