Transazioni

venerdì 23 agosto 2013 - 10.32
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Visual Studio 2010  |  MySQL 5.5

Mau67 Profilo | Expert

Buongiorno al forum,
oggi parliamo di transazioni praticament non riesco a fare delle trasazioni con inserimento di dati su 2 tabelle, praticamente la tabella 1 è composta da una transazione di una riga sola di record, la tabella 2 invece devo inserire piu record presi da una listview o da un dataset e fare la insert into nella tabella ma non riesco
Vi inserisco un codice con un condizione normale di 2 transazioni
Private Sub UpdateWithTransactions()
Dim conn As SqlConnection = New SqlConnection
conn.ConnectionString = "server=NOMEDBSERVER;database=NOMEDB;uid=USERID;pwd=PASSWORD;"
conn.Open()
Dim trans As SqlTransaction
trans = conn.BeginTransaction()

Try
Dim sql1 As String = "Insert INTO Tabella1 (campo) VALUES ('valore')"
Dim sql2 As String = "Insert INTO Tabella2 (campo1,campo2) VALUES ('valore1','valore2')"
Dim comm As SqlCommand = New SqlCommand
comm.Connection = conn

'Inizia la transazione
comm.Transaction = trans
'prima query
comm.CommandText = sql1
comm.ExecuteNonQuery()
'seconda query
comm.CommandText = sql2
comm.ExecuteNonQuery()

'eseguo la transazione
trans.Commit()
Response.Write("Fine elaborazione")
Catch ex As SqlException
'se si sono verificati errori faccio il rollback
trans.Rollback()
Response.Write(ex.ToString())
Finally
'chiudiamo sempre le connessioni!
conn.Close()
End Try
End Sub

mi aiutate a implementare la "sql2" tenendo conto cher i dati da inserire devono essere presi da una listview o da un dataset.

Grazie in anticipo
Mau67

ridaria Profilo | Expert

E che cosa accade?

VA IN ERRORE, NON SCRIVE NULLA?

Quale è il risultato?


Ciao
Riccardo D'Aria

Mau67 Profilo | Expert

Adesso ho riscritto la transazione è questa:

Private Sub UpdateWithTransactions()
ConnMySQL.Open()
Dim trans As MySqlTransaction
trans = ConnMySQL.BeginTransaction()

Try
Dim sql1 As String = "INSERT INTO flussi (Dislocazione, Dislocazione1, Sezione, NrFlusso," & _
"DataFlusso, NrCM10, DataCM10, DislocazioneEnte, DislocazioneEnte1," & _
"SismeEnte, Reparto, Valore, Utente, Data)" & _
"VALUES (@Dislocazione, @Dislocazione1, @Sezione, @NrFlusso,@DataFlusso, @NrCM10, @DataCM10," & _
"@DislocazioneEnte, @DislocazioneEnte1, @SismeEnte, @Reparto, @Valore, @Utente, @Data)"

Dim sql2 As String = "INSERT INTO dettaglio_flussi (IDFlusso, Nuc, Quantita, Denominazione, Prezzo, Utente, Data)" & _
"VALUES (@IDFlusso, @Nuc, @Quantita, @Denominazione, @Prezzo, @Utente, @Data)"
Dim comm As MySqlCommand = New MySqlCommand
comm.Connection = ConnMySQL

