Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    144

    [VB.NET] Update con parametri fallisce

    Sub Aggiorna(ByVal Elemento As Lista)
    Dim sql As String
    Dim cn As New OleDb.OleDbConnection(StringaConn)
    cn.Open()
    If Not EsisteCommessa(Elemento.Commessa) Then
    'definisco l'istruzione sql
    sql = "INSERT INTO ListaTestata (Commessa,N_Doc) VALUES (@Commessa,@N_Doc)"
    Else
    sql = "UPDATE ListaTestata SET N_Doc=@N_Doc WHERE Commessa=@Commessa"
    End If
    Dim cmd As New OleDb.OleDbCommand(sql, cn)
    cmd.Parameters.Add("@Commessa", Elemento.Commessa)
    cmd.Parameters.Add("@N_Doc", Elemento.N_Documento)
    Dim i As Integer
    i = cmd.ExecuteNonQuery()
    cn.Close()
    End Sub

    La precedente routine funziona correttamente per l'insrimento, ma non funziona con l'aggiornamento. Non mi da nessuno errore solo che se vado a vedere nel db vedo che non ho aggiornato un bel nulla. Se alla query sostuisco
    sql = "UPDATE ListaTestata SET N_Doc=@N_Doc WHERE Commessa='" & Elemento.Commessa & "'"
    tutto funziona....sembra un problema sull'utilizzo dei parametri...sapete dirmi dove sbaglio???
    Grazie

  2. #2
    Io credo che tu debba usare anche la tipologia e la lunghezza dei parametri, credo ...

  3. #3
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    quando fai ExecuteNonQuery ti dice quanti record sono stati influenzati dalla query ???

  4. #4

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Come già suggerito, aggiungerei anche le informazioni sul tipo di dati per il parametro e controllerei il valore restituito dal metodo ExecuteNonQuery dell'oggetto Command (che probabilmente restituisce zero).

    In caso affermativo, metti un breakpoint prima dell'esecuzione della query e controlla con gli strumenti di debugging che i parametri passati contengano i valori che ti aspetti di utilizzare.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    144
    si, infatti ho controllato i parametri, i valori sono giusti e anche il tipo è giusto, però la ExecuteNoQuery mi restituiesce effettivamente 0, il problema sta proprio dopo la clausola WHERE. Questo è conferato dal fatto che la seconda query che ho messo funziona perfettamente e il parametro è solo nella parte di "SET".
    Perchè????

  7. #7
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    codice:
    cmd.Parameters.Add("@Commessa", Elemento.Commessa) 
    cmd.Parameters.Add("@N_Doc", Elemento.N_Documento)

    Ti sei assicurato che questi valori siano valorizzati ???.

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    144
    si lo sono!

  9. #9
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Qual è la chiave primaria di quella tabella?

    Sei certo che il record esista prima di eseguire la query?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    144
    la chive primaria è 'commessa', ossia la where è proprio sulla chiave primaria......e il record c'è nel db, è proprio guardando questo nel db che mi accorgo che non funziona la query.
    Vorrei sottolineare le due query

    sql = "UPDATE ListaTestata SET N_Doc=@N_Doc WHERE Commessa=@Commessa"

    questa non funziona

    sql = "UPDATE ListaTestata SET N_Doc=@N_Doc WHERE Commessa='" & Elemento.Commessa & "'"

    questa funziona

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 © 2025 vBulletin Solutions, Inc. All rights reserved.