Combobox e indici

martedì 08 settembre 2015 - 08.37

tigre Profilo | Junior Member

Sto usando visual basic 2010 express e ho la necessita di caricare in una combobox
un elenco di nominativi ricercati in un database.
Riesco cosi:
dopo aver effettuato l acecsso al database carico cosi:
- while rdr.read()
cmbElenco.Items.Add(rdr("cognome))

end while

come faccio ad assegnare al nominativo il codice_fiscale in modo tale che quando clicco sul nome mi compaia per
effettuare delle query su quel dipendente??

AntCiar Profilo | Expert

Ciao.
Utilizza il displayMember e il ValueMember.

Per fare ciò invece di leggere direttamente riga per riga il contenuto della tabella a database in questione, carica i dati in un oggetto datatable (cerca sul formu e trovarai degli esempi)

Una volta caricato l'oggetto DataTable, associa le proprietà displayMember e valueMember ai campi che ti interessano.

esempio:

combobox1.DisplayMember = tabDati.Column("denominazione").columnName combobox1.ValueMember= tabDati.Column("CodFiscale").columnName combobox1.DataSource = tabDati

PS: ho scritto direttamente nel forum quindi potrebbero esserci errori di sintassi nel codice scritto
Cristian Barca

tigre Profilo | Junior Member

Grazie,
ho provato cosi:

Dim stringaconn = "Provider=SQLNCLI11;Data Source = pc\sqlexpress; DATABASE=archivio;Trusted_Connection=yes"

Dim SQL As String

SQL = "SELECT NOME,CODICE_FISCALE FROM DIPENDENTI"


Dim CONNESSIONE As New OleDbConnection(stringaconn)
CONNESSIONE.Open()

Dim DATI As New OleDbDataAdapter(New OleDbCommand(SQL, CONNESSIONE))

Dim elenco As New DataTable
DATI.Fill(elenco)

cmdElenco.DataSource = elenco

cmdElenco.DisplayMember = elenco.Columns("COGNOME").ColumnName
cmdElenco.ValueMember = elenco.Columns("CODICE_FISCALE").ColumnName


System.NullReferenceException non è stata gestita
HResult=-2147467261
Message=Riferimento a un oggetto non impostato su un'istanza di oggetto.
Source=Presenze
StackTrace:

AntCiar Profilo | Expert

E' normale che ti va in errore.
La colonna "Cognome" non esiste nel datatable.

Nella tua select hai messo solo Nome e Codice_Fiscale
Cristian Barca

tigre Profilo | Junior Member

hi ragione,
i dati della comb li carico con un pulsante evento click.
nella combo nell evento click ho scritto

Msgbox (cmdElemco.selectedIndex)

succede questo
quando carico la combo con pulsante, appena finisce mi compare il messaggio 0
clicco su ok mi compare di nuovo il mesasggio 0
poi vedo i nomi nella combo
quando clicco sul nome della combo mi da con l'istruzione del messaggio mi da il numero corrispondente al record e non il codicefiscale.

invece di cmdElemco.selectedIndex che devo usare???

AntCiar Profilo | Expert

usa il SelectedValue
Cristian Barca

tigre Profilo | Junior Member

ho provato
msgbox(cmdelenco.selectedValue)

e quando clicco mi da l'errore:

Impossibile convertire l'argomento Prompt nel tipo String

tigre Profilo | Junior Member

grazie ho provato cosi e funziona
cmdelenco.displayMember= elenco.Columns("cognome").ColumnName cmdelenco.ValueMember= elenco.Columns("codicefiscale").ColumnName
ho cosi un elenco di Cognomi nella combo,
volendo inserire anche il campo nome??

ho provato cosi:.

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
ma nella combo visualizzo solo il codice fiscale

AntCiar Profilo | Expert

ciao

puoi associare solo un campo al displaymember
se vui più campi allora nella select che fai per costruirti il datatable devi concatenare i campi che ti interessano e dargli un Alias da utilizzare poi come displaymember
Cristian Barca

tigre Profilo | Junior Member

grazie provo.
ok
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5