'Inizia la transazione
comm.Transaction = trans
'prima query
comm.CommandText = sql1
comm.CommandType = CommandType.Text
comm.Parameters.AddWithValue("@Dislocazione", txtDislAmm.Text)
comm.Parameters.AddWithValue("@Dislocazione1", txtDislAmm1.Text)
comm.Parameters.AddWithValue("@Sezione", txtSezione.Text)
comm.Parameters.AddWithValue("@NrFlusso", txtNrFlusso.Text)
comm.Parameters.AddWithValue("@DataFlusso", ConvertData.GetDataForMySql(txtDataFlusso.Text))
comm.Parameters.AddWithValue("@NrCM10", txtNrCM10.Text)
comm.Parameters.AddWithValue("@DataCM10", ConvertData.GetDataForMySql(txtDataCM10.Text))
comm.Parameters.AddWithValue("@DislocazioneEnte", txtDislEnte.Text)
comm.Parameters.AddWithValue("@DislocazioneEnte1", txtDislEnte1.Text)
comm.Parameters.AddWithValue("@SismeEnte", txtSisme.Text)
comm.Parameters.AddWithValue("@Reparto", txtRep.Text)
comm.Parameters.AddWithValue("@Valore", CDec(TextBox2.Text))
comm.Parameters.AddWithValue("@Utente", My.Settings.usernameUt)
comm.Parameters.AddWithValue("@Data", Now)
comm.ExecuteNonQuery()


Dim cmd As New MySql.Data.MySqlClient.MySqlCommand("SELECT LAST_INSERT_ID()", ConnMySQL)
'aggiornamento della tabella locale
Dim lastId As Integer = CType(cmd.ExecuteScalar, Integer)
IDFLUSSO = (lastId)
TextBox3.Text = IDFLUSSO

FillDataSetAndViewFlussi()

'seconda query
comm.CommandText = sql2
Dim id As ListViewItem
Dim idCollection As ListView.CheckedListViewItemCollection = Me.ListView1.CheckedItems

For Each id In idCollection
If id.Checked = True Then
comm.CommandType = CommandType.Text
comm.Parameters.AddWithValue("@IDFlusso", lastId)
comm.Parameters.AddWithValue("@Nuc", id.Text)
comm.Parameters.AddWithValue("@Quantita", id.SubItems(1).Text)
comm.Parameters.AddWithValue("@Denominazione", id.SubItems(2).Text)
comm.Parameters.AddWithValue("@Prezzo", CDec(id.SubItems(3).Text))
comm.Parameters.AddWithValue("@Utente", My.Settings.usernameUt)
comm.Parameters.AddWithValue("@Data", Now)

FillDataSetAndViewDettaglioFlussi()
End If
Next

comm.ExecuteNonQuery()
'eseguo la transazione
trans.Commit()
MsgBox("Fine elaborazione")
Catch ex As MySqlException
'se si sono verificati errori faccio il rollback
trans.Rollback()
MsgBox(ex.ToString)
Finally
'chiudiamo sempre le connessioni!
ConnMySQL.Close()
End Try
End Sub

mi dà errori qui:
comm.Parameters.AddWithValue("@Utente", My.Settings.usernameUt)
comm.Parameters.AddWithValue("@Data", Now)
comm.Parameters.AddWithValue("@IDFlusso", lastId)
has already been definied

non capisco perchè
grazie
Mau67

ridaria Profilo | Expert

