PDA

View Full Version : [VB.NET] Inserimenti record in database con OLEDB


Quseto82
26-11-2009, 06:49
Buongiorno a tutti,
questo è il mio primo post, e spero di non aver sbagliato sezione.
Ho cominciato da poco a programmare in VB.NET e sto tentanto di effettuare una connessione ad un database di access 2007. Per la connessione non ho problemi però non riesco a fare l'inserimento di una nuova riga in una tabella. Vi incollo sotto il codice da me scritto:

Public Class Form1
Private PercorsoDB As String = "C:\proveVB2010\gestionale.accdb"
Private ConnString As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & PercorsoDB
Private CnnAccess As New OleDb.OleDbConnection(ConnString)
Dim DA As New OleDb.OleDbDataAdapter
Dim DS As New DataSet
Dim DSROW As DataRow


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

Dim SQL As String = "Select * from PROVA"
Dim ObjCommand As New OleDb.OleDbCommand
ObjCommand.Connection = CnnAccess
ObjCommand.CommandText = SQL
DA.SelectCommand = ObjCommand
DA.Fill(DS, "PROVA")
GrdClienti.DataSource = DS.Tables("PROVA")

Dim cmd As New OleDb.OleDbCommandBuilder(DA)


DSROW = DS.Tables("PROVA").NewRow()
DSROW.Item(0) = "Dario"
DSROW.Item(1) = "Dario1"

DS.Tables("Clienti").Rows.Add(DSROW)

DA.Update(DS, "Clienti")

End Sub
End Class

Il programma viene compilato correttamente, però al momento in cui clicco su Command1 mi genera il seguente errore:

"Object reference not set to an instance of an object."
riferito a DSROW nel punto in cui l'ho evidenziato in rosso.

Grazie a tutti!!

MarcoGG
26-11-2009, 08:47
DA.Fill(DS, "PROVA")
GrdClienti.DataSource = DS.Tables("PROVA")

Dim cmd As New OleDb.OleDbCommandBuilder(DA)

DSROW = DS.Tables("PROVA").NewRow()
DSROW.Item(0) = "Dario"
DSROW.Item(1) = "Dario1"

DS.Tables("Clienti").Rows.Add(DSROW)



DSROW di per sè non è responsabile dell'errore.
Il problema è abbastanza evidente : prima esegui il Fill su DS con la tabella "PROVA", crei una riga DSROW con NewRow, quindi assume la struttura della tabella PROVA, e poi tenti di inserirla in una tabella del DataSet "Clienti", che ovviamente non può esistere. L'errore è su quella riga, ma la colpa è della tabella "Clienti".

Quseto82
26-11-2009, 09:01
:muro: :cry: :doh: :doh: :doh:
La prossima volta certe prove è meglio che le faccio di mattina bello fresco!!
Grazie tante!!!!