Salvare le modifiche di un dataset in un database

venerdì 04 maggio 2007 - 10.36

neuromante65 Profilo | Newbie

Sto studiando VB.NET 2005 ed in particolare mi sto concentrando sull' accesso ai DB.
Ho una tabella di access che contiene per ogni riga un Nome, un Cognome ed una Login ed un campo Password che di default è vuoto perchè lo voglio valorizzare successivamente con una applicazione VB.NET che accede al db, calcola una password casuale alfanumerica per ogni riga e risalva i dati aggiornati nel db; quello che non riesco ancora a far funzionare e salvare le modifiche operate sul dataset all'interno del file di access; il codice associato ad un tasto che esegue l'operazione è il seguente:

Dim conn As New OleDbConnection
conn.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source = C:\ListaUtenti.mdb"
conn.Open()
Dim MaxRows As Integer
Dim i As Integer
Dim ds As New DataSet
Dim da As OleDbDataAdapter
Dim sql As String
sql = "SELECT * FROM LoginTable"
da = New OleDbDataAdapter(sql, conn)
da.Fill(ds, "dsLoginTable")
conn.Close()
MaxRows = ds.Tables("dsLoginTable").Rows.Count
For i = 0 To MaxRows - 1
ds.Tables("dsLoginTable").Rows(i).Item(4) = PassGenerator(8)
Next
DBGrid.DataSource = ds.Tables(0)
Dim cb As New OleDbCommandBuilder(da)
da.Update(ds,("dsLoginTable")

Passgenerator è una funzione che richiamo ogni volta che voglio generare la mia password di 8 caratteri.

MI sono basato su:http://msdn2.microsoft.com/it-it/library/xzb1zw3x(VS.80).aspx

per la procedura di aggiornamento; il dataset viene correttamente aggiornato ma il db no, l'errore segnalato è:

ERRORE DI SINTASSI NELL'ISTRUZIONE UPDATE

LIstaUtenti.mdb è composto da 4 tabelle, quella interessata è la LoginTable che non ha chiave primaria ma da quello che ho letto non dovrebbe essere indispensabile, la LoginTable è una tabella "solitaria" non ha vincoli di JOIN con altre tabelle.

Qualche suggerimento?
Grazie

the_follet Profilo | Newbie

Ciao Neuro

Stai usando un commandbuilder per le operazioni di update, ma non hai indicato al dataadapter QUALI sono i vari comandi per le operazioni specifiche di UPDATE, INSERT e DELETE.

Dopo la dichiarazione del commandbuilder devi aggiungere le seguenti istruzioni (per il tuo scopo basterebbe anche solo updatecommand):

da.UpdateCommand = cb.GetUpdateCommand
da.DeleteCommand = cb.GetDeleteCommand
da.InsertCommand = cb.GetInsertCommand

Così dovrebbe essere tutto a posto, prova e fammi sapere

Luca

neuromante65 Profilo | Newbie

Ti ringrazio per il reply :)
Si hai ragione nel copia incolla ho omesso le istruzioni che mi segnali e con le quali il problema persiste....sai qual'è stata la soluzione? cambiare il nome del campo PASSWORD in PWD, a quanto pare Access non gradisce molto un nome simile :)
adesso funziona tutto.

the_follet Profilo | Newbie

Ahahahahah, giusto, non mi ero accorto del campo PASSWORD

Tempo fa sono impazzito per lo stesso motivo tentando di utilizzare un campo "Note"...
Non avevo idea che anche quella fosse una parola riservata... chi se lo aspettava?...

Cmq mi fa piacere che abbia risolto
Saluti.
Luca
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