>Adesso ho riscritto la transazione è questa:
>
> Private Sub UpdateWithTransactions()
> ConnMySQL.Open()
> Dim trans As MySqlTransaction
> trans = ConnMySQL.BeginTransaction()
>
> Try
>Dim sql1 As String = "INSERT INTO flussi (Dislocazione, Dislocazione1,
>Sezione, NrFlusso," & _
>"DataFlusso, NrCM10, DataCM10, DislocazioneEnte, DislocazioneEnte1,"
>& _
>"SismeEnte, Reparto, Valore, Utente, Data)" & _
>"VALUES (@Dislocazione, @Dislocazione1, @Sezione, @NrFlusso,@DataFlusso,
>@NrCM10, @DataCM10," & _
>"@DislocazioneEnte, @DislocazioneEnte1, @SismeEnte, @Reparto,
>@Valore, @Utente, @Data)"
>
>Dim sql2 As String = "INSERT INTO dettaglio_flussi (IDFlusso,
>Nuc, Quantita, Denominazione, Prezzo, Utente, Data)" & _
>"VALUES (@IDFlusso, @Nuc, @Quantita, @Denominazione, @Prezzo,
>@Utente, @Data)"
> Dim comm As MySqlCommand = New MySqlCommand
> comm.Connection = ConnMySQL
>
> 'Inizia la transazione
> comm.Transaction = trans
> 'prima query
> comm.CommandText = sql1
> comm.CommandType = CommandType.Text
>comm.Parameters.AddWithValue("@Dislocazione", txtDislAmm.Text)
>comm.Parameters.AddWithValue("@Dislocazione1", txtDislAmm1.Text)
>comm.Parameters.AddWithValue("@Sezione", txtSezione.Text)
>comm.Parameters.AddWithValue("@NrFlusso", txtNrFlusso.Text)
>comm.Parameters.AddWithValue("@DataFlusso", ConvertData.GetDataForMySql(txtDataFlusso.Text))
>comm.Parameters.AddWithValue("@NrCM10", txtNrCM10.Text)
>comm.Parameters.AddWithValue("@DataCM10", ConvertData.GetDataForMySql(txtDataCM10.Text))
>comm.Parameters.AddWithValue("@DislocazioneEnte", txtDislEnte.Text)
>comm.Parameters.AddWithValue("@DislocazioneEnte1", txtDislEnte1.Text)
>comm.Parameters.AddWithValue("@SismeEnte", txtSisme.Text)
>comm.Parameters.AddWithValue("@Reparto", txtRep.Text)
>comm.Parameters.AddWithValue("@Valore", CDec(TextBox2.Text))
>comm.Parameters.AddWithValue("@Utente", My.Settings.usernameUt)
> comm.Parameters.AddWithValue("@Data", Now)
> comm.ExecuteNonQuery()
>
>
>Dim cmd As New MySql.Data.MySqlClient.MySqlCommand("SELECT LAST_INSERT_ID()",
>ConnMySQL)
> 'aggiornamento della tabella locale
>Dim lastId As Integer = CType(cmd.ExecuteScalar, Integer)
> IDFLUSSO = (lastId)
> TextBox3.Text = IDFLUSSO
>
> FillDataSetAndViewFlussi()
>
> 'seconda query
> comm.CommandText = sql2
> Dim id As ListViewItem
>Dim idCollection As ListView.CheckedListViewItemCollection =
>Me.ListView1.CheckedItems
>
> For Each id In idCollection
> If id.Checked = True Then
> comm.CommandType = CommandType.Text
>comm.Parameters.AddWithValue("@IDFlusso", lastId)
>comm.Parameters.AddWithValue("@Nuc", id.Text)
>comm.Parameters.AddWithValue("@Quantita", id.SubItems(1).Text)
>comm.Parameters.AddWithValue("@Denominazione", id.SubItems(2).Text)
>comm.Parameters.AddWithValue("@Prezzo", CDec(id.SubItems(3).Text))
>comm.Parameters.AddWithValue("@Utente", My.Settings.usernameUt)
>comm.Parameters.AddWithValue("@Data", Now)
>
> FillDataSetAndViewDettaglioFlussi()
> End If
> Next
>
> comm.ExecuteNonQuery()
> 'eseguo la transazione
> trans.Commit()
> MsgBox("Fine elaborazione")
> Catch ex As MySqlException
> 'se si sono verificati errori faccio il rollback
> trans.Rollback()
> MsgBox(ex.ToString)
> Finally
> 'chiudiamo sempre le connessioni!
> ConnMySQL.Close()
> End Try
> End Sub
>
>mi dà errori qui:
>comm.Parameters.AddWithValue("@Utente", My.Settings.usernameUt)
> comm.Parameters.AddWithValue("@Data", Now)
> comm.Parameters.AddWithValue("@IDFlusso", lastId)
>has already been definied
>
>non capisco perchè
>grazie
>Mau67

ok

semplice

i tre parametri che ti mostra nell'errore sono già stati specificati ed in uso nella transazione.

infatti li utilizzi nella prima query.

In questo caso, prima della seconda query devi rimuovere i parametri con un removeAt:

