Binance Exchange

VB.NET e Access: inserimento di un record in una tabella

Vediamo come inserire in un database Access un record contenente dati provenienti da un form di Visual Basic.NET. Prendiamo ancora l’esempio dell’altra volta del database con le informazioni su cd musicali contenute nella tabella chiamata album. Vediamo come realizzare la funzione per andare ad inserire un record, prendendo i dati da 4 TextBox per artista, genere, anno e note e una ComboBox dove viene scelto il genere tra quelli disponibili.
Per prima cosa, anche in questo caso bisogna fare l’import del namespace “System.Data.OleDb”

Imports System.Data.OleDb

Come gi?† visto per il precedente post per la lettura di dati, dobbiamo impostare la stringa di connessione al database:

'Percorso del DataBase (db2.mdb)
PercorsoDB As String = "C:\db2.mdb"
'Stringa di Connessione
Dim ConnString As String = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & PercorsoDB

Anche in questo caso, dichiariamo tutto il necessario

Dim Cn As New OleDbConnection(ConnString)
Dim cmd As OleDbCommand
Dim sql As String

Andiamo adesso a vedere la funzione InserisciDati() che verr?† chiamata quando si dovranno andare ad inserire i dati, magari dopo la pressione di un pulsante. Per prima cosa ci si connette al database, poi in questo caso faccio un controllo sul valore della TextBox txtAnno (quindi sulla sua propriet?† Text) per assicurarmi che non sia nullo perch?® questo mi darebbe un errore in quanto nel database Access il campo Anno ?® dichiarato come campo Numerico. In base all’esito creo la stringa SQL includendo o meno il campo Anno. Creo il comando da eseguire indicando la stringa sql e la connessione e poi lo eseguo con l’istruzione “ExecuteNonQuery” che mi restituisce poi il numero di record scritti che assegno alla variabile temp_num prededentemente dichiarata. Qui risulta un po’ un casino perch?® le righe di codice sono piuttosto lunghe e anche con il simbolo “_” per andare a capo non si capisce molto. Se copiate/incollate dovranno di sicuro essere riformattate. Ma vediamo il tutto:

Function InserisciDati()
Cn.Open()
If txtAnno.Text = "" Then
sql = "INSERT INTO album (artista , titolo , genere , commenti) VALUES ('" + txtArtista.Text + "', '" + txtTitolo.Text + "', '" + cmbGenere.Text + "', '" + txtNote.Text + "')"
Else
sql = "INSERT INTO album (artista , titolo , genere , anno , commenti) VALUES ('" + txtArtista.Text + "', '" + txtTitolo.Text + "', '" + cmbGenere.Text + "', '" + txtAnno.Text + "', '" + txtNote.Text + "')"
End If

Dim temp_num As Integer
cmd = New OleDbCommand(sql, Cn)
temp_num = cmd.ExecuteNonQuery
Cn.Close()
MsgBox("record scritti: " & temp_num, , "Informazione sul numero di record scritti")
End Function

La MessageBox in questo caso mi ritorner?† il messaggio: “Record Scritti: 1”

This entry was posted in $1$s. Bookmark the permalink.
SpectroCoin Bitcoin Wallet and Card

5 thoughts on “VB.NET e Access: inserimento di un record in una tabella

  1. Pingback: Dede Blog » VB.NET: Esportare un database Access su un foglio Excel

  2. scusami se ti disturbo ma ho avuto dei problemi nell’inserimento e modifica dei dati in una tabella access e nel controllo della correttezza dei dati immessi (importante la data) potresti madarmi materiale al mio indirizzo e-mail?
    grazie
    ciao
    alessandro

  3. Grazie per la preziosissima informazione, era da molto tempo che cercavo quest’istruzione…

    Spero che adesso funzioni!!!

    Ciao Lorenzo…

  4. Ho provato ma viene generato il seguente errore:
    Errore di sintassi nell’istruzione INSERT INTO.

    e viene evidenziata la parte:
    temp_num = cmd.ExecuteNonQuery

    Come ?® possibile

  5. Ciao, allora il tipo di errore mi sembra chiaro. Dovresti essere pi?? preciso quando dici “ho provato”. Intendi dire che hai provato su una tabella che avevi con un codice e una query fatta seguendo l’esempio o hai provato il codice riportato nel mio post pari-pari. Nel primo caso potrebbe essere un errore, magari di svista, nella query di inserimento. Se invece hai provato ad eseguire il codice qui sopra c’?® un problema che si verifica in alcuni casi. Ho infatti ripreso il vecchio codice di cui faceva parte questo e ho rifatto un po’ di test: il tutto si pianta, dando l’errore che segnali tu nel commento, quando i campi di testo che si vanno ad inserire contengono qualche apostrofo o apice che sia.
    Se ricadi in questo secondo caso il problema ?® quello, prova ad inserire dei testi senza apostrofo o apici e dovrebbe andare correttamente.
    Fammi sapere.
    Saluti, Dede.

Leave a Reply

Your email address will not be published. Required fields are marked *