Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 41

Hybrid View

  1. #1

    [VB.NET] UPDATE non aggiorna la tabella nel database Access

    Buongiorno a tutti voi...
    nel codice copiato di seguito, cerco di aggiornare la tabella Assegnazioni con la query1 "UPDATE etc..." ma la tabella non viene aggiornata...dove sbaglio? ho verificato che i campi siano corretti dopo l'elaborazione che consiste di spostare di una colonna tutti i dati ...


    codice:
    # Private Sub cmdMese_Click(sender As Object, e As EventArgs) Handles cmdMese.Click



    Dim MeseAttuale As Integer
    Dim MeseCorso As Integer
    Dim Indice As Double
    Dim Codice As String
    Dim DataOdierna As Date = Now




    Try
    Connessione.Open()


    Dim Query As String = "SELECT * FROM Assegnazioni ORDER BY Articolo"
    Dim Adattatore As New OleDbDataAdapter(Query, Connessione)


    Adattatore.Fill(Mese)


    Dim For01 As String
    Dim For02 As String
    Dim For03 As String
    Dim For04 As String
    Dim For05 As String
    Dim For06 As String
    Dim For07 As String
    Dim For08 As String
    Dim For09 As String
    Dim For10 As String
    Dim For11 As String
    Dim For12 As String


    Dim Articoli As Double = Mese.Rows.Count - 1


    If Articoli > 0 Then
    For Each row As DataRow In Mese.Rows


    MeseAttuale = row("MeseAttuale").ToString()
    Exit For




    Next


    MeseCorso = Month(DataOdierna)
    If MeseAttuale = MeseCorso Then
    MsgBox("Aggioramento assegnazioni già effewttuato", vbOKOnly)
    Else


    If MeseAttuale <> MeseCorso Then


    For Each row As DataRow In Mese.Rows


    Dim Query1 As String = "UPDATE Assegnazioni SET MeseAttuale=@MeseCorso, Fornitori01=@For01, Fornitori02=@For02, Fornitori03=@For03, Fornitori04=@For04, Fornitori05=@For05, Fornitori06=@For06, Fornitori07=@For07, Fornitori08=@For08, Fornitori09=@For09, Fornitori10=@For10, Fornitori11=@For11, Fornitori12=@For12 WHERE ID=@Indice"


    Dim Comando As New OleDbCommand(Query1, Connessione)


    Codice = row("Articolo")
    Indice = row("ID")


    For I = 1 To MeseCorso - MeseAttuale
    row("Fornitori" & Format(MeseCorso - MeseAttuale + 1, "00")) = row("Fornitori" & Format(MeseCorso - MeseAttuale + 1, "00")) + row("Fornitori" & Format(I, "00"))
    Next I


    For I = MeseCorso - MeseAttuale + 1 To 12
    J = I - (MeseCorso - MeseAttuale)
    row("Fornitori" & Format(J, "00")) = row("Fornitori" & Format(I, "00"))
    Next


    For I = 12 - (MeseCorso - MeseAttuale) + 1 To 12
    row("Fornitori" & Format(I, "00")) = 0
    Next I


    For01 = row("Fornitori01")
    For02 = row("Fornitori02")
    For03 = row("Fornitori03")
    For04 = row("Fornitori04")
    For05 = row("Fornitori05")
    For06 = row("Fornitori06")
    For07 = row("Fornitori07")
    For08 = row("Fornitori08")
    For09 = row("Fornitori09")
    For10 = row("Fornitori10")
    For11 = row("Fornitori11")
    For12 = row("Fornitori12")


    Comando.Parameters.AddWithValue("@ID", Indice)
    Comando.Parameters.AddWithValue("@Articolo", Codice)
    Comando.Parameters.AddWithValue("@MeseAttuale", MeseCorso)
    Comando.Parameters.AddWithValue("@Fornitori01", For01)
    Comando.Parameters.AddWithValue("@Fornitori02", For02)
    Comando.Parameters.AddWithValue("@Fornitori03", For03)
    Comando.Parameters.AddWithValue("@Fornitori04", For04)
    Comando.Parameters.AddWithValue("@Fornitori05", For05)
    Comando.Parameters.AddWithValue("@Fornitori06", For06)
    Comando.Parameters.AddWithValue("@Fornitori07", For07)
    Comando.Parameters.AddWithValue("@Fornitori08", For08)
    Comando.Parameters.AddWithValue("@Fornitori09", For09)
    Comando.Parameters.AddWithValue("@Fornitori10", For10)
    Comando.Parameters.AddWithValue("@Fornitori11", For11)
    Comando.Parameters.AddWithValue("@Fornitori12", For12)


    Comando.ExecuteNonQuery()


    Next


    End If
    End If






    End If




    Catch ex As Exception


    MsgBox("Errore di connessione" & vbCrLf & ex.Message)


    Connessione.Close()


    End Try


    Connessione.Close()


    cmdMese.Visible = False


    CaricaDati()


    ImpostadgwAssegnazioni()


    End Sub#

    Francesco

  2. #2
    please, usa i tag code per racchiudere il codice e formattalo/indentalo correttamente, che così è illeggibile. Se poi riesci a circoscrivere la parte che non funziona è ancora meglio

  3. #3
    Grazie optime,
    codice:
    Private Sub cmdMese_Click(sender As Object, e As EventArgs) Handles cmdMese.Click
    
    
    
    Dim MeseAttuale As Integer
    Dim MeseCorso As Integer
    Dim Indice As Double
    Dim Codice As String
    Dim DataOdierna As Date = Now
    
    
    
    
    Try
    Connessione.Open()
    
    
    Dim Query As String = "SELECT * FROM Assegnazioni ORDER BY Articolo"
    Dim Adattatore As New OleDbDataAdapter(Query, Connessione)
    
    
    Adattatore.Fill(Mese)
    
    
    Dim For01 As String
    Dim For02 As String
    Dim For03 As String
    Dim For04 As String
    Dim For05 As String
    Dim For06 As String
    Dim For07 As String
    Dim For08 As String
    Dim For09 As String
    Dim For10 As String
    Dim For11 As String
    Dim For12 As String
    
    
    Dim Articoli As Double = Mese.Rows.Count - 1
    
    
    If Articoli > 0 Then
    For Each row As DataRow In Mese.Rows
    
    
    MeseAttuale = row("MeseAttuale").ToString()
    Exit For
    
    
    
    
    Next
    
    
    MeseCorso = Month(DataOdierna)
    If MeseAttuale = MeseCorso Then
    MsgBox("Aggioramento assegnazioni già effewttuato", vbOKOnly)
    Else
    
    
    If MeseAttuale <> MeseCorso Then
    
    
    For Each row As DataRow In Mese.Rows
    
    
    Dim Query1 As String = "UPDATE Assegnazioni SET MeseAttuale=@MeseCorso, Fornitori01=@For01, Fornitori02=@For02, Fornitori03=@For03, Fornitori04=@For04, Fornitori05=@For05, Fornitori06=@For06, Fornitori07=@For07, Fornitori08=@For08, Fornitori09=@For09, Fornitori10=@For10, Fornitori11=@For11, Fornitori12=@For12 WHERE ID=@Indice"
    
    
    Dim Comando As New OleDbCommand(Query1, Connessione)
    
    
    Codice = row("Articolo")
    Indice = row("ID")
    
    
    For I = 1 To MeseCorso - MeseAttuale
    row("Fornitori" & Format(MeseCorso - MeseAttuale + 1, "00")) = row("Fornitori" & Format(MeseCorso - MeseAttuale + 1, "00")) + row("Fornitori" & Format(I, "00"))
    Next I
    
    
    For I = MeseCorso - MeseAttuale + 1 To 12
    J = I - (MeseCorso - MeseAttuale)
    row("Fornitori" & Format(J, "00")) = row("Fornitori" & Format(I, "00"))
    Next
    
    
    For I = 12 - (MeseCorso - MeseAttuale) + 1 To 12
    row("Fornitori" & Format(I, "00")) = 0
    Next I
    
    
    For01 = row("Fornitori01")
    For02 = row("Fornitori02")
    For03 = row("Fornitori03")
    For04 = row("Fornitori04")
    For05 = row("Fornitori05")
    For06 = row("Fornitori06")
    For07 = row("Fornitori07")
    For08 = row("Fornitori08")
    For09 = row("Fornitori09")
    For10 = row("Fornitori10")
    For11 = row("Fornitori11")
    For12 = row("Fornitori12")
    
    
    Comando.Parameters.AddWithValue("@ID", Indice)
    Comando.Parameters.AddWithValue("@Articolo", Codice)
    Comando.Parameters.AddWithValue("@MeseAttuale", MeseCorso)
    Comando.Parameters.AddWithValue("@Fornitori01", For01)
    Comando.Parameters.AddWithValue("@Fornitori02", For02)
    Comando.Parameters.AddWithValue("@Fornitori03", For03)
    Comando.Parameters.AddWithValue("@Fornitori04", For04)
    Comando.Parameters.AddWithValue("@Fornitori05", For05)
    Comando.Parameters.AddWithValue("@Fornitori06", For06)
    Comando.Parameters.AddWithValue("@Fornitori07", For07)
    Comando.Parameters.AddWithValue("@Fornitori08", For08)
    Comando.Parameters.AddWithValue("@Fornitori09", For09)
    Comando.Parameters.AddWithValue("@Fornitori10", For10)
    Comando.Parameters.AddWithValue("@Fornitori11", For11)
    Comando.Parameters.AddWithValue("@Fornitori12", For12)
    
    
    Comando.ExecuteNonQuery()
    
    
    Next
    
    
    End If
    End If
    
    
    
    
    
    
    End If
    
    
    
    
    Catch ex As Exception
    
    
    MsgBox("Errore di connessione" & vbCrLf & ex.Message)
    
    
    Connessione.Close()
    
    
    End Try
    
    
    Connessione.Close()
    
    
    cmdMese.Visible = False
    
    
    CaricaDati()
    
    
    ImpostadgwAssegnazioni()
    
    
    End Sub
    UPDATE non mi aggiorna la tabella...
    Perche, cosa sbaglio?
    Grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2014
    residenza
    Vicenza
    Messaggi
    309
    Il codice non è identato correttamente e quindi risulta illeggibile.

    Comunque per vedere innanzitutto che cosa succede, togli la riga TRY e rimandalo in esecuzione, perchè tu hai messo "Errore di connessione" ma in realtà non è così.
    Se usi i TRY devi sapere cosa stai facendo e dove aprirli e chiuderli

    Comunque un errore può essere che i parametri devi crearli nello stesso ordine che sono presenti nella query, mentre tu li hai creato in ordine diverso, e inoltre hai creato un parametro @Articolo che nella query non vedo
    Ultima modifica di SirJo; 07-05-2024 a 12:18

  5. #5
    talmente illeggibile che la try...catch manco l'avevo vista, grazie SirJo. In questi casi è corretto toglierla a vedere dove si rompe il codice

  6. #6
    Ok grazie, ora provo, non ho messo l'articolo, perche è un campo che non viene aggiornato, e sbagliato?

  7. #7
    ho provato togliendo la try----ho aggiunto il campo articolo nella query, lanciato il programma. nessun errore rilevato ma la tabella non viene aggiornata

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2014
    residenza
    Vicenza
    Messaggi
    309
    stranissimo, un messaggio di errore dovrebbe comunque mostrarlo

  9. #9
    1. https://www.automateexcel.com/vba-code-indenter/ per indentare
    2. Comando.Parameters.AddWithValue lo stai usando al contrario
    3. Spiega cosa devi fare, il tuo codice fa dei giri ben strani

  10. #10
    in pratica, ad ogni cambio mese, devo spostare il mese seguente a quello in corso su quello in corso...sommando le quantità dei due mesi e spostando gli altri di una colonna..cosa intendi per indentare e cosa intendi che uso il comando.Parameters.AddWithValue al contrario?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.