comm.RemoveAt (nomeparametroInUso)
e lo fai per tutti i parametri già usati e che devi riutilizzare, mi sembra sian solo i tre chge ti da nell'errore ;-)

Fammi sapere. Se ok chiudi il post cliccando su Accetta.


Ciao!



Riccardo D'Aria

Mau67 Profilo | Expert

Ciao grazie per la risposta, volevo chiederti se rimuovo i tre parametri facendo il ciclo con gli altri parametri i tre quei tre me li memorizza in tabella.?
Adesso non ho la possibilità di controllare fino a lunedì
Ciao grazie
Mau67

ridaria Profilo | Expert

>Ciao grazie per la risposta, volevo chiederti se rimuovo i tre
>parametri facendo il ciclo con gli altri parametri i tre quei
>tre me li memorizza in tabella.?

che intendi facendo il ciclo con gli altri parametri?

devi rimuovere i tre parametri con removeAt, dopo aver eseguito la prima query e prima di eseguire la seconda query, che se non erro viene eseguita nella routine: FillDataSetAndViewFlussi

Se li rimuovi nel momento giusto nn subisci alcuna perdita di dati ;-)

>Adesso non ho la possibilità di controllare fino a lunedì
>Ciao grazie
>Mau67

Prego

Riccardo D'Aria

Mau67 Profilo | Expert

Ok lunedì provo poi ti faccio sapere grazie
Mau67

Mau67 Profilo | Expert

Buongiorno allora ho inserito i RemoveAt spero di aver fatto giusto ma da problemi con le date ti posto tutto il codice
Private Sub UpdateWithTransactions()
ConnMySQL.Open()
Dim trans As MySqlTransaction
trans = ConnMySQL.BeginTransaction()

Try
Dim sql1 As String = "INSERT INTO flussi (Dislocazione, Dislocazione1, Sezione, NrFlusso," & _
"DataFlusso, NrCM10, DataCM10, DislocazioneEnte, DislocazioneEnte1," & _
"SismeEnte, Reparto, Valore, Utente, Data)" & _
"VALUES (@Dislocazione, @Dislocazione1, @Sezione, @NrFlusso,@DataFlusso, @NrCM10, @DataCM10," & _
"@DislocazioneEnte, @DislocazioneEnte1, @SismeEnte, @Reparto, @Valore, @Utente, @Data)"

Dim sql2 As String = "INSERT INTO dettaglio_flussi (NrCM10, Nuc, Quantita, Denominazione, Prezzo, Utente, Data, DataCM10, Dislocazione, Dislocazione1, SismeEnte)" & _
"VALUES (@NrCM10, @Nuc, @Quantita, @Denominazione, @Prezzo, @Utente, @Data, @DataCM10, @Dislocazione,@Dislocazione1,@SismeEnte)"
Dim comm As MySqlCommand = New MySqlCommand
comm.Connection = ConnMySQL

'Inizia la transazione
comm.Transaction = trans
'prima query
comm.CommandText = sql1
comm.CommandType = CommandType.Text
comm.Parameters.AddWithValue("@Dislocazione", txtDislAmm.Text)
comm.Parameters.AddWithValue("@Dislocazione1", txtDislAmm1.Text)
comm.Parameters.AddWithValue("@Sezione", txtSezione.Text)
comm.Parameters.AddWithValue("@NrFlusso", txtNrFlusso.Text)
comm.Parameters.AddWithValue("@DataFlusso", ConvertData.GetDataForMySql(txtDataFlusso.Text))
comm.Parameters.AddWithValue("@NrCM10", txtNrCM10.Text)
comm.Parameters.AddWithValue("@DataCM10", ConvertData.GetDataForMySql(txtDataCM10.Text))
comm.Parameters.AddWithValue("@DislocazioneEnte", txtDislEnte.Text)
comm.Parameters.AddWithValue("@DislocazioneEnte1", txtDislEnte1.Text)
comm.Parameters.AddWithValue("@SismeEnte", txtSisme.Text)
comm.Parameters.AddWithValue("@Reparto", txtRep.Text)
comm.Parameters.AddWithValue("@Valore", CDec(TextBox2.Text))
comm.Parameters.AddWithValue("@Utente", My.Settings.usernameUt)
comm.Parameters.AddWithValue("@Data", Now)
comm.ExecuteNonQuery()


