- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- Restituire un valore dal database selezionando un determinato oggetto da una combobox
-
Non esiste un modo?
-
Scusa trese ma non mi è chiara la domanda...
Il codice che hai postato va in errore? In quale punto? Quale tecnologia stai usando?
Partiamo di qua, direi che è già abbastanza...
-
Grazie per la risposta,
Utilizzo visual studio 2015 community, ASP.NET - C#. Database phpMyAdmin.
La tabella nel database risulta:
+--+------------+-+----------+
| id | valore_01 | valore_02 |
+--+------------+-+----------+
| 1 | 0.15 | 0.20 | //Di tipo float
+--+------------+-----------+Il codice non andava in errore ma non riusciva a caricare i dati dal database, ho risolto in questo modo:
protected void Preventivo_check_Click(object sender, EventArgs e) //Preventivo _check è un button { string mysqlConnectionString = "server = localhost; user id = root; database = test; password = "; using (MySqlConnection connection = new MySqlConnection(mysqlConnectionString)) { connection.Open(); string mySql = "SELECT * FROM prezzi_grcarta_170"; MySqlCommand cb_gr_170 = new MySqlCommand(mySql, connection); MySqlDataReader reader = cb_gr_170.ExecuteReader(); int selectedIndex_00 = Gr_Carta.SelectedIndex; int selectedIndex_01 = Formato.SelectedIndex; int selectedIndex_02 = Quantità.SelectedIndex; int selectedIndex_03 = Applicazione.SelectedIndex; int selectedIndex_04 = Caldo.SelectedIndex; int selectedIndex_05 = Colori_Stampa.SelectedIndex; int selectedIndex_06 = Finiture.SelectedIndex; int selectedIndex_07 = F_P.SelectedIndex; int selectedIndex_08 = Manico.SelectedIndex; int selectedIndex_09 = Plastificazione.SelectedIndex; int selectedIndex_10 = Rinforzo_Fondo.SelectedIndex; int selectedIndex_11 = Rilievo_Stampa.SelectedIndex; //Grammi Carta (I valori che dovrebbero essere presi dal database sono di tipo float) //1 if (reader.Read() && selectedIndex_00 == 2 && selectedIndex_01 == 1 && selectedIndex_02 == 1) { Preventivo_value.Text = reader["valore_01"].ToString(); reader.Close(); connection.Close(); } //2 else if(reader.Read() && selectedIndex_00 == 2 && selectedIndex_01 == 1 && selectedIndex_02 == 2) { Preventivo_value.Text = reader["valore_02"].ToString(); //Preventivo_value è un label reader.Close(); connection.Close(); } //3 else if (reader.Read() && selectedIndex_00 == 2 && selectedIndex_01 == 1 && selectedIndex_02 == 3) { Preventivo_value.Text = reader["valore_03"].ToString(); reader.Close(); connection.Close(); } //4 else if (reader.Read() && selectedIndex_00 == 2 && selectedIndex_01 == 2 && selectedIndex_02 == 1) { Preventivo_value.Text = reader["valore_04"].ToString(); reader.Close(); connection.Close(); } //5 else if (reader.Read() && selectedIndex_00 == 2 && selectedIndex_01 == 2 && selectedIndex_02 == 2) { Preventivo_value.Text = reader["valore_05"].ToString(); reader.Close(); connection.Close(); } //6 else if (reader.Read() && selectedIndex_00 == 2 && selectedIndex_01 == 2 && selectedIndex_02 == 3) { Preventivo_value.Text = reader["valore_06"].ToString(); reader.Close(); connection.Close(); } } }
In questo modo sono riuscito a prelevare il dato "valore_01" dal database ed effettivamente mi restituisce il valore_01.
In teoria, viste le condizioni da me imposte, in base a ciò che viene selezionato nelle diverse Dropdown dovrebbe restituire un valore differente ma così non è. Ho provato a sostituire, in ordine nel codice, il valore_01 con il valore_02 ma nulla, non appare niente; viceversa ho provato a sostituire il valore_01 al valore_02 e non accade nulla. Mi rileva solamente il valore_01 impostato sull' if, pare che gli else if non funzionino o che non rilevi gli altri valori nel database.
-
Ciao Trese, ogni volta che fai un
reader.Read()
Il cursore dovrebbe posizionarsi sul prossimo elemento del DataReader, quindi al primo sei sulla prima riga della tabella, ma poi continui a spostarti di riga...
-
Sei stato gentilissimo e tempestivo, problema risolto impostando reader.Read() solamente nella prima condizione if.
Grazie per l'aiuto, mi era sfuggito il corretto funzionamento di tale funzione.
Puoi chiudere.
-
Bene, buon lavoro!!!
-
Prima di chiudere un' ultima cosa: come posso convertire la variabile reader in float?
Nel label io alla fine vorrei vedere il risultato di una somma, il label l'ho usato solamente come test nella condizione if, in realtà ci dovrei mettere una variabile che verrà sommata alle altre per restituirmi la somma nel label.
Se io imposto:
float grCarta; if (...) { grCarta = reader[""] //Impossibile convertire oggetto in float ... Probabilmente manca un cast }
Come posso? Sono alle prime armi, perdonatemi.
-
Hai 3 possibilità:
Se sei sicuro che l'elemento è un float puoi semplicemente fare unboxing del valore:
grCarta = (float)reader["valore_01"];
oppure
grCarta = float.Parse(reader["valore_01"]);
Se invece non sei sicuro del contenuto:
float result; float.TryParse(reader["valore_01"], out result); grCarta = result;
-
Ho provato con la prima opzione, sono sicuro che i valori reperiti dal database siano tutti float e per ora non mi da problemi.
Grazie davvero.
Visto quanto appena accaduto ti pregherei di non chiudere ancora il thread per eventuali delucidazioni
-
Il thread non lo chiudo, però sarebbe più opportuno aprirne uno per ogni tema... Specificando nel titolo il problema esatto.
Altrimenti gli altri utenti non ne possono trarre vantaggio immediato...
-
Ha ragione, in caso di nuovo problema aprirò un nuovo thread, grazie ancora.