Problema UPDATE .mdb

lunedì 27 ottobre 2008 - 19.09

alessandro.c Profilo | Newbie

Salve a tutti

Sto scrivendo un programma in visual basic 2008 che deve accedere ad un file mdb e modificare il contenuto di alcune celle.

Il codice che ho scritto è questo:

Dim myConnection As OleDbConnection
Dim myCommand As OleDbCommand

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


myConnection = New OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\QUIZ.mdb;Persist Security Info=True")

Try

myConnection.Open()
myCommand = New OleDbCommand("UPDATE Tabella SET valore=10 where (valore=15)" , MyConnection)

myConnection.Close()

Catch exp As System.Exception

End Try

End Sub


Non ricevo nessun messaggio d'errore ma il file non viene modificato.

Se qualcuno potesse aiutarmi ne sarei infinitamente grato visto che devo terminare questo programma entro domani.

lbenaglia Profilo | Guru

> Try
>
> myConnection.Open()
>myCommand = New OleDbCommand("UPDATE Tabella SET valore=10 where
>(valore=15)" , MyConnection)
>
> myConnection.Close()
<SNIP>
>Non ricevo nessun messaggio d'errore ma il file non viene modificato.

Eh si, il comando va eseguito prima di chiudere la connessione
Dato che stai eseguendo un comando di UPDATE, utilizza il metodo ExecuteNonQuery() dell'oggetto myCommand:
http://msdn.microsoft.com/it-it/library/system.data.oledb.oledbcommand.executenonquery.aspx

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

alessandro.c Profilo | Newbie

>> Try
>>
>> myConnection.Open()
>>myCommand = New OleDbCommand("UPDATE Tabella SET valore=10 where
>>(valore=15)" , MyConnection)
>>
>> myConnection.Close()
><SNIP>
>>Non ricevo nessun messaggio d'errore ma il file non viene modificato.
>
>Eh si, il comando va eseguito prima di chiudere la connessione
>
>Dato che stai eseguendo un comando di UPDATE, utilizza il metodo
>ExecuteNonQuery() dell'oggetto myCommand:
>http://msdn.microsoft.com/it-it/library/system.data.oledb.oledbcommand.executenonquery.aspx
>
>Ciao!
>--
>Lorenzo Benaglia
>Microsoft MVP - SQL Server
>http://blogs.dotnethell.it/lorenzo/
>http://italy.mvps.org


Dim myConnection As OleDbConnection
Dim myCommand As OleDbCommand
Dim dr As OleDbDataReader
Dim returnValue As Integer

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim conn As String = "provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + TextBox1.Text + "QUIZ.mdb;Persist Security Info=True"
myConnection = New OleDbConnection(conn) '"provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\QUIZ.mdb;Persist Security Info=True"

Try

myConnection.Open()
myCommand = New OleDbCommand("UPDATE Voti SET Classe = 1 WHERE (Classe = 4ISC)", myConnection)
returnValue = myCommand.ExecuteNonQuery()
MessageBox.Show("numero righe modificati=" & returnValue)
myConnection.Close()


Catch exp As System.Exception

End Try



End Sub


ho modificato così il mio codice. ma nn ottengo modifiche sul mdb. help!

lbenaglia Profilo | Guru

>ho modificato così il mio codice. ma nn ottengo modifiche sul
>mdb. help!

Sicuro che quel comando di UPDATE sia corretto?
Hai provato ad eseguirlo in Access?

A me la condizione non sembra corretta, dato che il valore è alfanumerico ma non racchiuso tra apici.
Prova a modificarlo così:

UPDATE Voti SET Classe = '1' WHERE Classe = '4ISC';

Ovviamente mi aspetto che nella tabella Voti esista almeno una classe identificata dal valore '4ISC'

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

alessandro.c Profilo | Newbie

:) perfetto grazie mille ora funziona perfettamente

alessandro.c Profilo | Newbie

un altra domanda:

è possibile cambiare l'informazione di piu celle se 2 o piu celle contengono un certo valore?
io ho provato nella seguente maniera ma non funziona...

myCommand = New OleDbCommand("UPDATE Voti SET dato1 = '0' AND dato2 = '0' WHERE (dato3 = '1' AND dato4 = '1')", myConnection)

qualcuno può illuminarmi?

lbenaglia Profilo | Guru

>un altra domanda:
>
>è possibile cambiare l'informazione di piu celle se 2 o piu celle
>contengono un certo valore?
>io ho provato nella seguente maniera ma non funziona...
>
>myCommand = New OleDbCommand("UPDATE Voti SET dato1 = '0' AND
>dato2 = '0' WHERE (dato3 = '1' AND dato4 = '1')", myConnection)
>
>qualcuno può illuminarmi?
Non ho capito la domanda, ma quel comando di UPDATE non è corretto.
Se volevi dire "E' possibile aggiornare più di una colonna con un singolo comando di UPDATE?" la risposta è "Si, basta separare le colonne con una virgola":

UPDATE Voti SET dato1 = 0, dato2 = 0 WHERE dato3 = 1 AND dato4 = 1;

P.S.: Non conoscendo il data type delle 4 colonne, ma vedendo che sono tutte valorizzate con valori numerici, ho tolto tutti gli apici.
TI ricordo che gli apici si utilizzano per identificare le stringhe. Se una colonna deve contenere ad esempio numeri interi, utilizza un data type numerico NON un data type stringa!

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5