Risultato strano

lunedì 10 ottobre 2016 - 00.58
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows 7  |  Visual Studio Express  |  SQL Server 2008 R2

Peppino Profilo | Junior Member

Ciao a tutti.
Uso Sql Server 2008 R2 e Visual Basic Express

Vorrei sapere cosa c'è di sbagliato nel seguente codice.
Con il seguente codice vorrei modificare solo una parte dei valori(stringa) di una colonna.
Il problema è che eseguito il ciclo i valori della colonna risultano si cambiati ma l'intera colonna
viene modificata tutta con il valore modificato dell'ultimo record della tabella.
Esempio.
Pippo Mario Rossi
Pippo Mario Rossi
Pippo Mario Rossi ecc.
Invece di
Pippo Mario Bianco
Pippo Mario Verde
Pippo Mario Rossi ecc.

Private Sub BtnModifica_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnModifica.Click

Dim cmd, cmd1 As SqlCommand
Dim dst As DataSet
Dim adp As SqlDataAdapter
Dim bds As BindingSource

Dim totalerecordMiaTabella As Integer = 200

cmd = New SqlCommand()
cmd.Connection = SqlHelper.ConnessioneDatabase
cmd.CommandText = "SELECT StringaDati FROM MiaTabella"
adp = New SqlDataAdapter(cmd)
dst = New DataSet
adp.Fill(dst, "StringaDati")

bds = New BindingSource()
bds.DataSource = dst

bds.DataMember = "StringaDati"

adp.Dispose()
cmd.Dispose()
cmd.Connection.Close()

Dim stringaEsistente As String
Dim lunghezzaStringaEsistente As Integer
Dim caratteriDaEliminareStringaEsistente As Integer = 15
Dim CaratteriNonEliminatiStringaEsistente As String
Dim CaratteriDaInserireNuovaStringa As String = TxtStringaDaInserire.Text
Dim nuovaStringaDaSalvare As String

For i As Integer = 0 To totalerecordMiaTabella - 1

stringaEsistente = CStr(dst.Tables("StringaDati").Rows(i).Item(0))
lunghezzaStringaEsistente = Len(stringaEsistente)
CaratteriNonEliminatiStringaEsistente = Mid(stringaEsistente, caratteriDaEliminareStringaEsistente, lunghezzaStringaEsistente - caratteriDaEliminareStringaEsistente)
nuovaStringaDaSalvare = CaratteriDaInserireNuovaStringa + CaratteriNonEliminatiStringaEsistente

cmd1 = New SqlCommand()
cmd1.Connection = ConnessioneDatabase
cmd1.CommandText = "UPDATE MiaTabella " & _
"SET StringaDati=@stringadati"
cmd1.CommandType = CommandType.Text

cmd1.Parameters.AddWithValue("@stringadati", nuovaStringaDaSalvare)

ConnessioneDatabase.Open()
cmd1.ExecuteNonQuery()
ConnessioneDatabase.Close()

Next
Messaggi.Avviso("Completato!", "Avviso!")
End Sub

Ringrazio anticipatamente per l'eventuale risposta.
Ciao a tutti. Peppino.

Ho risolto. Ovviamente mancava la condizione where, ma nella mia testa guardavo il codice e dicevo che era giusto
poi è bastato rileggerlo il giorno dopo per capire che non era completo.
Grazie comunque a tutti. Ciao. Peppino.

renarig Profilo | Expert

> Vorrei sapere cosa c'è di sbagliato nel seguente codice.

> cmd1.CommandText = "UPDATE MiaTabella " & _
> "SET StringaDati=@stringadati"
> cmd1.CommandType = CommandType.Text

Non ho letto tutti i dettagli, ma.....
quell' UPDATE non ha una WHERE ????

pertanto Updata in toto TUTTI i record della tabella al campo "StringaDati"
se fai un ciclo significa che per ogni passo del ciclo tutti i record
vengono aggiornati identicamente

chiaramente l'ultimo passo del ciclo è quello che
dà il valore finale che tu puoi vedere

.


Post Scritto
Avevo premesso che non avevo letto tutti i dettagli :)
Infatti mi accorgo solo adesso che avevi gia risolto
autonomamente ......

.

Peppino Profilo | Junior Member

Ciao.
Grazie Comunque per aver letto il post.
Ciao Peppino.
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5