Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Agiungere record db access
domenica 15 agosto 2010 - 18.37
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
VB.NET
|
.NET 2.0
|
Windows XP
|
Visual Studio Express
|
Access (.mdb)
|
Office 2003
|
Firefox
tonino73
Profilo
| Newbie
2
messaggi | Data Invio:
dom 15 ago 2010 - 18:37
salve, sono da poco alle prese con vb 2005 express, prima qualche cosa con il vb 6 l'ho fatta, ma con ado.net tutto è differente. Allora ho incominciato a vedere un po sui forum, tra cui anche questo, qualche linea guida per connettermi al database e apportare delle modifiche alle tabelle.In questo caso specifico sto facendo delle prove su una sola tabella e con il metodo disconnesso. ora vi posto il listato e se potete darmi una dritta di perchè mi da un errore. vi ringrazio anticipatamente.
Imports System.Data.OleDb
Imports system.Data.DataRow
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' Impostazione della connessione al Database.
Dim strConn As String
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source = C:\Documents and Settings\Antonino\Documenti\Visual Studio 2005\Projects\squesito.mdb"
Dim cn As New OleDb.OleDbConnection(strConn)
' Comando SQL per il recupero dei record.
Dim sql As String
sql = "SELECT citta"
sql = sql & " FROM tcitta ORDER BY citta"
Dim cmd = New OleDb.OleDbCommand(sql,cn)
' Assegnamo il comando al DataAdapter.
Dim da As New OleDb.OleDbDataAdapter()
da.SelectCommand = cmd
' Apriamo la connessione.
cn.Open()
Dim ds As New DataSet("dsCitta") ' Il nome del DataSet è opzionale
' Specifichiamo al DataAdapter di copiare, oltre ai dati, anche
' le informazioni relative alle chiavi definite nella tabella
da.MissingSchemaAction = MissingSchemaAction.AddWithKey
' Riempiamo il DataSet specificando il nome della tabella.
ds.Clear()
da.Fill(ds, "tcitta")
ComboBox1.DataSource = ds.Tables("tcitta")
ComboBox1.DisplayMember = ds.Tables("tcitta").Columns("citta").ToString
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ds As New DataSet("dsCitta") ' Il nome del DataSet è opzionale
Dim da As New OleDb.OleDbDataAdapter()
Dim tblcitta As New DataTable()
tblcitta = ds.Tables("tcitta") 'Referenzia la tabella Clienti contenuta nel DataSet
' Esempio di inserimento nuovo record.
Dim NewRec As DataRow
NewRec = tblcitta.NewRow
NewRec("citta") = TextBox1.Text
tblcitta.Rows.Add(NewRec)
da.Update(ds, "tcitta")
ComboBox1.Refresh()
End Sub
End Class
l'errore che mi da sulla riga NewRec = tblcitta.NewRow è System.NullReferenceException non è stata gestita
"Riferimento a un oggetto non impostato su un'istanza di oggetto."
dove sbaglio?
sanbiz
Profilo
| Senior Member
208
messaggi | Data Invio:
lun 16 ago 2010 - 11:20
>Dim ds As New DataSet("dsCitta") ' Il nome del DataSet è opzionale
>Dim da As New OleDb.OleDbDataAdapter()
>Dim tblcitta As New DataTable()
>tblcitta = ds.Tables("tcitta") 'Referenzia la tabella Clienti contenuta nel DataSet
>
> ' Esempio di inserimento nuovo record.
> Dim NewRec As DataRow
>
> NewRec = tblcitta.NewRow
>
>l'errore che mi da sulla riga NewRec = tblcitta.NewRow è System.NullReferenceException
>non è stata gestita
>"Riferimento a un oggetto non impostato su un'istanza di oggetto."
>dove sbaglio?
Il problema è che tblcitta NON è referenziato, infatti quando scrivi tblcitta = ds.Tables("tcitta") in realtà non associ nulla perchè il dataset è vuoto (ds.tables.count=0).
Avresti dovuto popolarlo, utilizzando il dataadapter associandovi una connection ed una select 8o un datacommand) appropriati ed utilizzando la proprietà FILL del dataadapter per popolare la tabella:
Es.
Dim da As New OleDb.OleDbDataAdapter("Select * from ...", OleDb.OleDbConnection)
da.Fill(ds, "tcitta")
Inoltre è inutile dichiarare "Dim tblcitta As New DataTable()" se alla riga dopo vi associ una tabelle già esistente.
--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/
tonino73
Profilo
| Newbie
2
messaggi | Data Invio:
lun 16 ago 2010 - 15:14
ho fatto qualche modifica fammi sapere se va tutto liscio, anche perchè nella sub den button1 mi da qualche problema con il command
Imports System.Data.OleDb
Imports system.Data.DataRow
Public Class Form1
Private ds As New DataSet
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' Impostazione della connessione al Database.
Dim strConn As String
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source = C:\Documents and Settings\Antonino\Documenti\Visual Studio 2005\Projects\squesito.mdb"
Dim cn As New OleDb.OleDbConnection(strConn)
' Comando SQL per il recupero dei record.
Dim sql As String
sql = "SELECT citta"
sql = sql & " FROM tcitta ORDER BY citta"
Dim cmd = New OleDb.OleDbCommand(sql, cn)
' Assegnamo il comando al DataAdapter.
Dim da As New OleDb.OleDbDataAdapter()
da.SelectCommand = cmd
' Apriamo la connessione.
cn.Open()
' Specifichiamo al DataAdapter di copiare, oltre ai dati, anche
' le informazioni relative alle chiavi definite nella tabella
da.MissingSchemaAction = MissingSchemaAction.AddWithKey
' Riempiamo il DataSet specificando il nome della tabella.
ds.Clear()
da.Fill(ds, "tcitta")
ComboBox1.DataSource = ds.Tables("tcitta")
ComboBox1.DisplayMember = ds.Tables("tcitta").Columns("citta").ToString
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim da As New OleDb.OleDbDataAdapter()
Dim tblcitta As New DataTable()
tblcitta = ds.Tables("tcitta") ' Referenzia la tabella Clienti contenuta nel DataSet
'inserimento nuovo record.
Dim NewRec As DataRow
NewRec = tblcitta.NewRow
NewRec("citta") = TextBox1.Text
ds.Tables("tcitta").Rows.Add(NewRec)
da.Fill(ds, "tcitta")
da.Update(ds, "tcitta")
ComboBox1.Refresh()
End Sub
End Class
Torna su
Stanze Forum
Elenco Threads
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 !