Quantcast
Channel: Visual Basic Tips and Tricks
Viewing all articles
Browse latest Browse all 2212

Connessione già aperta da usare per due query differenti

$
0
0

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...


Viewing all articles
Browse latest Browse all 2212