Popolare una ListView da access

di il
19 risposte

Popolare una ListView da access

Buonasera a tutti,
Premetto che sono un principiante in questo lingiaggio.
Avrei bisogno di qualche consiglio per caricare una tabella di access in una listview.

Grazie

19 Risposte

  • Re: Popolare una ListView da access

    Il mio consiglio è quell di fare una ricerca sul web.
    Ne trovi a centinaia di esempi di codice.
  • Re: Popolare una ListView da access

    O comprare un libro. Se si è principianti la prima cosa è studiare.

    La risposta ti sembrerà ovvia ma le alternative sono due: si scrive tutto noi o cominci a dare un'occhiata in giro tu.
  • Re: Popolare una ListView da access

    gibra ha scritto:


    Il mio consiglio è quell di fare una ricerca sul web.
    Ne trovi a centinaia di esempi di codice.
    @lucas, falla in inglese la ricerca
  • Re: Popolare una ListView da access

    Stavo già guardando a qualche codice, ora lo inserisco pero la listview rimane bianca o mi da l'errore "system.indexoutofrangeexception" nella riga " lvi.SubItems.Add(reader("DORS"))"
    
            Dim PercorsoApp
            Dim NomeFile
            Dim Path As String
            Dim PathDB As String
            NomeFile = Main.Status_IDGARA.Text
            PercorsoApp = My.Application.Info.DirectoryPath
            PathDB = PercorsoApp & "\Dati\Database\" & NomeFile & ".mdb"
    
            Dim CON As New OleDb.OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source =" & PathDB)
    
            CON.Open()
    
            Dim Query_Select As String = "SELECT ID, ATLETA, LICENZA, CAT, NOMESOC, CODSOC, SESSO FROM Iscritti"
            Dim cmd As OleDbCommand = New OleDbCommand(Query_Select, CON)
            Dim reader As OleDbDataReader = cmd.ExecuteReader()
    
            Dim lvi As New ListViewItem
            ListView1.View = View.Details  'FONDAMENTALE'
    
            ListView1.LabelEdit = True
            ListView1.AllowColumnReorder = True
            ListView1.FullRowSelect = True
            ListView1.GridLines = True  'mostra una sottile griglia'
            ListView1.Sorting = SortOrder.Ascending  'ordinamento'
    
            ListView1.Columns.Add("ID", 70, HorizontalAlignment.Left)
            ListView1.Columns.Add("DORSALE", 70, HorizontalAlignment.Left)
            ListView1.Columns.Add("NOME E COGNOME", 300, HorizontalAlignment.Left)
            ListView1.Columns.Add("LICENZA N°", 100, HorizontalAlignment.Left)
            ListView1.Columns.Add("CATEGORIA", 70, HorizontalAlignment.Left)
            ListView1.Columns.Add("SOCIETA'", 300, HorizontalAlignment.Left)
            ListView1.Columns.Add("COD. SOCIETA'", 100, HorizontalAlignment.Left)
            ListView1.Columns.Add("SESSO", 70, HorizontalAlignment.Left)
    
            Do While reader.Read()
    
                lvi = ListView1.Items.Add(reader("ID"))
                lvi.SubItems.Add(reader("DORS"))
                lvi.SubItems.Add(reader("ATLETA"))
                lvi.SubItems.Add(reader("LICENZA"))
                lvi.SubItems.Add(reader("CAT"))
                lvi.SubItems.Add(reader("NOMESOC"))
                lvi.SubItems.Add(reader("CODSOC"))
                lvi.SubItems.Add(reader("SESSO"))
    
            Loop
    
            CON.Close()
    
        End Sub
        
  • Re: Popolare una ListView da access

    Se fai il DEBUG del tuo codice capisci dove sta il TUO errore.
  • Re: Popolare una ListView da access

    lucas22f ha scritto:


    Stavo già guardando a qualche codice, ora lo inserisco pero la listview rimane bianca o mi da l'errore "system.indexoutofrangeexception" nella riga " lvi.SubItems.Add(reader("DORS"))"
    
            Dim PercorsoApp
            Dim NomeFile
            Dim Path As String
            Dim PathDB As String
            NomeFile = Main.Status_IDGARA.Text
            PercorsoApp = My.Application.Info.DirectoryPath
            PathDB = PercorsoApp & "\Dati\Database\" & NomeFile & ".mdb"
    
            Dim CON As New OleDb.OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source =" & PathDB)
    
            CON.Open()
    
            Dim Query_Select As String = "SELECT ID, ATLETA, LICENZA, CAT, NOMESOC, CODSOC, SESSO FROM Iscritti"
            Dim cmd As OleDbCommand = New OleDbCommand(Query_Select, CON)
            Dim reader As OleDbDataReader = cmd.ExecuteReader()
    
            Dim lvi As New ListViewItem
            ListView1.View = View.Details  'FONDAMENTALE'
    
            ListView1.LabelEdit = True
            ListView1.AllowColumnReorder = True
            ListView1.FullRowSelect = True
            ListView1.GridLines = True  'mostra una sottile griglia'
            ListView1.Sorting = SortOrder.Ascending  'ordinamento'
    
            ListView1.Columns.Add("ID", 70, HorizontalAlignment.Left)
            ListView1.Columns.Add("DORSALE", 70, HorizontalAlignment.Left)
            ListView1.Columns.Add("NOME E COGNOME", 300, HorizontalAlignment.Left)
            ListView1.Columns.Add("LICENZA N°", 100, HorizontalAlignment.Left)
            ListView1.Columns.Add("CATEGORIA", 70, HorizontalAlignment.Left)
            ListView1.Columns.Add("SOCIETA'", 300, HorizontalAlignment.Left)
            ListView1.Columns.Add("COD. SOCIETA'", 100, HorizontalAlignment.Left)
            ListView1.Columns.Add("SESSO", 70, HorizontalAlignment.Left)
    
            Do While reader.Read()
    
                lvi = ListView1.Items.Add(reader("ID"))
                lvi.SubItems.Add(reader("DORS"))
                lvi.SubItems.Add(reader("ATLETA"))
                lvi.SubItems.Add(reader("LICENZA"))
                lvi.SubItems.Add(reader("CAT"))
                lvi.SubItems.Add(reader("NOMESOC"))
                lvi.SubItems.Add(reader("CODSOC"))
                lvi.SubItems.Add(reader("SESSO"))
    
            Loop
    
            CON.Close()
    
        End Sub
        
    a memoria, ma molto a memoria, credo che la SubItems voglia l'index :

    lvi.SubItems(0).Add(reader("DORS"))
    lvi.SubItems(1).Add(reader("ATLETA"))
    lvi.SubItems(2).Add(reader("LICENZA"))
    lvi.SubItems(3).Add(reader("CAT"))
    lvi.SubItems(4).Add(reader("NOMESOC"))
    lvi.SubItems(5).Add(reader("CODSOC"))
    lvi.SubItems(6).Add(reader("SESSO"))
  • Re: Popolare una ListView da access

    @Doctorj

    la memoria qui non c'entra.
    Bisogna scrivere codice corretto, invece...
  • Re: Popolare una ListView da access

    gibra ha scritto:


    @Doctorj

    la memoria qui non c'entra.
    Bisogna scrivere codice corretto, invece...
    Hai perfettamente ragione, così come ho fatto non aiuterei nessuno, mi cospargo la testa di cenere
  • Re: Popolare una ListView da access

    La struttura del codice è corretta, però devi fare attenzione ai nomi dei campi del DB, non puoi scriverli come ti pare, puoi abbreviare soltanto le intestazioni delle colonne e se vuoi leggerli tutti ti conviene scrivere la qwery così
    Dim Query_Select As String = "SELECT * FROM Iscritti"
  • Re: Popolare una ListView da access

    patel ha scritto:


    devi fare attenzione ai nomi dei campi del DB, non puoi scriverli come ti pare
    Questo è il punto.

    patel ha scritto:


    e se vuoi leggerli tutti ti conviene scrivere la qwery così
    Dim Query_Select As String = "SELECT * FROM Iscritti"
    Direi proprio di no, dato che il
    SELECT * 
    è deprecato in tutti i testi 'seri' del linguaggio SQL .
  • Re: Popolare una ListView da access

    Però funziona, meglio * che scrivere male i nomi dei campi
  • Re: Popolare una ListView da access

    patel ha scritto:


    Però funziona, meglio * che scrivere male i nomi dei campi
    Va beh, no comment.
    Se hai voglia di cazzeggiare, accomodati pure.
  • Re: Popolare una ListView da access

    Probabilmente non sei proprio capace di metterti nei panni di un principiante, dicendogli:
    Se fai il DEBUG del tuo codice capisci dove sta il TUO errore.
    Bisogna scrivere codice corretto, invece...
    lo metti soltanto in confusione e certamente non in grado di capire l'errore.
    Nessuno ti obbliga a rispondere se non hai voglia di aiutare veramente
  • Re: Popolare una ListView da access

    patel ha scritto:


    Probabilmente non sei proprio capace di metterti nei panni di un principiante, dicendogli:
    Se fai il DEBUG del tuo codice capisci dove sta il TUO errore.
    Bisogna scrivere codice corretto, invece...
    lo metti soltanto in confusione e certamente non in grado di capire l'errore.
    Nessuno ti obbliga a rispondere se non hai voglia di aiutare veramente
    Ma cosa stai blaterando?
    Significa che TU non sei capace di fare il DEBUG.
    Ok. Ti lascio perdere perché i tuoi interventi non hanno alcuna utilità.
Devi accedere o registrarti per scrivere nel forum
19 risposte