Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Vb.net: combobox. visualizzare in combox dati da database access e dat...
lunedì 10 giugno 2013 - 20.58
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
VB.NET
|
.NET 4.0
|
Visual Studio 2010
Praticone
Profilo
| Newbie
3
messaggi | Data Invio:
lun 10 giu 2013 - 20:58
ciao a tutti, sono nuovo e alle prime armi con vb 2010. Avrei bisogno di aiuto per risolvere un problema. Ho creato un piccolo programmino per archiviare i dati anagrafici dei clienti (database access). Ho una tabella anagrafica con tutti i dati (cognome, nome, indirizzo, provincia, comune, località e cap). I dati relativi all'indirizzo vengono visualizzati in combobox per permettere la modifica con alcune query che mi filtrano i valori :
Private Sub ProvinciaComboBox_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ProvinciaComboBox.SelectedIndexChanged
Dim prov As String = ProvinciaComboBox.Text
Me.ComuneTableAdapter.FillByProvincia(Me.PortafoglioDataSet.Comune, prov)
End Sub
e così via per filtrare il comune in base alla provincia, la località in base al comune e via. Ho associato i dati al database che viene salvato regolarmente. Il problema si presenta quando riapro la maschera perché nel campo località mi viene mostrato il primo valore utile della query e non il valore che ho selezionato e salvato.
Come dovrei fare per visualizzare i dati del database all'apertura della maschera e far si che solo agendo sul combobox vengano modificati i dati?
Scusate la lungaggine ma non riesco a trovare altra soluzione che creare una sottomaschera per modificare i dati dell'indirizzo e preferirei evitarla se possibile. Un grazie anticipato a tutti
AntCiar
Profilo
| Expert
936
messaggi | Data Invio:
mar 11 giu 2013 - 08:53
Ciao.
Dipende come hai valorizzato la combobox. Se hai passato la tabella al DataSource della combo e poi hai impostato il DisplayMember e il ValueMember allora dopo aver terminato il caricamento dati della combo basta che richiami
me.ComboComume.SelectedValue = xxxxx dove al posto di xxxxx ci passi il valore del comune che hai salvato nel tuo record che devi mostrare (presumo sia un ID)
Se invece hai caricato la combo con gli Items allora devi fare me.ComboComume.SelectedItem = "xxxxxxx" dove al posto delle xxxxxx ci devi passare lo stesso testo che hai caricato nella combo.
Cristian Barca
Praticone
Profilo
| Newbie
3
messaggi | Data Invio:
mar 11 giu 2013 - 15:11
grazie per l'aiuto, ma non ho capito dove dovrei inserire il codice. Il mio Problema sta nel fatto che una volta salvati i dati, le query si resettano e viene visualizzato nei combo il primo valore utile, mentre negli altri campi come la professione rimane corretto. Ho aggiunto dei text box per vedere cosa risultava per i campi "indirizzo" nel database dopo il salvataggio e quelli sono corretti, ma i campi combobox corrispondenti si resettano. Ti posto un immagine dei campi per farti vedere lo schema con le proprietà impostate.
Grazie per l'aiuto che potrai darmi
1280x1024
365Kb
AntCiar
Profilo
| Expert
936
messaggi | Data Invio:
mar 11 giu 2013 - 15:18
Dalla foto ho visto che hai usato il DataBinding per l'associazione dei controlli.
E' strano che si comporti in quel modo. Se dici che dopo il salvataggio ricarica la combo, vuol dire che in qualche modo scateni qualche evento a cascata che fa si che la combo "resetti" il suo datasource e quindi in automatico si riposiziona sul primo valore.
di solito il riposizionarsi sul primo valore capita quando tenta in automatico di selezionare un valore passato nel Binding che non esiste più nella lista.
Cristian Barca
Praticone
Profilo
| Newbie
3
messaggi | Data Invio:
mer 12 giu 2013 - 07:57
scusa se approfitto di te... "l'innesco" potrebbe essere dovuto ad un errore nelle query? ti spiego: ho notato che appena salvo mi viene resettato il combo cap al primo valore , e poi quello località inserendo la località corrispondente e a volte il comune, mentre nei textbox e quindi nel db rimangono quelli corretti. Penso di aver fatto qualche cavolata lì. ti spiego come sono strutturati:
tabella provincia (una sola colonna con tutte le provincie)
tabella comune (due colonne: provincia - comune)
tabella località (due colonne: comune - località)
tabella cap (era quella originale e riporta tutti i campi pr-comune-località-cap)
ogni tabella è filtrata con query tipo:
SELECT Località
FROM Località
WHERE (Comune = ?)
ORDER BY Località
mentre la sub per ogni cambiamento è:
Private Sub ProvinciaComboBox_SelectedValueChanged(sender As System.Object, e As System.EventArgs) Handles ProvinciaComboBox.SelectedValueChanged
Dim prov As String = ProvinciaComboBox.Text
Me.ComuneTableAdapter.FillByProvincia(Me.PortafoglioDataSet.Comune, prov)
End Sub
ad eccezione del campo CAP per il quale non ho inserito nulla.
Solo ProvinciaTableAdapter è caricato nel LOAD.
Sono sicuro che si potrebbe trovare di meglio ma è il massimo che sono riuscito a fare.
Scusa se mi sono dilungato ma sono più pratico che teorico e non riuscirei a spiegarmi tecnicamente.
Grazie ancora
risolto. E' un comportamento tipico di _SelectedValueChanged. E' bastato usare TextChanged e funziona tutto tranquillamente.
Torna su
Stanze Forum
Elenco Threads
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 !