Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 29
  1. #1

    [VB.NET] combobox da tabella access

    Ciao, sto lavorando su un database access che collego al progetto tramite OleDbConnection:

    Con questo codice riempo una DataGrid:

    DataSet11.Clear()
    OleDbDataAdapter1.Fill(DataSet11)


    Con questo invece eseguo un comando in sql:

    OleDbCommand1.CommandText = ("...comando sql...")
    OleDbConnection1.Open()
    OleDbCommand1.ExecuteNonQuery()
    OleDbConnection1.Close()

    Ma come faccio ad inserire i record di un determinato campo di una tabella in una combobox?

    P.S. - Mi scuso per l'omissione del titolo della precedente discussione

  2. #2

    Re: [VB.NET] combobox da tabella access

    Originariamente inviato da daniele50
    Ciao, sto lavorando su un database access che collego al progetto tramite OleDbConnection:

    Con questo codice riempo una DataGrid:

    DataSet11.Clear()
    OleDbDataAdapter1.Fill(DataSet11)


    Con questo invece eseguo un comando in sql:

    OleDbCommand1.CommandText = ("...comando sql...")
    OleDbConnection1.Open()
    OleDbCommand1.ExecuteNonQuery()
    OleDbConnection1.Close()

    Ma come faccio ad inserire i record di un determinato campo di una tabella in una combobox?

    P.S. - Mi scuso per l'omissione del titolo della precedente discussione
    intanto se la query non è una query di modifica non devi fare | .ExecuteNonQuery() | ma oledbcommand.executeReader
    poi fai
    codice:
    dim drw as DataRow
    dim dRead as oleDbDataReader
    dRead = OleDbCommand1.ExecuteReader()
    
    for each dr in dRead.rows
    combobox.items.add(dr(NUMERO COLONNA CHE TI INTERESSA)
    next
    ma a mio parere hai sbagliato approccio, se sai usare i dataset, sono miglori. Nel senso che ad ogni modo non ha senso lavorare in modalità connessa(oledbreader+oledbcommand) e un po in modalità disconnessa (dataset + dataadapter). utilizzando i dataset puoi fare:
    codice:
    combobox.DataSource = dataset2.Tables("TABELLA INTERESSATA")
                combobox.DisplayMember = dataset2.Tables("TABELLA INTERESSATA").Columns("COLONNA INTERESSATA").ToString
    -----
    101110101011101111100000
    -----

  3. #3
    Ho provato:

    code:
    dim drw as DataRow
    dim dRead as oleDbDataReader
    dRead = OleDbCommand1.ExecuteReader()

    for each dr in dRead.rows
    combobox.items.add(dr(NUMERO COLONNA CHE TI INTERESSA)
    next

    il comando dRead.rows non viene accettato, l'oggetto di tipo OleDbDataReader non ha quella proprietà...


    Poi ho provato:

    ComboBox1.DataSource = DataSet11.Tables("tabgenere")
    ComboBox1.DisplayMember = DataSet11.Tables("tabgenere").Columns("genere").To String

    Sparisce la scritta ComboBox1 dalla combo box ma non ho nessun campo nell'elenco...

  4. #4
    Ho risolto (mancava il Fill):

    OleDbConnection1.Open()
    OleDbDataAdapter1.Fill(DataSet11)
    OleDbConnection1.Close()
    ComboBox1.DataSource = DataSet11.Tables("tabgiorni")
    ComboBox1.DisplayMember = DataSet11.Tables("tabgiorni").Columns("giorno").To String

    La tabella "tabgiorni" ha due campi: id(contatore), giorno(string). Hora nella combo ho l'elenco dei giorni, come posso abbinare la scelta del giorni con il rispettivo id?

  5. #5
    Mi spiego meglio, questa è la tabella:

    +----+-----------+
    | id | giorno |
    +----+-----------+
    | 0 | |
    | 1 | Lunedì |
    | 2 | Martedì |
    | 3 | Mercoledì |
    | 4 | Giovedì |
    | 5 | Venerdì |
    | 6 | Sabato |
    | 7 | Domanica |
    +----+-----------+

    Nella combobx ho l'elenco dei giorni, quando seleziono il giorno voglio che in una textbox appaia l'id che corrisponde al giorno scelto. :master:

  6. #6
    allo stesso modo in cui ai popolato la proprietà displayMembr popoli la proprietà valuemember ATTENZIONE deve appartenere allo stesso dataset o per lo meno essere collegato per associazione 1-1 a ciò che metti nel displaymember.
    codice:
    OleDbConnection1.Open() 
    OleDbDataAdapter1.Fill(DataSet11,"NOMETABINTERNA")' qui ti consiglio di mettere sempre il nome tabella. 
    OleDbConnection1.Close() 
    ComboBox1.DataSource = DataSet11.Tables("tabgiorni") 
    ComboBox1.DisplayMember = DataSet11.Tables("tabgiorni").Columns("giorno").ToString
    'qui la nuova proprietà
    combobox1.valuemember = DataSet11.Tables("tabgiorni").Columns("ID").ToString
    dopo di che per gestire il value...

    nella combobox leggerai il nome dei giorni, e quando vai a prendere la selezione prenderai "combobox1.selectedvalue"
    se hai problemi.. sono qui
    -----
    101110101011101111100000
    -----

  7. #7
    Innanzi tutti ti ringrazio!

    Ho modificato il codice come da tuo esempio ma mi esce questo errore:


    Eccezione non gestita di tipo "System.InvalidCastException" in microsoft.visualbasic.dll

    Informazioni aggiuntive: Cast non valido dal tipo 'DataRowView' al tipo 'String'.


    Come posso convertire DataRowView in String?

  8. #8
    esattamente da in che riga ti da l'errore? mi potresti postare il codice che hai fatto così verifico che tu l'abbia modificato a dovere? cmq datarowview.tostring()
    -----
    101110101011101111100000
    -----

  9. #9
    Ecco il codice:

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As
    System.EventArgs) Handles MyBase.Load
    OleDbConnection1.Open()
    OleDbDataAdapter1.Fill(DataSet11)
    OleDbConnection1.Close()
    ComboBox1.DataSource = DataSet11.Tables("tabgiorni")
    ComboBox1.DisplayMember =
    DataSet11.Tables("tabgiorni").Columns("giorno").To String
    ComboBox1.ValueMember =
    DataSet11.Tables("tabgiorni").Columns("ID").ToStri ng
    End Sub

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As
    Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    --> TextBox1.Text = ComboBox1.SelectedValue
    End Sub

    --> L'errore che ho postato nel messaggio precedente viene dato sulla riga indicata con la freccia...
    Ciao

  10. #10
    Originariamente inviato da daniele50
    Ecco il codice:

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As
    System.EventArgs) Handles MyBase.Load
    OleDbConnection1.Open()
    OleDbDataAdapter1.Fill(DataSet11)
    OleDbConnection1.Close()
    ComboBox1.DataSource = DataSet11.Tables("tabgiorni")
    ComboBox1.DisplayMember =
    DataSet11.Tables("tabgiorni").Columns("giorno").To String
    ComboBox1.ValueMember =
    DataSet11.Tables("tabgiorni").Columns("ID").ToStri ng
    End Sub

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As
    Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    --> TextBox1.Text = ComboBox1.SelectedValue
    End Sub

    --> L'errore che ho postato nel messaggio precedente viene dato sulla riga indicata con la freccia...
    Ciao
    codice:
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As
      System.EventArgs) Handles MyBase.Load
    'OleDbConnection1.Open()
    OleDbDataAdapter1.Fill(DataSet11,oledbConnection1)'è la stessa cosa se usi una singola tabella
    'OleDbConnection1.Close()
    ComboBox1.DataSource = DataSet11.Tables("tabgiorni")
    ComboBox1.DisplayMember =
      DataSet11.Tables("tabgiorni").Columns("giorno").ToString
    ComboBox1.ValueMember =
      DataSet11.Tables("tabgiorni").Columns("ID").ToString
    End Sub
    
    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As
     Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    --> TextBox1.Text = cstr(ComboBox1.SelectedValue)
    End Sub
    prova così.
    -----
    101110101011101111100000
    -----

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.