Dim cmd As New MySql.Data.MySqlClient.MySqlCommand("SELECT LAST_INSERT_ID()", ConnMySQL)
'aggiornamento della tabella locale
Dim lastId As Integer = CType(cmd.ExecuteScalar, Integer)
IDFLUSSO = (lastId)
TextBox3.Text = IDFLUSSO

FillDataSetAndViewFlussi()
Try


comm.Parameters.RemoveAt("@NrCM10")
comm.Parameters.RemoveAt("@Utente")
comm.Parameters.RemoveAt("@Data")
comm.Parameters.RemoveAt(ConvertData.GetDataForMySql("@DataCM10"))
comm.Parameters.RemoveAt("@Dislocazione")
comm.Parameters.RemoveAt("@Dislocazione1")
comm.Parameters.RemoveAt("@SismeEnte")

'seconda query
comm.CommandText = sql2
Dim id As ListViewItem
Dim idCollection As ListView.CheckedListViewItemCollection = Me.ListView1.CheckedItems

For Each id In idCollection
If id.Checked = True Then
comm.CommandType = CommandType.Text
comm.Parameters.AddWithValue("@NrCM10", txtNrCM10.Text)
comm.Parameters.AddWithValue("@Nuc", id.Text)
comm.Parameters.AddWithValue("@Quantita", id.SubItems(1).Text)
comm.Parameters.AddWithValue("@Denominazione", id.SubItems(2).Text)
comm.Parameters.AddWithValue("@Prezzo", CDec(id.SubItems(3).Text))
comm.Parameters.AddWithValue("@Utente", My.Settings.usernameUt)
comm.Parameters.AddWithValue("@Data", Now)
comm.Parameters.AddWithValue("@DataCM10", ConvertData.GetDataForMySql(txtDataCM10.Text))
comm.Parameters.AddWithValue("@Dislocazione", txtDislAmm.Text)
comm.Parameters.AddWithValue("@Dislocazione1", txtDislAmm1.Text)
comm.Parameters.AddWithValue("@SismeEnte", txtSisme.Text)
FillDataSetAndViewDettaglioFlussi()
End If
Next

comm.ExecuteNonQuery()
'eseguo la transazione
trans.Commit()
MsgBox("Fine elaborazione")
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try


Catch ex As MySqlException
'se si sono verificati errori faccio il rollback
trans.Rollback()
MsgBox(ex.ToString)
Finally
'chiudiamo sempre le connessioni!
ConnMySQL.Close()
End Try
End Sub

Se puoi dargli un occhiata e verificare se ci sono errori a me dà l'errore (cast non valido della stringa "@DataCM10" al tipo 'Date')
grazie
Mau67

ridaria Profilo | Expert

DataCM10

è il formato della data che gli passi che non collima con quello predisoposto nel campo.

La tranzazione adesso ti funziona e il removeAt fa il suo lavoro.

CIAO
Riccardo D'Aria

ridaria Profilo | Expert

!!!


comm.Parameters.RemoveAt(ConvertData.GetDataForMySql("@DataCM10"))

il removeAt ti da errore perché tu lo usi in questo modo.

echiaramente lui tenta di convertire qualcosa che non ha.

il giusto comando è:

comm.Parameters.RemoveAt("@DataCM10")

ciao fammi sapere e chiudi il post cliccando su accetta se tutto è OK


CIAO
Riccardo D'Aria

ridaria Profilo | Expert

Hai risolto?


Se sì, gentilmente chiuderesti il post, cliccndo su accetta!


