Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C#] Problema caricamento dati in una combo box da un db access

    Ciao a tutti,
    è un paio di giorni che cerco di risolcvere questo problema ma non trovo soluzione.
    sto sviluppando (almeno ci provo) una piccola applicazione in C# (MS Visual c# .NET) con un db in access 2007 collegato.
    Ho bisogno di una combo box che mi faccia da filtro per visualizzare dei dati.
    Pur avendo fato varie prove, nella combo box non riesco a visualizzare niente. Vi posto il codice così magari potete dirmi dove sbaglio:

    public void caricaComboAree()
    {
    string sQuery = "select IDArea, Descrizione from Area";
    if (Conn.State != ConnectionState.Open)
    Conn.Open();
    OleDbCommand CmdAree = new OleDbCommand();
    CmdAree.CommandText = sQuery;
    CmdAree.CommandType = CommandType.Text;
    OleDbDataAdapter AdptrAree = new OleDbDataAdapter();

    CmdAree.Connection = Conn;
    DataTable TableArea = new DataTable("Area");
    comboBox1.DataSource = TableArea;
    AdptrAree.Fill(TableArea);
    Conn.Close();
    comboBox1.ValueMember = "IDArea";
    comboBox1.DisplayMember = "Descrizione";
    }

    La connessione è stata creata come oggetto e funziona in quanto la uso ache per altri controlli.
    Non so più dove guardare e non sono riuscita neanche a trovare una piccola guida che mi permette di utilizzare le opzioni dell'oggetto combo box per impostrare la raccolta dei dati.

    Grazie, mary
    Mary

  2. #2
    Prima di tutto, inserisci un punto di debug (F9) sulla riga dove passi la DataTable come DataSource all' interno della ComboBox e controlla quante rows sono state create.
    Molto probabilmente i problemi sono due:
    [list=1][*]La DataTable e' vuota e quindi la ComboBox non ti fa vedere niente perche' non ci sono dati[*]La DataTable e' popolata ma le stringhe che usi per passare DisplayMember e DataMemeber non sono giuste[/list=1]

  3. #3
    Ciao, intanto grazie per la risposta.
    Ho fatto come hai detto tu ed ho messo un BP in corrispondenza della riga

    comboBox1.DataSource = TableArea;

    e successivamente ho aggiunnto questa riga per visualizzare il numero di righe della tabella ma avevo cmq un problema con il fill, dopo quella riga si bloccava e non faceva più niente.
    Creando dinamicamente la tabella, mancavano un po' di cosine, ho risolto nel seguente modo:

    string sQuery = "select IDArea, Descrizione from Area";
    Controllo_connessione();
    OleDbCommand CmdAree = new OleDbCommand();
    CmdAree.CommandText = sQuery;
    CmdAree.CommandType = CommandType.Text;
    OleDbDataAdapter AdptrAree = new OleDbDataAdapter();
    DataTable TableArea = new DataTable("Area");
    TableArea.Columns.Add("IDArea");
    TableArea.Columns.Add("Descrizione");

    CmdAree.Connection = Conn;
    AdptrAree.SelectCommand = CmdAree;
    AdptrAree.Fill(TableArea);
    dsAree.Tables.Clear();
    dsAree.Tables.Add(TableArea);
    comboBox1.DataSource = dsAree.Tables["Area"];
    Conn.Close();
    comboBox1.ValueMember = dsAree.Tables["Area"].Columns["IDArea"].ToString();
    comboBox1.DisplayMember = dsAree.Tables["Area"].Columns["Descrizione"].ToString();

    Ciao, grazie
    Mary

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.