Visualizzare nella combobox nome della squadra e non ID

Forum di discussioni su VB.Net (Visual Basic .Net)

Moderatore: Toki

Regole del forum
Leggi: IProgrammatori.it - Regolamento Forum
salvatore81
New Entry
Messaggi: 7
Iscritto il: 13 apr 2018, 12:38

Visualizzare nella combobox nome della squadra e non ID

Messaggioda salvatore81 » 13 apr 2018, 13:14

Premesso che sono un neofita e grazie al vostro forum sto imparando qualcosina ma mi sono bloccato su di un punto.

Ho un progettino con 3 form: Home, Elenco, Scheda_Giocatore

ed un database chiamato "dbgiocatori.mdb" avente 2 tabelle;
la prima GIOCATORI e la seconda SQUADRE.

Il progammino parte con la form Home dove è presente un menu con tre voci Giocatori, Tebelle e Stampe (queste ultime due non sono programmate di proposito).

Cliccando sulla prima voce Giocatori, mi appare la form Elenco dove è presente un DatadridView1 al quale è agganciato la tabella GIOCATORI composta dal cognome, nome, data di nascita, paese, squadra.

Aperta la form Giocatore e cliccando su di un record a caso del Datadridview1 il programma mi chiude questa form e mi apre la terza form ossia Scheda_Giocatore dove mi riporta tutti i dati del singolo giocatore.

Ora vengo al problema io vorrei che nella combobox di quest'utima form non mi venisse visualizzato l'id semplicemente pescato nel Datadridview1 ma il nome della squadra presente nella tabella SQUADRE associato all'Id della tabella GIOCATORI in modo tale si possano vedere anche le altre squadre presenti scorrendo la combo.


Nella speranza di essere stato chiaro ringrazio nuovamente per il tempo che qualcuno mi dedicherà.

Download del programmino: https://we.tl/sNQRt5zGny

Salvatore
MaxMag64
Utente Semi-Senior
Messaggi: 110
Iscritto il: 19 nov 2017, 19:33

Re: Visualizzare nella combobox nome della squadra e non ID

Messaggioda MaxMag64 » 13 apr 2018, 13:39

Posta il codice di come popoli la ComboBox
salvatore81
New Entry
Messaggi: 7
Iscritto il: 13 apr 2018, 12:38

Re: Visualizzare nella combobox nome della squadra e non ID

Messaggioda salvatore81 » 13 apr 2018, 14:01

Questo è il codice della form Elenco che poi trasferisce i dati alla form Scheda_Giocatore dove vi è la squadrecombobox

Public Class Elenco

Private Sub Elenco_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'TODO: questa riga di codice carica i dati nella tabella 'DbgiocatoriDataSet.GIOCATORI'. È possibile spostarla o rimuoverla se necessario.
Me.GIOCATORITableAdapter.Fill(Me.DbgiocatoriDataSet.GIOCATORI)
'TODO: questa riga di codice carica i dati nella tabella 'DbgiocatoriDataSet.SQUADRE'. È possibile spostarla o rimuoverla se necessario.
Me.SQUADRETableAdapter.Fill(Me.DbgiocatoriDataSet.SQUADRE)

End Sub

Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
Dim formgiocatore As New Scheda_Giocatore

formgiocatore.cognometxt.Text = DataGridView1.CurrentRow.Cells(0).Value.ToString()
formgiocatore.nometxt.Text = DataGridView1.CurrentRow.Cells(1).Value.ToString()
formgiocatore.datanascitatxt.Text = DataGridView1.CurrentRow.Cells(2).Value.ToString()
formgiocatore.paesetxt.Text = DataGridView1.CurrentRow.Cells(3).Value.ToString()
formgiocatore.squadrecombobox.Text = DataGridView1.CurrentRow.Cells(4).Value.ToString()

Me.Dispose()
formgiocatore.ShowDialog()
End Sub
End Class
MaxMag64
Utente Semi-Senior
Messaggi: 110
Iscritto il: 19 nov 2017, 19:33

Re: Visualizzare nella combobox nome della squadra e non ID

Messaggioda MaxMag64 » 13 apr 2018, 14:11

Si ma ti avevo chiesto semplicemente il codice di come popoli la ComboBox, non di come apri la form Scheda_Giocatore.
Se ho ben capito il tuo problema è sulla combo.
salvatore81
New Entry
Messaggi: 7
Iscritto il: 13 apr 2018, 12:38

Re: Visualizzare nella combobox nome della squadra e non ID

Messaggioda salvatore81 » 13 apr 2018, 14:14

La combo non la so popolare ma il dato mi arriva direttamente da

formgiocatore.squadrecombobox.Text = DataGridView1.CurrentRow.Cells(4).Value.ToString()

