Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    87

    [VB6] Problema dopo aver inserito trigger

    Ciao a tutti...

    problema strano.

    ho inserito un trigger nel db Sql ( che mi copia il dato modificato o inserito dalla tabella1)

    Dal mio programma appena provo ad inserire una modifica o inserimento sulla tabella mi viene restituito l'errore:

    l'operazione non è consentita se l'oggetto è aperto VVoVe:

    Che succede ???

    E' una query normalissima

    RsUpd.Open "UPDATE Pianificazione SET Data_Consegna='" & Text5 & "', Forzato =1 ,Quantità = " & CLng(Text6) & " WHERE Riga=" & Text7 & " AND N_Disegno= " & RsProdotti!Codice_Menzaghi & " ;", DBPianificazione, adOpenDynamic, adLockPessimistic


    Ha sempre funzionato fino a quando non ho inserito il Trigger

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    87
    Se invece dopo
    RsUpd.Open "UPDATE Pianificazione SET Data_Consegna='" & Text5 & "', Forzato =1 ,Quantità = " & CLng(Text6) & " WHERE Riga=" & Text7 & " AND N_Disegno= " & RsProdotti!Codice_Menzaghi & " ;", DBPianificazione, adOpenDynamic, adLockPessimistic

    metto un
    rsupd.close

    nessun problema... Non posso mica cambiare tutto il codice.
    Avete qualche suggerimento ?

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Ma tu fai sempre la Open senza mai fare una Close ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    87
    se metto la close dopo l'update, il sistema mi risponde che non esistono connessioni attive .

    è sempre stato così anche per le delete e le insert

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    A cosa ti serve un recordset per una INSERT, una UPDATE o una DELETE?

    Dovresti usare la Execute dell'oggetto Connection ...

    In ogni caso, se usi la Open del recordset, non puoi riaprirlo se non lo chiudi ...

    Per i problemi che hai, se non si vede tutto il codice, non ti posso dire altro ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    87
    Set DB_Elabora = New ADODB.Connection

    With DB_Elabora
    .ConnectionString = "Driver={SQL Native Client};" & ConnessioneDati
    .Open
    .CursorLocation = adUseClient
    End With

    Set RsUpd = New ADODB.Recordset

    RsUpd.Open "INSERT INTO Variazioni (Codice_Menzaghi,Riga,Qta,Data_Consegna,Stato,Data _Inserimento,ordine) VALUES " + _
    " (" & CInt(Text3) & "," & CInt(Text7) & "," & CLng(Text6) & " ,'" & CDate(Text2) & "' ,1,'" & Date & "','" & Text20 & "');", DB_Elabora, adOpenDynamic, adLockPessimistic



    Il trigger SQL

    DECLARE @snk_Codice INT, @snk_ordine CHAR(13), @snk_riga INT

    SELECT @snk_Codice = Codice_Menzaghi,@snk_ordine = ORDINE,@snk_riga = riga
    FROM INSERTED

    SELECT Codice_Menzaghi, Ordine,Riga FROM dbo.sink_variazioni
    Where Codice_Menzaghi = @snk_codice and Ordine = @snk_ordine
    and Riga = @snk_riga
    IF @@ROWCOUNT >0
    DELETE FROM dbo.sink_variazioni
    Where Codice_Menzaghi = @snk_codice and Ordine = @snk_ordine
    and Riga = @snk_riga

    BEGIN
    INSERT INTO dbo.sink_variazioni (Codice_Menzaghi,Riga,Qta,Data_Consegna,
    Stato,Data_Inserimento,Ordine,Sink)

    SELECT
    Codice_Menzaghi,Riga,Qta,Data_Consegna,Stato,
    Data_Inserimento,Ordine,getdate() as 'Var_Tempo'
    FROM inserted
    SET NOCOUNT ON
    END

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Sì ma il codice VB dove lo hai inserito?

    E' una Sub ? Un click di un command ? Lo richiami piu' volte ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    87
    Con un click su un pulsante.

    Cmq ho capito adesso ho usato Execute sull'oggetto connection e funziona.

    Grazie

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Ok ... ricorda, se utilizzi un recordset, quando non ti serve piu', deve essere chiuso ...

    Altrimenti usi la Execute ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da anza
    .CursorLocation = adUseClient
    Scusa, mi chiedevo come mai non usi le transazioni...

    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.