Buongiorno ragazzi, ho 2 dubbi da togliere, uno riguarda la connessione e l'altro la query di Update...Set
1) volevo utilizzare la medesima connessione per salvare in un unica procedura un offerta d'ordine e il suo dettaglio offerta...
La prima parte me la conclude correttamente, mentre per il dettaglio mi dice che la connessione deve essere valida e aperta... myconn è dichiarata a livello di modulo
Ma la connessione nel costrutto USING non dovrebbe chiudere la connessione quando incontra end using? oppure ho preso un abbaglio io?
2) Se un utente, aggiunge una riga nel dettaglio offerta, vuoi perché l'offerta è cambiata o perchè serve un ulteriore articolo, quando io faccio la seconda query di aggiornamento, mi crea la riga in più che ho messo nella dgdettaglio...o la ignora per via della clausola where che non incontra il codiceOfferta ?
Private Sub updateOfferta()
Dim cmdUpdate As New MySqlCommand
Dim myquery As String
Using myconn As New MySqlConnection(stringaConn)
myconn.Open()
myquery = "update gesthitsrl.ricoffcliente set Datains = @datains, DataScadenza=@DataScadenza, Status_Offerta=@Status_Offerta, ragsoc=@ragsoc, NumRicCliente=@NumRicCliente, Note=@Note WHERE codoffertacli = '" & txtCodOffCli.Text & "' "
cmdUpdate = New MySqlCommand(myquery, myconn)
cmdUpdate.Parameters.Add("@datains", MySqlDbType.Date)
cmdUpdate.Parameters.Add("@DataScadenza", MySqlDbType.Date)
cmdUpdate.Parameters.Add("@Status_Offerta", MySqlDbType.VarChar)
cmdUpdate.Parameters.Add("@ragsoc", MySqlDbType.VarChar)
cmdUpdate.Parameters.Add("@NumRicCliente", MySqlDbType.VarChar)
cmdUpdate.Parameters.Add("@Note", MySqlDbType.VarChar)
Try
cmdUpdate.Parameters("@datains").Value = Datains.Text
cmdUpdate.Parameters("@DataScadenza").Value = datascadenza.Text
cmdUpdate.Parameters("@Status_Offerta").Value = cbstatusOfferta.Text
cmdUpdate.Parameters("@ragsoc").Value = cboCliente.Text
cmdUpdate.Parameters("@NumRicCliente").Value = txtNumRicCliente.Text
cmdUpdate.Parameters("@Note").Value = txtnote.Text
cmdUpdate.ExecuteNonQuery()
MessageBox.Show("Modifica Tabella RDO da Clienti avvenuta con successo")
'********blocco aggiornamento dettaglio ***********
If dgdettaglio.Rows.Count > 0 Then
Dim myquerydetails As String
Dim cmdupdetails As New MySqlCommand
myquerydetails = "update gesthitsrl.ricoffcliente set brand_grezzo=@brand_grezzo, brand_pulito=@brand_pulito, pnCliente=@pnCliente, qta=@qta, Descrizione=@Descrizione, pnhit=@pnhit, status=@status WHERE codoffertacli = '" & txtCodOffCli.Text & "'; "
With cmdupdetails
.Parameters.Add("@brand_grezzo", MySqlDbType.VarChar)
.Parameters.Add("@brand_pulito", MySqlDbType.VarChar)
.Parameters.Add("@pnCliente", MySqlDbType.VarChar)
.Parameters.Add("@qta", MySqlDbType.Int16)
.Parameters.Add("@Descrizione", MySqlDbType.VarChar)
.Parameters.Add("@pnhit", MySqlDbType.VarChar)
.Parameters.Add("@status", MySqlDbType.VarChar)
End With
Try
For Each row As DataGridViewRow In dgdettaglio.Rows
With cmdupdetails
.Parameters("@brand_grezzo").Value = row.Cells(1).Value
.Parameters("@brand_pulito").Value = row.Cells(2).Value
.Parameters("@pnCliente").Value = row.Cells(3).Value
.Parameters("@qta").Value = row.Cells(4).Value
.Parameters("@Descrizione").Value = row.Cells(5).Value
.Parameters("@pnhit").Value = row.Cells(6).Value
.Parameters("@status").Value = row.Cells(7).Value
.ExecuteNonQuery()
End With
Next
cmdupdetails = Nothing
MessageBox.Show("Dettaglio offerta Aggiornato correttamente!", "Offerta Clienti")
Catch ex As Exception
MessageBox.Show(ex.Message, "ERRORE TABELLA DETTAGLIO OFFERTA")
End Try
modificato = False
End If
'********Fine blocco aggiornamento dettaglio ***********
cmdUpdate = Nothing
Catch MySQLex As Exception
MessageBox.Show(MySQLex.Message)
MessageBox.Show("Errore tabella RDO Da Clienti")
End Try
End Using
modificato = False
End Sub
vi ringrazio per le vostre dritte...