che ovviamente non è il nome della squadra ma è l'id ad esso associata.
MaxMag64
Utente Semi-Senior
Messaggi: 110
Iscritto il: 19 nov 2017, 19:33

Re: Visualizzare nella combobox nome della squadra e non ID

Messaggioda MaxMag64 » 13 apr 2018, 14:19

In questo modo ti popola solo il valore della riga corrente. Hai una colonna del DataGridView1 che comprenda il nome della squadra?
salvatore81
New Entry
Messaggi: 7
Iscritto il: 13 apr 2018, 12:38

Re: Visualizzare nella combobox nome della squadra e non ID

Messaggioda salvatore81 » 13 apr 2018, 14:28

Nel Datadridview1 ho una colonna dove c'è un id che indica id della squadra. Il nome descrittivo della squadra è nella tabella in Access SQUADRE dove è associato anche il ID (che è lo stesso della colonna di sopra). Ora io dovrei correlare le due tabelle e cioè ad esempio quando l'ID = 6 mi deve visualizzare nella combobox il nome Roma e questa cosa non so fare.
Sarebbe molto più facile se tu potessi provare questo programmino al seguente link: https://we.tl/sNQRt5zGny
MaxMag64
Utente Semi-Senior
Messaggi: 110
Iscritto il: 19 nov 2017, 19:33

Re: Visualizzare nella combobox nome della squadra e non ID

Messaggioda MaxMag64 » 13 apr 2018, 14:52

Bene, possibili soluzioni.
1) nella query fai una join con la tabella squadre e accanto all'id metti pure il nome della squadra.
2) Quando clicki sulla riga esegui la query sulla tabella squadre ricercando il nome per id.
3) Fai una query che popoli una datatable con id e nomi e l'associ direttamente al combo, poi tramite l'id del datagridvew ricerchi la squadra nel combo.
Non c'è bisogno del progetto, dipende solo dalla strada che vuoi percorrere.
P.s. Usare una combo per essere popolata solo con un nome ha poco senso...ti basterebbe una label o una txtbox...
salvatore81
New Entry
Messaggi: 7
Iscritto il: 13 apr 2018, 12:38

Re: Visualizzare nella combobox nome della squadra e non ID

Messaggioda salvatore81 » 13 apr 2018, 16:59

Saresti così gentile da farmi i 3 esempi? Queste benedette query non vogliono proprio entrarmi in testa. Ti ringrazio molto.
P.S. Per la questione della combo l'ho inserita perché quel form in futuro deve servire anche a registrare.
MaxMag64
Utente Semi-Senior
Messaggi: 110
Iscritto il: 19 nov 2017, 19:33

Re: Visualizzare nella combobox nome della squadra e non ID

Messaggioda MaxMag64 » 13 apr 2018, 18:11

Riesci a popolare un DataTable con semplicemente i campi IDSquadra e NomeSquadra?
In caso affermativo dai un'occhiata a questo:

Codice: Seleziona tutto

TuoCombo.DataSource = DataTableSquadre; TuoCombo.DisplayMember = DataTableSquadre.Colums[1].ColumnName; TuoCombo.ValueMember = DataTableSquadre.Columns[0].ColumnName;

Per evidenziare poi la squadra nel combo:

Codice: Seleziona tutto

TuoCombo.SelectedValue=Qui metti l'id della cella della datagridview che stai selezionando;

L'esempio è in c# ma puoi riadattarlo benissimo a vb.net
salvatore81
New Entry
Messaggi: 7
Iscritto il: 13 apr 2018, 12:38

Re: Visualizzare nella combobox nome della squadra e non ID

Messaggioda salvatore81 » 15 apr 2018, 01:21

Salve Max,
non riesco proprio a capire. Ti posto i 3 form, se puoi ti chiedo gentilmente se mi puoi inserire il codice mancante.
_______________________________________________________________________________
'form HOME

Public Class Home

Private Sub GiocatoriToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GiocatoriToolStripMenuItem.Click
Elenco.ShowDialog()

End Sub

Private Sub Home_Load(sender As Object, e As EventArgs) Handles MyBase.Load

End Sub
End Class
_______________________________________________________________________________
'form ELENCO

Public Class Elenco

Private Sub Elenco_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'TODO: questa riga di codice carica i dati nella tabella 'DbgiocatoriDataSet.GIOCATORI'. È possibile spostarla o rimuoverla se necessario.
Me.GIOCATORITableAdapter.Fill(Me.DbgiocatoriDataSet.GIOCATORI)


End Sub

Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
Dim formgiocatore As New Scheda_Giocatore