CIAO
Riccardo D'Aria

Mau67 Profilo | Expert

Il problema non è ancora risolto mi da problemi su tutti i parametri non so come risolvere il removeat non va bene
Mau67

ridaria Profilo | Expert

hai corretto come ti ho appena detto?


mi posti l'errore?

Ciao
Riccardo D'Aria

Mau67 Profilo | Expert

Te lo do lunedì che ritorno in ufficio Buon fine settimana
Mau67

Mau67 Profilo | Expert

l'errore che da è il seguente Parameter'@NrCM10' has already been defined
lo ripete per tutti i paramentri
Mau67

ridaria Profilo | Expert

>l'errore che da è il seguente Parameter'@NrCM10' has already been defined

ecco è chiarissimo:
il parametro talDeTali è stato già definito.

devi appunto rimuoverli prima di eseguire la seconda query.

Poi vedo che le due query, le esegui in due routine differenti.
ed in particolare vedo che nella seconda routine esegui:

comm.Parameters.RemoveAt("@NrCM10")
comm.Parameters.RemoveAt("@Utente")
comm.Parameters.RemoveAt("@Data")
comm.Parameters.RemoveAt(ConvertData.GetDataForMySql("@DataCM10"))
comm.Parameters.RemoveAt("@Dislocazione")
comm.Parameters.RemoveAt("@Dislocazione1")
comm.Parameters.RemoveAt("@SismeEnte")

ma come è possibile se l' sqlCommand "comm" lo hai dichiarato nella prima routine e non nella seconda??

Vedo anche che esgui due routine differenti, fai tutto in una unica routine, visto che l'operazione è unica; ma questo e solo un suggerimento.


CMQ l'errore è chiaro i parametri sono già definiti! devi rimuoverli.

CIAO



Riccardo D'Aria

Mau67 Profilo | Expert

Se rileggi il codice che ti ho postato vedi che prima di iniziare la seconda transazione rimuovo i parametri e proprio li mi genera l'errore!!!
Io voglio accettare il tuo consiglio ma come faccio a fare un unica routine visto che le tabelle sono 2 ? Potresti mostrarmi com il mio codice come fare grazie
Mau67

ridaria Profilo | Expert

ok , ho notato che fai un loop nella seconda routine.


ecco anche lì devi rimuovere i paramatri ,

in questo caso li devi rimuovere ad ogni passaggio nel loop.
in particolare li rimuovo con un ciclo sulla lista dei parametri come segue:



For j = 0 To command.Parameters.Count - 1
command.Parameters.RemoveAt(0)
Next

CIAO fammi sapere
Riccardo D'Aria

Mau67 Profilo | Expert

Scusa ma non ho capito in cher posizione del codice devo mettere questo ?

For j = 0 To command.Parameters.Count - 1
command.Parameters.RemoveAt(0)
Next

Mau67

ridaria Profilo | Expert

>Scusa ma non ho capito in cher posizione del codice devo mettere
>questo ?
>



For Each id In idCollection
If id.Checked = True Then
comm.CommandType = CommandType.Text
comm.Parameters.AddWithValue("@NrCM10", txtNrCM10.Text)
comm.Parameters.AddWithValue("@Nuc", id.Text)
comm.Parameters.AddWithValue("@Quantita", id.SubItems(1).Text)
comm.Parameters.AddWithValue("@Denominazione", id.SubItems(2).Text)
comm.Parameters.AddWithValue("@Prezzo", CDec(id.SubItems(3).Text))
comm.Parameters.AddWithValue("@Utente", My.Settings.usernameUt)
comm.Parameters.AddWithValue("@Data", Now)
comm.Parameters.AddWithValue("@DataCM10", ConvertData.GetDataForMySql(txtDataCM10.Text))
comm.Parameters.AddWithValue("@Dislocazione", txtDislAmm.Text)
comm.Parameters.AddWithValue("@Dislocazione1", txtDislAmm1.Text)
comm.Parameters.AddWithValue("@SismeEnte", txtSisme.Text)

