+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

ComboBox che crea problemi

  1. #1
    Maverick03 non è in linea Scolaretto
    Post
    74
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ciao a tutti, ho questo problema:
    In un mio programma di gestione spese, utilizzo 2 ComboBox per l'inserimento dei dati. Le combo vengono popolate con dei file TXT, ma la cosa non mi piace e quindi ho modificato il programma inserendo nel database(tipo mdf) 2 nuove tabelle(DESCRIZIONI e DETTAGLI) e quindi ho collegato le combo a "Origine Dati" e "Visualizza Membro" di ogni tabella per popolarle con gli elementi richiesti.
    Fin qui tutto bene, ma gli elementi presenti nelle combo ho bisogno di selezionarli per l'inserimento dei nuovi record e fino ad ora utilizzavo
        Private Sub ComboBox1_SelectedValueChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedValueChanged
            DESCRIZIONETB.Text = ComboBox1.SelectedItem
        End Sub
    
    idem per i DETTAGLI
    Adesso con la lettura degli elementi dalle tabelle, l'evento ComboBox1_SelectedValueChanged mi genera l'errore
    $exception	{"Cast non valido dal tipo 'DataRowView' al tipo 'String'."}	System.InvalidCastException
    
    in fase di caricamento del programma
    Mi aiutate a capire dove sta l'inghippo? Perché quando utilizzavo i file txt le combo si popolavano senza andare a generare l'evento SelectedValueChanged?
    Grazie

  2. #2
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,504
    Blogs
    5
    Like Inviati  
    6
    Like Ricevuti  
    35
    Sposto in vbnet dato che non è un problema per sql server
    ℹ️ Leggi di più su AntonioG ...

  3. #3
    Maverick03 non è in linea Scolaretto
    Post
    74
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ok, chiedo scusa per l'errore e resto in attesa di suggerimenti

  4. #4
    patel45 non è in linea Scolaretto
    Post
    473
    Like Inviati  
    0
    Like Ricevuti  
    0
    prova con
        Private Sub ComboBox1_SelectedValueChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedValueChanged
            DESCRIZIONETB.Text = ComboBox1.SelectedItem.Tostring
        End Sub
    

  5. #5
    Sgrubak non è in linea Scribacchino
    Post
    606
    Like Inviati  
    12
    Like Ricevuti  
    14
    Anche io tempo addietro son diventato matto dietro ad un errore simile.
    Parti dal presupposto che, la collezione Items dell'oggetto ComboBox, può ospitare qualsiasi tipo di oggetto. Quando la popolavi con i file TXT, inserivi degli oggetti di tipo String e tutto funzionava, mentre adesso la popoli con delle DataRowView, per le quali non si può fare un cast implicito al tipo String.
    Se hai configurato la ComboBox tramite la finestra di progettazione della form (il triangolino a verso destra che appare sulla ComboBox), assicurati di aver puntato al BindingSource anche la voce "Valore selezionato". Poi al posto di usare la proprietà "SelectedItem" che ti restituisce una DataRowView, usi "SelectedValue" che ritorna il valore cella DataRowView che tu hai scelto in fase di progettazione.
    Dovresti cavarti le castagne dal fuoco. Con me funzionò.

  6. #6
    Dev-01 non è in linea Scribacchino
    Post
    540
    Like Inviati  
    2
    Like Ricevuti  
    0
    E' possibile associare agli elementi di una combobox intere classi (fra cui anche Datarow).

    Generalmente si predispone, ove e qualora manchi o quando si desideri ottenere un particolare formato non standard (leggi 'relativo ad un solo campo'), un metodo contestuale convenzionalmente denominato 'ToString' che fornisca la stringa richiesta.

    Nel tuo caso la discriminazione sul dato da visualizzare viene espressa tramite l'utilizzo del '.Datamember' della combobox i cui items restano associati ad una datarow nonostante la visualizzazione di un solo campo: ogni riga della combobox contiene l'intera datarow.

    In teoria (e per quanto relativamente sconsigliabile) potresti sfruttare le suddette proprietà per tenere in memoria e recuperare tutte le informazioni relative ad uno specifico oggetto.

    Una corretta procedura potrebbe prevedere che tu assegni la selezione ad una datarow creata ad-hoc e successivamente discrimini il campo utile per assegnarlo come più ti conviene.

  7. #7
    patel45 non è in linea Scolaretto
    Post
    473
    Like Inviati  
    0
    Like Ricevuti  
    0
    mostra il codice con cui popoli il combobox

  8. #8
    Maverick03 non è in linea Scolaretto
    Post
    74
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ringrazio per tutti i consigli ricevuti che proverò a utilizzare, se non altro per bagaglio di esperienza, nel frattempo ho trovato questa soluzione che funziona perfettamente e che posto per eventuali commenti
    conn.Open()
            Dim comando = New SqlCommand("select * from DESCRIZIONI", conn)
            Dim dr As SqlDataReader = comando.ExecuteReader()
            While (dr.Read())
                ComboBox1.Items.Add(dr.GetString(1))
            End While
            dr.Close()
    

  9. #9
    Maverick03 non è in linea Scolaretto
    Post
    74
    Like Inviati  
    0
    Like Ricevuti  
    0
    Anche la soluzione proposta da Sgrubak è perfettamente funzionante e quindi 2 risultati validi per lo stesso problema.
    Grazie ancora a tutti, a risentirci per altri futuri problemi.

    Maverick03

  10. #10
    Dev-01 non è in linea Scribacchino
    Post
    540
    Like Inviati  
    2
    Like Ricevuti  
    0
    "select * from DESCRIZIONI"
    
    L'operatore '*' impone all'engine di selezionare tutte le colonne e tutte le righe della tabella descrizioni.

    Con quest'operazione prelievi anche i dati che non ti servono, impieghi più tempo e occupi maggiori risorse.

    Per ottimizzare il tutto dovresti specificare direttamente il nome della colonna d'interesse (o delle colonne qualora dovesse esserti utile recuperare l'identificativo della riga o altre informazioni utili ad effettuare successive operazioni).

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. ComboBox che crea problemi
    Da Maverick03 nel forum Microsoft SQL Server
    Risposte: 1
    Ultimo Post: 09-04-2018, 13:23
  2. Problemi tra combobox e subform
    Da AlterEgo768 nel forum Microsoft Access
    Risposte: 6
    Ultimo Post: 01-09-2012, 11:53
  3. 2 Problemi con le combobox
    Da Daniele62 nel forum Visual Basic .Net
    Risposte: 2
    Ultimo Post: 10-11-2009, 13:49
  4. Problemi Listview,combobox
    Da Juaro nel forum Visual Basic 6
    Risposte: 4
    Ultimo Post: 01-04-2005, 18:31
  5. e’ sempre microsoft che crea problemi!
    Da albertonissa nel forum Microsoft Windows
    Risposte: 2
    Ultimo Post: 30-09-2003, 15:17