Aggiungere record db access vb.net 2005 express

di il
2 risposte

Aggiungere record db access vb.net 2005 express

Ciao ragazzi, anche io sono da poco alle prese con il .net, no che abbia avuto grandi esperienze con vb6 ma qualcosina la facevo. ora per imparare sto facendo un piccolo progetto ma veramente banale per capire il dataset, il dataAdapter e così via. Allora ho un db access con una delle tabelle che si chiama "tcitta" con all'interno due campi che si chiamano rispettivamente "idcitta" e "citta" e un form sul quale ho piazzato un combobox, una textbox e un button. Il mio intento è caricare la combobox con i dati della tabella con il campo citta e fin qui tutto ok, poi inserire un nuovo record che scrivo nella textbox in seguito della pressione del button. Vi posto quello che ho fatto fin ora. l'errore lo indica sulla riga ultima della sub del button1_click "da.update(ds)"

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 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 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)

        Dim sql As String
        sql = "SELECT citta FROM tcitta ORDER BY citta"
        Dim cmd As New OleDbCommand(sql, cn)
        Dim da As New OleDb.OleDbDataAdapter()
        da.SelectCommand = cmd
        cn.Open()
        ' copia anche le chiavi
        da.MissingSchemaAction = MissingSchemaAction.AddWithKey
        ds = New DataSet("tcitta")
        ds.Clear()
        da.Fill(ds, "tcitta")

        Dim dr As DataRow = ds.Tables("tcitta").NewRow
        dr("citta") = TextBox1.Text
        ds.Tables("tcitta").Rows.Add(dr)
        ds.Tables("tcitta").AcceptChanges()

        da.Update(ds) ' è qui l'errore
    End Sub
End Class 

2 Risposte

  • Re: Aggiungere record db access vb.net 2005 express

    Ciao,
    se ho capito bene non ti aggiunge il nuovo record giusto??
    E perché gli devi passare il comando di insert del commandbuilder

    prova cosi:

    Dim dbCMB As New OleDbCommandBuilder()
    'GLI PASSI IL COMANDO DI INSERIMENTO
    da.SelectCommand = dbCMB.GetInsertCommand()
    e poi gli dai il comando update

    Ciao
  • Re: Aggiungere record db access vb.net 2005 express

    Poi cambia dove ti da l'errore con
    da.Update(ds,"TCittà")
Devi accedere o registrarti per scrivere nel forum
2 risposte