>For j = 0 To command.Parameters.Count - 1
> command.Parameters.RemoveAt(0)
> Next

comm.ExecuteNonQuery() 'ed anche questo va qui ad ogni loop e poi fuori dal loop fai il comit della teransazione come già fai adesso

FillDataSetAndViewDettaglioFlussi()
End If
Next


CIAO


Riccardo D'Aria

Mau67 Profilo | Expert

Va fatto cosi?
For Each id In idCollection
If id.Checked = True Then
comm.CommandType = CommandType.Text
comm.Parameters.AddWithValue("@NrCM10", txtNrCM10.Text)
comm.Parameters.AddWithValue("@Nuc", id.Text)
comm.Parameters.AddWithValue("@Quantita", id.SubItems(1).Text)
comm.Parameters.AddWithValue("@Denominazione", id.SubItems(2).Text)
comm.Parameters.AddWithValue("@Prezzo", CDec(id.SubItems(3).Text))
comm.Parameters.AddWithValue("@Utente", My.Settings.usernameUt)
comm.Parameters.AddWithValue("@Data", Now)
comm.Parameters.AddWithValue("@DataCM10", ConvertData.GetDataForMySql(txtDataCM10.Text))
comm.Parameters.AddWithValue("@Dislocazione", txtDislAmm.Text)
comm.Parameters.AddWithValue("@Dislocazione1", txtDislAmm1.Text)
comm.Parameters.AddWithValue("@SismeEnte", txtSisme.Text)

>For j = 0 To command.Parameters.Count - 1
> command.Parameters.RemoveAt(0)
> Next

comm.ExecuteNonQuery() 'ed anche questo va qui ad ogni loop e poi fuori dal loop fai il comit della teransazione come già fai adesso

FillDataSetAndViewDettaglioFlussi()
End If
Next

il problema è che mi inserisce un record vuoto e basta
Mau67

ridaria Profilo | Expert

>Va fatto cosi?
>For Each id In idCollection
> If id.Checked = True Then
> comm.CommandType = CommandType.Text
> comm.Parameters.AddWithValue("@NrCM10", txtNrCM10.Text)
> comm.Parameters.AddWithValue("@Nuc", id.Text)
>comm.Parameters.AddWithValue("@Quantita", id.SubItems(1).Text)
>comm.Parameters.AddWithValue("@Denominazione", id.SubItems(2).Text)
>comm.Parameters.AddWithValue("@Prezzo", CDec(id.SubItems(3).Text))
>comm.Parameters.AddWithValue("@Utente", My.Settings.usernameUt)
> comm.Parameters.AddWithValue("@Data", Now)
>comm.Parameters.AddWithValue("@DataCM10", ConvertData.GetDataForMySql(txtDataCM10.Text))
>comm.Parameters.AddWithValue("@Dislocazione", txtDislAmm.Text)
>comm.Parameters.AddWithValue("@Dislocazione1", txtDislAmm1.Text)
> comm.Parameters.AddWithValue("@SismeEnte", txtSisme.Text)
>
>>For j = 0 To command.Parameters.Count - 1
>> command.Parameters.RemoveAt(0)
>> Next
>
>comm.ExecuteNonQuery() 'ed anche questo va qui ad ogni loop e
>poi fuori dal loop fai il comit della teransazione come già fai
>adesso
>
> FillDataSetAndViewDettaglioFlussi()
> End If
> Next
>
>il problema è che mi inserisce un record vuoto e basta

ma il primo punto, quello dell'errore sul parametro:
Parameter'@NrCM10' has already been defined
te lo da ancora questo errore?

se no, chiudi il post accettando, così chiudiamo questo argomento.

Per il resto crea un altro post sul forum.


Ciao




Riccardo D'Aria

Mau67 Profilo | Expert

l'errore non lo da comunque non ho risolto l'esecuzione delle transazioni
Chiudo il post grazie
Mau67
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5