Connettersi al database Microsoft Access e Fill DataGridView

Come nel precedente messaggio , sensilli molto e con pochissimo codice, vedremo come collegare in visual basic. net con un file di database in Microsoft Access e quindi recuperare i dati da uno dei pannelli DataGridView riempito con loro.

La prima cosa da fare è importare due namespace come indicato di seguito:

 Imports System.Data
 Imports System.Data.OleDb

Per questo esempio useremo un form con un pulsante (Button1) e una DataGridView (DataGridView1). In l'evento click di button1 una copia il seguente codice e il nome del database. Mdb e il nome della tabella nell'istruzione SELEZIONARE ) in modo che tutto funziona bene.

 Dim cnn As New OleDbConnection ("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C: \ myBaseAccess.mdb; User Id = admin, Password =;")

 Da As New OleDbDataAdapter ("SELECT * FROM Prodotti", cnn)
 Dim ds As New DataSet

 da.Fill (ds)

 DataGridView1.DataSource ds.Tables = (0)

Beh, in realtà non molto da spiegare ... si crea una connessione (CNN), poi un DataAdapter (bis) che hanno come parametro la dichiarazione per recuperare i dati ( SELEZIONA ) e la connessione da utilizzare (CNN). Se si desidera selezionare solo alcuni record bisogno di aggiungere una condizione WHERE della select.

Nelle righe seguenti lasceremo alcune definizioni brevi nel caso in cui qualcuno di voi erano necessari e per saperne di più sulle diverse opzioni per la creazione di una connessione a Microsoft Access lascio anche il seguente link: http://www.connectionstrings.com/access

DataAdapter

Rappresenta un insieme di comandi SQL e una connessione a un database utilizzati per riempire l'oggetto DataSet e aggiornare l'origine dati.
DataAdapter funge da ponte tra il DataSet e un'origine dati per il recupero e la memorizzazione dei dati. Per agire come un ponte, DataAdapter Fill assegna metodo, modificando i dati di DataSet per abbinare l'origine dei dati, e assegna il metodo Update, che modifica i dati nell'origine dati a coincidere con quelli del DataSet.

DataSet

Rappresenta una memoria cache di dati. Si tratta di un componente fondamentale dell'architettura ADO.NET. DataSet è costituito da un insieme di oggetti DataTable.

DataTable

Rappresenta una tabella di dati in memoria.
DataTable è un oggetto centrale della libreria ADO.NET. Tra gli oggetti che utilizzano DataTable e DataSet DataView inclusi.

Quando si accede a oggetti DataTable, è necessario tenere a mente che queste sono case-sensitive condizionale. Per esempio, se un DataTable è denominato "MyDataTable" e altri "MyDataTable", la stringa che viene utilizzato per cercare una delle tabelle sono considerate case-sensitive. Tuttavia, se c'è "MyDataTable" ma no "MyDataTable" è considerato la stringa di ricerca non è case sensitive. Un DataSet può contenere due oggetti DataTable che hanno lo stesso valore della proprietà TableName e diversi valori per la proprietà Namespace.