formgiocatore.cognometxt.Text = DataGridView1.CurrentRow.Cells(0).Value.ToString()
formgiocatore.nometxt.Text = DataGridView1.CurrentRow.Cells(1).Value.ToString()
formgiocatore.datanascitatxt.Text = DataGridView1.CurrentRow.Cells(2).Value.ToString()
formgiocatore.paesetxt.Text = DataGridView1.CurrentRow.Cells(3).Value.ToString()
formgiocatore.squadrecombobox.Text = DataGridView1.CurrentRow.Cells(4).Value.ToString()


Me.Dispose()
formgiocatore.ShowDialog()
End Sub
End Class
____________________________________________________________________________________
'form SCHEDA GIOCATORE

Public Class Scheda_Giocatore

Private Sub Scheda_Giocatore_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'TODO: questa riga di codice carica i dati nella tabella 'DbgiocatoriDataSet.GIOCATORI'. È possibile spostarla o rimuoverla se necessario.
Me.GIOCATORITableAdapter.Fill(Me.DbgiocatoriDataSet.GIOCATORI)
'TODO: questa riga di codice carica i dati nella tabella 'DbgiocatoriDataSet.SQUADRE'. È possibile spostarla o rimuoverla se necessario.
Me.SQUADRETableAdapter.Fill(Me.DbgiocatoriDataSet.SQUADRE)

End Sub
End Class
MaxMag64
Utente Semi-Senior
Messaggi: 110
Iscritto il: 19 nov 2017, 19:33

Re: Visualizzare nella combobox nome della squadra e non ID

Messaggioda MaxMag64 » 15 apr 2018, 11:38

Ciao Salvatore81, prova la seguente soluzione:
La query costruita dal wizard del DataAdapter, (tasto destro su data adapter ---> Configura)
sostituiscila con la seguente:

Codice: Seleziona tutto

SELECT GIOCATORI.ID, GIOCATORI.COGNOME, GIOCATORI.NOME, GIOCATORI.[DATA DI NASCITA], GIOCATORI.PAESE, GIOCATORI.SQUADRA, SQUADRE.SQUADRA AS NomeSquadra
FROM (GIOCATORI INNER JOIN SQUADRE ON GIOCATORI.ID = SQUADRE.ID)

Nel DataGridView aggiungi ovviamente una colonna(sarà la n. 5) associata al campo NomeSquadra.
Sostituisci poi

Codice: Seleziona tutto

formgiocatore.squadrecombobox.Text = DataGridView1.CurrentRow.Cells(4).Value.ToString()

con

Codice: Seleziona tutto

formgiocatore.squadrecombobox.Text = DataGridView1.CurrentRow.Cells(5).Value.ToString()

La query che ti ho riportato sopra la puoi creare anche da solo, (tanto per prenderci la mano) con il tasto generatore query del Wizard, aggiungendo la tabella Squadre ed includendo il campo Squadra.
salvatore81
New Entry
Messaggi: 7
Iscritto il: 13 apr 2018, 12:38

Re: Visualizzare nella combobox nome della squadra e non ID

Messaggioda salvatore81 » 15 apr 2018, 22:19

Max sei il mio Dio!!! Grazie infinite ho fatto nottate incredibili e grazie a te ci sono arrivato.

Ora mi esce nella combobox la squadra associata al calciatore e va benissimo ho solo dovuto modificare la query da

FROM (GIOCATORI INNER JOIN SQUADRE ON GIOCATORI.ID = SQUADRE.ID)

in

FROM (GIOCATORI INNER JOIN SQUADRE ON GIOCATORI.SQUADRA = SQUADRE.ID)

perchè prima mi associava la squadra non all'id squadra ma al giocatore.

E se volessi vedere nella combo a discesa anche tutte le squadre presenti in quella tabella come potrei fare??

P.S. se passi per Caserta e provincia ti devo un po di mozzarella DOP campana. :-)
MaxMag64
Utente Semi-Senior
Messaggi: 110
Iscritto il: 19 nov 2017, 19:33

Re: Visualizzare nella combobox nome della squadra e non ID

Messaggioda MaxMag64 » 16 apr 2018, 08:57

salvatore81 ha scritto: 'TODO: questa riga di codice carica i dati nella tabella 'DbgiocatoriDataSet.SQUADRE'. È possibile spostarla o rimuoverla se necessario.
Me.SQUADRETableAdapter.Fill(Me.DbgiocatoriDataSet.SQUADRE)

End Sub
End Class

Dal Codice che hai postato qua "SQUADRE" dovrebbe essere la DataTable presente nel tuo dataset con ID e NomeSquadra.
Se è così ti è sufficiente:

Codice: Seleziona tutto

TuaCombo.DataSource=DbgiocatoriDataSet.Tables("SQUADRE");

Poi come indicato sopra nel mio intervento imposti le proprietà ValueMember e DisplayMember della combo alle colonne che desideri.

Torna a “VB.NET”

Chi c’è in linea

Visitano il forum: Nessuno e 11 ospiti