3 messaggi dal 15 febbraio 2005
Buon giorno ho un grandissimo problema, ve lo descrivo brevemente.
Devo eseguire un Update tramite un DataAdapter "MioDataAdapters.Update(MioDataSet,"Tabella_1")", e fino a qui tutto OK, purtroppo devo eseguire questa procedura all'interno di una transazione, perche devo fare altri Update con altri DataAdapters su altre tabelle.
Dunque ricapitolando, la procedura di Update funziona su tutte le tabelle, ma non riesco ad inserirle in una unica transazione.
AIUTO.........
creati un oggetto transaction e passalo a tutti i select, update e delete command del dataadapter

eccoti un esempio:


SqlTransaction tx = sqlConn.BeginTransaction();
try
{
da1.UpdateCommand.Transaction = tx;
da1.InsertCommand.Transaction = tx;
da1.DeleteCommand.Transaction = tx;

da1.Update(ds.Product);

da2.UpdateCommand.Transaction = tx;
da2.InsertCommand.Transaction = tx;
da2.DeleteCommand.Transaction = tx;

da2.Update(ds.Product);

da3.UpdateCommand.Transaction = tx;
da3.InsertCommand.Transaction = tx;
da3.DeleteCommand.Transaction = tx;

da3.Update(ds.Product);

txt.Commit();
}
catch(Exception ex)
{
tx.Rollback();
throw ex;
}

Modificato da s.belia il 14 febbraio 2006 11.54 -
32 messaggi dal 26 ottobre 2005
Ciao,

Forse ti converrebbe spostare la tecnologia di accesso ai Dati in un Service Component .net, e lasciar gestire la transazionalità al COM+.

Mi sembra più sicura come tecnica.

A presto..

Stefano

Se vuoi il massimo... devi essere pronto a pagare il massimo!
3 messaggi dal 15 febbraio 2005
Denton81 ha scritto:
Ciao,

Forse ti converrebbe spostare la tecnologia di accesso ai Dati in un Service Component .net, e lasciar gestire la transazionalità al COM+.

Mi sembra più sicura come tecnica.

A presto..

Stefano


Scusate, vi riporto ciò che ho scritto, ma non funziona.

Public Sub UpdateNCbyID_2(ByVal clsNC As NC_cls, ByVal con As String, ByVal ds As DataSet, ByVal da As DataAdaptersCorrectivePreventive)

Dim myTrans As System.Data.OleDb.OleDbTransaction

OleDbDARegistroNC.UpdateCommand.Parameters("ID").Value =23 OleDbDARegistroNC.UpdateCommand.Parameters("Name").Value ="PIPPO"

Try
OleDbConnNC.ConnectionString = con
OleDbDARegistroNC.UpdateCommand.Connection.Open()

'Assengo al nuovo gestore transazioni la transazione della connessione corrente
myTrans = OleDbConnNC.BeginTransaction
OleDbDARegistroNC.UpdateCommand.Transaction = myTrans
OleDbDARegistroNC.UpdateCommand.ExecuteNonQuery()

da.UpdateCorrectionPrev_1(ds, myTrans)
da.UpdateCorrectionPrev_2(ds, myTrans)

myTrans.Commit()

Catch ex As Exception
myTrans.Rollback()
Err.Raise(vbObjectError + 1, , "UpdateNCbyID - " & ex.Message.ToString)
Finally
OleDbDARegistroNC.UpdateCommand.Connection.Close()
End Try
End Sub

Public Sub UpdateCorrectionPrev_1(ByVal ds As DataSet, ByVal Trans As System.Data.OleDb.OleDbTransaction)
'aggiorno il database con il corrente dataset
OleDbDACorrPrev_1.UpdateCommand.Transaction = Trans
OleDbDACorrPrev_1.InsertCommand.Transaction = Trans
OleDbDACorrPrev_1.DeleteCommand.Transaction = Trans
OleDbDACorrPrev_1.Update(ds, "Tabella_1")
End Sub

Public Sub UpdateCorrectionPrev_2(ByVal ds As DataSet, ByVal Trans As System.Data.OleDb.OleDbTransaction)
'aggiorno il database con il corrente dataset
OleDbDACorrPrev_2.UpdateCommand.Transaction = Trans
OleDbDACorrPrev_2.InsertCommand.Transaction = Trans
OleDbDACorrPrev_2.DeleteCommand.Transaction = Trans
OleDbDACorrPrev_2.Update(ds, "Tabella_2")
End Sub


L'errore è il seguente:
"Riferimento a un oggetto non impostato su un'istanza di oggetto."

Non so più cosa fare.
3 messaggi dal 15 febbraio 2005
C'è qualcuno che mi può aiutare??
32 messaggi dal 26 ottobre 2005
Hai provato a fare un Debug e vedere a quale riga becchi l'errore?

Questo genere di errore di solito si verifica se fai riferimento ad un oggetto che non è stato istanziato( ovvero non hai fatto la new )

Se vuoi il massimo... devi essere pronto a pagare il massimo!
su quale riga di codice ti da quell'errore?

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.