Note: Forums will be making significant UX changes to address key usability improvements surrounding search, discoverability and navigation. To learn more about these changes please visit the announcement which can be found HERE.
[VB NET] problemi con Combobox e database access

Unanswered [VB NET] problemi con Combobox e database access

  • giovedì 5 gennaio 2012 11:06
     
      Contiene codice

    Salve ho un problema che non riesco proprio a risolvere. Ho due tabelle  access Agenti e Commissioni. La prima è formata da IDAgente, Nome e Cognome; la seconda tabella è formata da IDComm, IDAgente ec...... Le tabelle sono relazionate su access a 1 a molti ovvero ogni commissione può avere un solo agente e un agente può avere più commissioni.

    ora ho creato un form Commissione dove andrò ad impostare l'applicazione per la creazione delle commissione. Ho eseguito la connessione guidata del database e da origine dati sposto sul form i vari campi tra cui la combobox IDAgenti.

    Problema.

    Vorrei che nella combobox comparissero il cognome dell'agente e non id.

    ho fatto varie prove con problemi diversi che non sto a dirvi perchè vari e si farebbe confusione

    il problema più frequente è quello che una volta impostato il displaymember e il valuemember , avviando il debug nel momento che vado a scegliere il cognome dalla combo l'applicazione si blocca lasciando il testo della combo evidenziato in blu e non mi permette di fare altro

     

    La mia domanda è qual'è la giusta procedura da fare nel mio caso

     

    Grazie

     IDagenteComboBox.DisplayMember = "Cognome"
            IDagenteComboBox.ValueMember = "IDAgente"
            IDagenteComboBox.DataSource = DB_EasyCommDataSet.Agenti
    
            IDagenteComboBox.DataBindings.Add("SelectedValue", DB_EasyCommDataSet.Commissione, "IDagente")

     

     



    • Modificato KestrelITA giovedì 5 gennaio 2012 11:08
    •  

