webForumDet fria alternativet

Transactions

4 svar · 299 visningar · startad av me01avd

me01avdMedlem sedan apr. 200418 inlägg
#1

Hej,

har problem med Transactions. Vill inte funka. nån som orkar ta en titt på min kod å försöka hitta vad som kan vara fel?

ger detta som fel:
Object reference not set to an instance of an object.

mvh
Zeno

Dim myConnection As SqlConnection
Dim myCommand As SqlCommand
Dim myParam As SqlParameter
Dim myTrans As SqlTransaction

myConnection = New SqlConnection("server=server1; uid=sa; pwd=secret; database=myDB")

myConnection.Open()
myTrans = myConnection.BeginTransaction()
myCommand.Transaction = myTrans

Try
myCommand = New SqlCommand("raderaSal", myConnection)
myCommand.CommandType = CommandType.StoredProcedure
myParam = myCommand.Parameters.Add(New SqlParameter("@SalID", SqlDbType.Int))
myParam.Direction = ParameterDirection.Input
myParam.Value = ddl_sal.SelectedItem.Value

myCommand.ExecuteNonQuery()

myCommand = New SqlCommand("raderaProj", myConnection)
myCommand.CommandType = CommandType.StoredProcedure
myParam = myCommand.Parameters.Add(New SqlParameter("@ProjID", SqlDbType.Int))
myParam.Direction = ParameterDirection.Input
myParam.Value = ddl_proj.SelectedItem.Value
myCommand.ExecuteNonQuery()

myTrans.Commit()
Catch ex As SqlException
myTrans.Rollback()
Finally
myConnection.Close()
End Try

JosefMedlem sedan mars 20023 561 inlägg
#2

På vilken rad får du felet?

PS! Använd gärna [kod]-taggarna när du postar kod.

me01avdMedlem sedan apr. 200418 inlägg
#3

Hej,

vet inte riktigt var felet ligger. Men det fungerar utan problem när man tar bort allt som har med transaction att göra. Dvs de 2 tabellerna uppdateras.

men det är när jag lägger till:

myTrans = myConnection.BeginTransaction()
myCommand.Transaction = myTrans

och de övriga raderna som har med transaktioner å göra som felmeddelandet kommer. vad kan det vara tror du?

ps. misstag att koden blev som den blev. sorry.

mvh
Zeno

renholmMedlem sedan apr. 20012 266 inlägg
#4

Du försöker sätta myCommand.Transaction när du inte instansierat myCommand. Det löser du på följande sätt:

Skapa en instans av myCommand

myCommand = New SqlCommand("raderaSal", myConnection)

sedan sätter du myCommand.Transaction = myTrans

myCommand.Transaction = myTrans

PS! Använd redigera funktionen för att lägga in [kod]-taggarna :)

me01avdMedlem sedan apr. 200418 inlägg
#5

tack

ja, självklart.. har inte hunnit testa ännu, men verkar ju rätt logiskt.

tack för hjälpen.

131 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)