Popolare Combobox con elementi colonna DB ACCESS

di Arkam il
12 risposte

Salve a tutti, ho un piccolo problemino che non riesco a trovare con la popolazione della combobox. Quando vado ad eseguire il debug mi compare il seguente messaggio: "cast non valido dalla stringa "Nome stringa" al tipo "integer". Potreste gentilmente aiutarmi??

Grazie mille anticipatamente

12 Risposte

  • Usiamo la sfera di cristallo o ci mostri il codice?

  • Imports System.Data.OleDb
    Public Class Lotti
        Dim Connex As New ConnessioneDB
        Dim Comando As New OleDbCommand
        Dim Adatta As New OleDbDataAdapter()
        Dim Tabella As New DataTable()
        Dim Nome_Tabella As String = "Ditte1"
        Dim Data As Integer
        Dim Reader As OleDbDataReader
        Private Sub ShowData()
            Try
                Connex.openConnection()
            Catch ex As Exception
                MessageBox.Show("Connection failed !!!" & vbCrLf & "Please check that the server is ready !!!", "Error Message", MessageBoxButtons.OK, MessageBoxIcon.Error)
                Return
            End Try
            Try
                 Comando.CommandType = CommandType.Text
                 Comando.CommandText = "SELECT * FROM " & Nome_Tabella & ""
                Comando = New OleDbCommand(Comando.CommandText, Connex.getConnection)
                Reader = Comando.ExecuteReader
                While Reader.Read
                    Dim sName = Reader.GetString("Società")
                    ComboBox1.Items.Add(sName)
                End While
            Catch ex As Exception
                MsgBox("Failed to load Database !!!" & vbCr & ex.Message, MsgBoxStyle.Critical, "Error Message")
                Connex.closeConnection()
                Return
            End Try
            Connex.closeConnection()
        End Sub
  • In quale linea ti dà l'errore esattamente? (togli momentaneamente le try catch per capirlo)

    E il messaggio è proprio quello “Nome Stringa” o no?  

    Il campo “Società” è di tipo testo?

  • 07/11/2023 - Arkam ha scritto:


    Dim sName = Reader.GetString("Società")

    Non mi pare che il metodo GetString() accetti una stringa come parametro: leggi la documentazione del metodo.

  • 07/11/2023 - Alka ha scritto:


    07/11/2023 - Arkam ha scritto:


    Dim sName = Reader.GetString("Società")

    Non mi pare che il metodo GetString() accetti una stringa come parametro: leggi la documentazione del metodo.

    Sì, mi era sfuggito

    A questo punto, se ti serve solo una colonna, perché le leggi tutte? Basta

    omando.CommandText = "SELECT Società FROM " & Nome_Tabella 
    ...
    		Dim sName As String = Reader.GetString(0)
  • 07/11/2023 - oregon ha scritto:


    07/11/2023 - Alka ha scritto:


    07/11/2023 - Arkam ha scritto:


    Dim sName = Reader.GetString("Società")

    Non mi pare che il metodo GetString() accetti una stringa come parametro: leggi la documentazione del metodo.

    Sì, mi era sfuggito

    A questo punto, se ti serve solo una colonna, perché le leggi tutte? Basta

    omando.CommandText = "SELECT Società FROM " & Nome_Tabella 
    ...
    		Dim sName As String = Reader.GetString(0)

    grazie mille per il consiglio, adesso funziona tutto.Grazie Grazie Grazie

  • E a cosa servono questi due oggetti?

    Dim Adatta As New OleDbDataAdapter()
    Dim Tabella As New DataTable()
  • Perchè nel form ho anche un Datagridview

  • No, sono inutili in quanto inutilizzati. Questo succede quando si copia codice senza comprenderlo.

  • Nel post che ho pubblicato ho caricato parte di codice e non tutto quello del progetto è normale che risultino inutilizzate.

  • Mah! Comunque, se vuoi, puoi popolare il Combobox  più semplicemente popolando la DataTable direttamente dal DataReader  (metodo Load) senza scorrere le singole righe e poi assegnare la DataTable alla proprietà Datasource del ComboBox

    Tabella.Load(Reader)
    ComboBox1.DataSource = Tabella
    ComboBox1.ValueMember = …
    ComboBox1.DisplayMember = “Società”
  • ????Grazie per il consiglio, più tardi proverò 

Devi accedere o registrarti per scrivere nel forum
12 risposte