Tutte le risposte

  • giovedì 5 gennaio 2012 11:49
     
      Contiene codice

    A titolo di prova, puoi provare a commentare l'istruzione

    IDagenteComboBox.DataBindings.Add("SelectedValue", DB_EasyCommDataSet.Commissione, "IDagente")
    

    E verificare se anche così l'applicazione si blocca?


    Marco Minerva [MCPD], http://blogs.ugidotnet.org/marcom
  • giovedì 5 gennaio 2012 16:19
     
      Contiene codice

    A titolo di prova, puoi provare a commentare l'istruzione

     

    IDagenteComboBox.DataBindings.Add("SelectedValue", DB_EasyCommDataSet.Commissione, "IDagente")
    

    E verificare se anche così l'applicazione si blocca?

     


    Marco Minerva [MCPD], http://blogs.ugidotnet.org/marcom
    Scusa ma non ho capito cosa vuoi dire.
  • giovedì 5 gennaio 2012 18:18
     
      Contiene codice

    Hai detto che quando selezioni un cognome nella Combo, l'applicazione si blocca... Ti dicevo di provare a commentare l'istruzione

    IDagenteComboBox.DataBindings.Add("SelectedValue", DB_EasyCommDataSet.Commissione, "IDagente")
    
    

    e di verificare se, senza di essa, l'applicazione non si blocca più. Un test del genere serve ad isolare la causa del problema.


    Marco Minerva [MCPD], http://blogs.ugidotnet.org/marcom
  • lunedì 9 gennaio 2012 11:33
     
     
    anche commentando quella righa il problema rimane.
  • lunedì 9 gennaio 2012 11:53
     
     
    Per caso hai definito un gestore per l'evento IDagenteComboBox_SelectedIndexChanged?
    Marco Minerva [MCPD], http://blogs.ugidotnet.org/marcom
  • lunedì 9 gennaio 2012 12:04
     
      Contiene codice

    No non ho definito nessun evento. Di seguito il codice completo del form

    Public Class FrmCommissione
    
        Private Sub CommissioneBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CommissioneBindingNavigatorSaveItem.Click
            Me.Validate()
            Me.CommissioneBindingSource.EndEdit()
            Me.TableAdapterManager.UpdateAll(Me.DB_EasyCommDataSet)
    
        End Sub
    
        Private Sub FrmCommissione_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'TODO: questa riga di codice carica i dati nella tabella 'DB_EasyCommDataSet.Agenti'. È possibile spostarla o rimuoverla se necessario.
            Me.AgentiTableAdapter.Fill(Me.DB_EasyCommDataSet.Agenti)
            'TODO: questa riga di codice carica i dati nella tabella 'DB_EasyCommDataSet.Commissione'. È possibile spostarla o rimuoverla se necessario.
            Me.CommissioneTableAdapter.Fill(Me.DB_EasyCommDataSet.Commissione)
    
            IDagenteComboBox.DataSource = DB_EasyCommDataSet.Agenti
            IDagenteComboBox.ValueMember = "IDAgente"
            IDagenteComboBox.DisplayMember = "Cognome"
            'IDagenteComboBox.DataBindings.Add("SelectedValue", DB_EasyCommDataSet.Commissione, "IDAgente")
    
        End Sub
    End Class


     


    • Modificato KestrelITA lunedì 9 gennaio 2012 12:05
    •  
  • lunedì 9 gennaio 2012 12:43
     
     

    Molto strano. Puoi provare a sostituire la ComboBox con una ListBox? Ti sembrerà una cosa banale, ma questo test serve per capire qual è l'oggetto che causa il problema.


    Marco Minerva [MCPD], http://blogs.ugidotnet.org/marcom
  • lunedì 9 gennaio 2012 15:36
     
     
    con una listbox funziona. mi fa andare avanti e salvare i record. Non capisco dove sta l'errore. Vuoi che ti posto tutto il progetto con l'archivio?
  • lunedì 9 gennaio 2012 15:40
     
     

    Infatti ti avevo chiesto di fare questo test proprio perché il problema mi sembra davvero strano :-)

    Metti pure il progetto su SkyDrive o su DropBox e dammi il link, lo scaricherò e ci darò un'occhiata.


    Marco Minerva [MCPD], http://blogs.ugidotnet.org/marcom
  • lunedì 9 gennaio 2012 15:40
     
     
    Cosa strana forse ti può essere utile: ho rimesso una combobox, stesse impostazioni di prima ho solo cambiato il nome da list a combox e ora quando avvio il debug nella combo vedo gli ID e non i cognomi, mentre se ne creo un nuovo record nella combo vedo i cognomi ed ovviamente rimane bloccato li perchè rimane evidenziato il cognome selezionato e non va avanti.
    • Modificato KestrelITA lunedì 9 gennaio 2012 15:42
    •  
  • lunedì 9 gennaio 2012 15:49
     
     
    Sempre più misterioso. Carica tutto online e cerco di darci un'occhiata in giornata!
    Marco Minerva [MCPD], http://blogs.ugidotnet.org/marcom
  • lunedì 9 gennaio 2012 16:08
     
     
  • lunedì 9 gennaio 2012 16:53
     
     
    Grazie, ti farò sapere al più presto!
    Marco Minerva [MCPD], http://blogs.ugidotnet.org/marcom
  • lunedì 9 gennaio 2012 18:13
     
     
    Grazie a te, sei tu che stai aiutando me. :)
  • lunedì 16 gennaio 2012 09:51
     
     
    Nessuno è riuscito a capire l'errore? sto impazzendo
  • lunedì 16 gennaio 2012 23:32
     
     

    Ciao!

    Scusa se ti rispondo solo ora, la risposta che ti ho scritto diversi giorni fa non è stata inviata correttamente perché in quell'occasione ho avuto diversi problemi di accesso al forum. Colpa mia che non ho verificato :-(

    Ho analizzato il file che hai spedito. Non è che l'applicazione si blocca quando selezioni un agente. Il problema è che non è più possibile spostare il focus dalla ComboBox, perché ci sono problemi con il bind dei dati.

    Hai provato a ridefinire il DataSet, e gli altri oggetti che rappresentano il collegamento con la fonte dati? Magari c'è qualche problema con le loro impostazioni. Magari prova proprio a ripartire dalla definizione della sorgente dati collegata con IDagenteComboBox.


    Marco Minerva [MCPD]
    Blog: http://blogs.ugidotnet.org/marcom
    Twitter: @marcominerva
  • giovedì 2 febbraio 2012 15:18
    Proprietario
     
     

    Ciao KestrelITA,

    Potresti gentilmente aggiornarci sul thread? Saresti riuscito ad avanzare con il tuo progetto?


    Irina Turcu - Microsoft

    Tips & Tricks – Forum MSDN

    Questo contenuto è distribuito “as is” e non implica alcuna responsabilità da parte di Microsoft. L'azienda offre questo servizio gratuitamente, allo scopo di aiutare gli utenti e approfondire la loro conoscenza dei prodotti e tecnologie Microsoft.

    LinkedIn