Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    24

    C# collegamento campo combobox a query

    Ciao ragazzi, voglio realizzare per pura voglia di imparare una piccola applicazione che crei dei grafici sulla base di alcune query su ms access. Sto usando MS Chart control e visual studio 2010 express

    Il problema è questo....
    ho una tabella access con colonne data, Serie1, Serie2, Serie3

    Ho un combobox in cui posso scegliere i valori Serie1, Serie2, Serie3

    Al momento genero il grafico in modo statico al lancio dell'applicazione

    codice:
    string mySelectQuery = "SELECT Data,Serie1 FROM PRODUZIONE;";
    Voglio invece creare il grafico sulla base di quello che scelgo nel combobox...e poi legarlo ad un evento di aggiornamento del combobox

    In pratica è possibile passare come parametro la colonna di dati che voglio visualizzare?
    Spero di essermi spiegato bene
    Vi ringrazio

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Ne abbiamo parlato altre volte.

    Fai una ricerca su combobox e utente: gibra

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    24
    Ciao,
    ho fatto la ricerca che mi hai detto. Ho trovato molte discussioni ma non mi sembrava ci fosse qualcosa di simile. Forse sto interpretando male io il problema.
    Provo a spiegarmi.

    In tutti gli esempi(compresi quelli che ho cercato in rete) non ho mai trovato delle query in cui fosse possibile passare dei parametri che decidano quale colonna deve essere restituita ma solo parametri sui dati stessi

    Ad esempio

    SELECT Data,Serie1 FROM PRODUZIONE WHERE Data='03/08/2011';

    così il sistema restituisce le due colonne con le sole righe che corrispondono alla condizione.

    Ma io voglio parametrizzare la scelta della colonna...cioè a monte.

    Siccome i valori della combobox sono 10 sto anche pensando di fare 10 diverse query ma forse ci sono soluzioni diverse.

    Penso sia chiaro (sopratutto da come mi spiego, padronanza del linguaggio=0 ) che sono proprio alle prime armi.

    Vi ringrazio anticpatamente

  4. #4
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Avevo capito che la tua necessità fosse quella di leggere più colonne in base all'elemento selezionato del combobox, quindi ti mostravo come aggiungere più colonne ad un combobox.

    Adesso mi sembra invece di capire che ti basta costruire a run-time una SELECT dinamica, in base all'elemento (campo) selezionato nel combobox.

    Se ad esempio cambia solo il campo Serie<n> puoi usare l'evento SelectedIndexChanged:

    codice:
    string campoSerie = "";
    String sSQL = "";
    
    if (combo1.SelectedIndex == 0)
        {campoSerie = "serie1";}
    else if (combo1.SelectedIndex == 1)
        {combo1= "serie2";}
    else if (cboQuery.SelectedIndex == 2)
        {combo1= "serie3";}
    
    sSQL= "SELECT Data, " + campoSerie + " FROM PRODUZIONE WHERE Data='03/08/2011'";
    Se gli elementi del combo contengono già i nomi dei campi, allora è ancora più semplice:

    codice:
    sSQL=  "SELECT Data, " + cboQuery.SelectedItem   + " FROM PRODUZIONE WHERE Data='03/08/2011'";

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    24
    Ok già è tanto che sia una cosa possibile...

    Comunque ho provato..ho anche semplificato la query per fare un passo per volta...

    ecco il codice
    codice:
    string fileNameString = "DatabaseProduzione.mdb"; string myConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileNameString; string mySelectQuery = "SELECT Data,"+comboBox2.SelectedItem+" FROM PRODUZIONE ;"; OleDbConnection myConnection = new OleDbConnection(myConnectionString); OleDbCommand myCommand = new OleDbCommand(mySelectQuery, myConnection); myCommand.Connection.Open(); OleDbDataReader myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection); chart1.Series["Default"].Points.DataBindXY(myReader, "Data", myReader, comboBox2.SelectedItem); myReader.Close(); myConnection.Close();
    Il problema è che mi da un errore in debug alla riga
    OleDbDataReader myReader = myCommand.ExecuteReader(CommandBehavior.CloseConne ction);
    con questo messaggio "Nessun valore specificato per alcuni parametri necessari."


    Domani sera comunque ho più tempo per fare più prove.....grazie intanto

  6. #6

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    24
    Ci provo eh...scusa...

    codice:
    string fileNameString = "DatabaseProduzione.mdb";
    string myConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileNameString;
    string mySelectQuery = "SELECT Data,"+comboBox2.SelectedItem+" FROM PRODUZIONE ;";
    OleDbConnection myConnection = new OleDbConnection(myConnectionString);
    OleDbCommand myCommand = new OleDbCommand(mySelectQuery, myConnection);
    myCommand.Connection.Open();
    OleDbDataReader myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
    chart1.Series["Default"].Points.DataBindXY(myReader, "Data", myReader, comboBox2.SelectedItem);
    myReader.Close();
    myConnection.Close();

  8. #8
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Infatti... Cosa c'entra

    OleDbDataReader myReader = myCommand.ExecuteReader(CommandBehavior.CloseConne ction);


    ???

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    24
    Sinceramente ho copiato da un esempio...se lo commento non riesco proprio a compilare

  10. #10
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da renga_it
    Sinceramente ho copiato da un esempio...se lo commento non riesco proprio a compilare
    Non basta copiare, occorre soprattutto studiare...

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 © 2026 vBulletin Solutions, Inc. All rights reserved.