26 Responses to "Connetti a database Microsoft Access e Fill DataGridView"

  1. [...] Per scrivere l'esempio di connessione a SQL Server e Microsoft Access Connection mi sono reso conto che anche se questi sono i due tipi di database più utilizzati quando [...]

  2. Uruguay carla dice:

    perché la verità è stato molto utile. perché avevo bisogno di un codice più semplice possibile, perché ho avuto difficoltà a caricare una tabella da accesso ad un datagrid e tutti i codici che ho provato questa era l'unica cosa che mi ha portato dall'altra parte del tavolo e con il codice così poco
    Con la verità e benedizioni
    Carla

  3. Edwin ha detto:

    Ho servito molto grazie! a guardarlo anche se volevo sapere come filtro per paese, per trovare un record particolare.

  4. Oswaldo dice:

    Saluti .. ottimo il tuo articolo e la tua pagina ... stavo per chiedere come pulire il DataGridView1 ogni volta che si fa clic su un pulsante per query e visualizzare i dati, ma penso che la correzione, se non è giusto, ma almeno ho lavorato . L'unica cosa che ho fatto è stato aggiungere "ds.Clear ()"
    Quindi:
    ds.Clear ()
    da.Fill (ds)
    DataGridView1.DataSource ds.Tables = (0)

    Ora come faccio una TextBox dove digitando un nome cartellone che mostra solo i risultati trovati in DataGrid ..

    • Elisha ha detto:

      A. - Per la pulizia: ok quello che fai, si potrebbe anche fare DataGridView1.DataSource = Nothing
      2 -. Per visualizzare solo i dati che corrispondono alla casella di testo la procedura è la stessa, l'unica cosa che cambia è l'istruzione SELECT che esegue la ricerca. Ad esempio: "SELECT * FROM Impiegati WHERE Nome LIKE '%" & TextBox1.Text & "%'"

      Fortuna

  5. Oscar ha detto:

    Ho lavorato con Visual Studio 6 e sto cercando di lavorare con Visual Studio 2008. Ho fatto quello che dice il manuale per visualizzare i dati da una tabella in un DataGridView, senza successo. DataGridView viene visualizzato, ma non i dati. In caso di carico del modulo vengono inseriti automaticamente righe di codice per popolare i dati, ma a quanto pare non funziona. Qualcuno sa se questo è un problema noto?

  6. Maxi ha detto:

    Il fatto che questo funziona perfettamente, ma a me quello che non funziona per me è l'aggiornamento di inserimento ed eliminazione ... anche con conexionstring sonda e sqlcomand .. e non fare ..
    Tutte le idee?
    Grazie mille.

    • Maxi ha detto:

      Ragazzi mi rispondo.
      inserire:
      As New OleDbDataAdapter Dim daagregar ("insert into ordini (IDPLATO, quantità, IDMesa, CustomerID, data) values ​​('" & TxtCodigo.Text & "', '" & TxtCantidad.Text & "', '" & TxtMesa.Text & "', '0', '8 ')", CNX)
      daagregar.Fill (dsPedidos)

  7. Jorge ha detto:

    hol quali vorrei sapere come devo fare per inserire dati in un datagridview, ma se il valore esiste e inviare un messaggio che già esiste, perché SALUTI

  8. Dice Gabriele:

    Grato per il codice ...

    C'è un modo di recuperare i dati in GridView e metterli in un file PDF?.

    Saluti dal Cile

  9. tttony dice:

    Ciao, mi connetto con un DB Access 2007 da C # NET qui tutto bene, ma ho una tabella che ha tre campi con le date e voglio dare un formato di output e ho due opzioni.:

    1) Dopo aver completato la DataGridView per formattare ogni campo contenente la data

    2) lo fanno con un'istruzione SELECT:

    SELECT TOP 20 *, Format ([buy_date], "Data estesa") & "" & Format ([buy_date], 'Short Time') AS [buy_date] FROM test ORDER BY id DESC

    Il problema con questo punto di vista è che si pone l'[buy_date] da posizione 4 a 2 e devo scrivere più codice per l'ordine ed è quello che non voglio

    Saluti

  10. Eliseo ha detto:

    Ottengo il seguente errore
    Impossibile trovare ISAM installabile.
    da.Fill (ds)
    Ho fatto tutto è come perché?

  11. Pablo_la31 dice:

    Hi! Vedo che il collegamento con un BD 2003 in materia di accesso vb.net da lì portare tutti i dati da 3 tabelle in un DataTable con tutte le colonne delle tabelle 3, ora voglio q è la visualizzazione su un dataGridView, ma non tutte le colonne ma per alcuni .. come posso farlo?

  12. Jordi ha detto:

    Grazie, una spiegazione molto semplice e molto pratico, Grazie

  13. Daniel dice:

    Ottimo post, molto utile e molto dettagliata, solo che non sapevo che fosse così facile.

    Grazie

  14. Misael dice:

    ciao! gran forma e molto secilla
    Una domanda, una volta che si riempie il DataSet DataGridView1 Come avrei potuto ottenere un certo valore da una cella specifica, vale a dire se il valore DataGridView1 kisiera sulla colonna 1 in riga 1?

  15. Claudio dice:

    Ciao;
    Io uso Visual Basic 2008 Microsofty e le scorciatoie come database .. per scrivere lo stesso codice che viene pubblicato in questa pagina si ottiene un errore sulla linea che dice: da.Fill (ds)

    l'errore non è controllata System.Data.OleDb.OleDbException
    ErrorCode = -2147467259
    Message = "Non è un nome di file valido."

    Mi può aiutare?
    Grazie ...

  16. tato25 ha detto:

    Ciao a tutti bisogno di aiuto con scarico di un record per la connessione di collegamento dati e va bene, ma poi per l'alto ottengo questo è il codice
    connessione:
    Formclientes_Load Private Sub (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Connessione As OleDbConnection
    connessione = New OleDbConnection ("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C: \ proyectovb.net \ tesis.mdb")
    Come DataSet Dim dsCustomers
    Come consultaclientes String Dim
    consultaclientes = "select clientes.dni, clientes.apellido da parte dei clienti"
    Come Nuovi daclientes OleDbDataAdapter Dim (consultaclientes, connessione)
    dsCustomers = New DataSet ()
    daclientes.Fill (dsCustomers, "clienti")
    Dgvclientes.DataSource dsclientes.Tables = ("clienti")

    Sul pulsante Aggiungi:
    Come DataTable Dim TABLACLIENTES = New DataTable ("Clienti")
    Come DataRow Dim REGISTROCLIENTES = TABLACLIENTES.NewRow
    REGISTROCLIENTES ("DNI") = Me.TextBox1.Text
    REGISTROCLIENTES ("NAME") = Me.TextBox2.Text
    TABLACLIENTES.Rows.Add (REGISTROCLIENTES)
    Io uso per scaricare, come faccio a fare un nuovo controllo elevato, ma in primo luogo se il record esiste già
    Mi aspetto qualche risposta da qualche solidarietà attraverso

  17. Borro dice:

    Beast Big!
    Avevo già bruciato le schede

    Sto utilizzando VB6 e il cambiamento vb recente al 2010

    GRAZIE!

  18. Jeysson dice:

    Sembra che questo non è il codice per VB 2010
    PORFAVOT può insegnare qualcuno sa
    LEARN QUISIEA URGENTEMENTE!

  19. Rodhe Gav dice:

    Eccellente contributo. Complimenti mi versò un sacco. I iniciandome nel mondo della VB.NET. Anche se ho abbastanza di programmazione, ma hai sempre bisogno di esempi in modo che quando si cambia il linguaggio di programmazione. Saluti

  20. Giovanni dice:

    Non ho visto niente aperta in questo senso, ma voglio aggiungere dati del modulo a un database in Access e non posso, se qualcuno potrebbe aiutare gradirebbe

    saluti

  21. Amaliam dice:

    Mi è stato molto utile, grazie!

  22. Chillon dice:

    Komo cucciolata kapo, guarda ho una domanda, sto programmazione con VB. Net 2008 per non usarlo abbastanza, e buona è stata ripresa. Ho commentato.

    Ho fatto un modulo in cui la mia definizione di coneccionn sentensia, e l'adattatore dati e set di dati, ho fatto la connessione nel salto da un errore, ma ho il mio n Coneccion.open, guarda come ho fatto io e dimmi se potete aiutarmi ..

    MODULO

    Imports System.Data
    Imports System.Data.OleDb
    Module Module1
    Come ConecZion New Public OleDbConnection ("Provider = Microsoft.Jet.OLEDB.4.0; DataSource = C: \ Documents and Settings \ USER \ My Documents \ Pr Testear.mdb")
    As New OleDbDataAdapter Public DataAdap ("select * from [Club XXXX] ordina per NrodeSocio" ConecZion)
    Dataset come Public New DataSet
    End Module

    [B] E qui dal [/ B]

    FrmFormwork_Load Private Sub (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    ConecZion.Open ()

    DataSet.Clear ()
    DataAdap.Fill (Dataset, "miTestearDt")
    Dataset.Tables ("miTestearDt"). DefaultView.Sort = "NrodeSocio ASC"

    ConecZion.Close ()
    End Sub

    Questo errore e STRIP ME

    Impossibile trovare ISAM installabile.

    PORQ può essere? : S..

    Mi auguro di abbracciare la risposta

  23. Marco dice:

    Grazie per l'aiuto il problema è risolto commentatori creando un'istanza del DataSet che è stato dichiarato all'inizio per esempio la mia variabile si chiama un record allora sarebbe: record Dim = New DataSet () e voilà!

Commento