Insert into multiplo da listview non funziona

lunedì 05 maggio 2014 - 21.55
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Visual Studio 2010  |  MySQL 5.5

Mau67 Profilo | Expert

Buona sera al forum,
sono diversi giorni che tento di salvare dei dati da una listview ma restituisce sempre errori potete controllarmi il codice perfavore

questa è la struttura della tabella MySQL
ID varchar(100)
ID_Fattura varchar(100)
Voce varchar(50)
Quantita int(11)
P_Unitario decimal(18,2)

e questo è il codice che uso
Private Sub nuovo_Dettaglio()
Connection.Open()
Dim trans As MySqlTransaction
trans = Connection.BeginTransaction()
Try
Dim sql As String = "INSERT INTO fattura_dettaglio (ID,Quantita,Voce,P_Unitario,ID_Fattura )" & _
"VALUES (@ID,@Quantita,@Voce,@P_Unitario,@ID_Fattura )"

Dim comm As MySqlCommand = New MySqlCommand
comm.Connection = Connection
'Inizia la transazione
comm.Transaction = trans
'prima query
comm.CommandText = sql
For a = 0 To ListView1.Items.Count - 1
comm.Parameters.AddWithValue("@ID", ListView1.Items(a).ToString)
comm.Parameters.AddWithValue("@Quantita", CInt(ListView1.Items(a).SubItems(1).ToString))
comm.Parameters.AddWithValue("@Voce", ListView1.Items(a).SubItems(2).ToString)
comm.Parameters.AddWithValue("@P_Unitario", ListView1.Items(a).SubItems(3).ToString)
comm.Parameters.AddWithValue("@ID_Fattura", m_ParametroID)
comm.ExecuteNonQuery()
Next
'eseguo la transazione
trans.Commit()
MessageBox.Show("Inserimento Eseguito Correttamente", "", MessageBoxButtons.OK, MessageBoxIcon.Information)

Catch ex As MySqlException
'se si sono verificati errori faccio il rollback
trans.Rollback()
MessageBox.Show("Inserimento fallito" + ControlChars.CrLf + ex.ToString, "", MessageBoxButtons.OK, MessageBoxIcon.Information)
Finally
'chiudiamo sempre le connessioni!
Connection.Close()
End Try
End Sub

Spero in un aiuto sono giorni che provo non funziona
Grazie
Mau67

AntCiar Profilo | Expert

IL problema potrebbe stare nel campo 'P_Unitario'. Essendo un double quando lo passi nella transaction come parametro fai il ToString() che te lo formatta con la virgola (per la Culture It-IT). Questo di solito da fastidio perchè il command si aspetta di ricevere valori decimali con il punto e non con la virgola.

Per confermare la cosa prova a fare degi insert fittizi inserendo valori senza decimali per il campo P_Unitario. Se non ti da errore il problema è questo.

se è così ti consiglio di non passare per il Tostring() in modo da evitare di incorrere in questi problemi. Se possibile conservati i valori nei tipi orignali.
Cristian Barca
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