- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- Sommare valori da tabelle di database MySQL differenti in ASP.NET - C#
-
Sommare valori da tabelle di database MySQL differenti in ASP.NET - C#
Salve, dovrei sommare dei valori reperiti ognuno da una tabella differente. Ogni valore viene selezionato da una DropDown differente.
A parer mio il codice risulta corretto, probabilmente è errata l'impostazione.Posto il codice e spiego meglio:
protected void Preventivo_check_Click(object sender, EventArgs e) { //Variabili Dropdown 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; //Variabili valori float grCarta = 0; float applicazione = 0; float caldo = 0; float coloriStampa = 0; float finiture = 0; float fP = 0; float manico = 0; float plastificazione = 0; float rinforzoFondo = 0; float rilievoStampa = 0; //Grammi Carta 150 string mysqlConnectionString_150 = "server = localhost; user id = treseurusu; database = preventivatore; password = 2ahqBEx5Uy29jeBW"; using (MySqlConnection connection = new MySqlConnection(mysqlConnectionString_150)) { connection.Open(); string mySql = "SELECT * FROM prezzi_grcarta_150"; MySqlCommand cb_gr_150 = new MySqlCommand(mySql, connection); MySqlDataReader reader = cb_gr_150.ExecuteReader(); //1 if (reader.Read() && selectedIndex_00 == 1 && selectedIndex_01 == 1 && selectedIndex_02 == 1) { grCarta = (float)reader["valore_01"]; reader.Close(); connection.Close(); } //2 else if (selectedIndex_00 == 1 && selectedIndex_01 == 1 && selectedIndex_02 == 2) { grCarta = (float)reader["valore_02"]; reader.Close(); connection.Close(); } //3 else if (selectedIndex_00 == 1 && selectedIndex_01 == 1 && selectedIndex_02 == 3) { grCarta = (float)reader["valore_03"]; reader.Close(); connection.Close(); } //4 else if (selectedIndex_00 == 1 && selectedIndex_01 == 2 && selectedIndex_02 == 1) { grCarta = (float)reader["valore_04"]; reader.Close(); connection.Close(); } //5 else if (selectedIndex_00 == 1 && selectedIndex_01 == 2 && selectedIndex_02 == 2) { grCarta = (float)reader["valore_05"]; reader.Close(); connection.Close(); } //6 else if (selectedIndex_00 == 1 && selectedIndex_01 == 2 && selectedIndex_02 == 3) { grCarta = (float)reader["valore_06"]; reader.Close(); connection.Close(); } //7 else if (selectedIndex_00 == 1 && selectedIndex_01 == 3 && selectedIndex_02 == 1) { grCarta = (float)reader["valore_07"]; reader.Close(); connection.Close(); } //8 else if (selectedIndex_00 == 1 && selectedIndex_01 == 3 && selectedIndex_02 == 2) { grCarta = (float)reader["valore_08"]; reader.Close(); connection.Close(); } //9 else if (selectedIndex_00 == 1 && selectedIndex_01 == 3 && selectedIndex_02 == 3) { grCarta = (float)reader["valore_09"]; reader.Close(); connection.Close(); } //10 else if (selectedIndex_00 == 1 && selectedIndex_01 == 4 && selectedIndex_02 == 1) { grCarta = (float)reader["valore_10"]; reader.Close(); connection.Close(); } //11 else if (selectedIndex_00 == 1 && selectedIndex_01 == 4 && selectedIndex_02 == 2) { grCarta = (float)reader["valore_11"]; reader.Close(); connection.Close(); } //12 else if (selectedIndex_00 == 1 && selectedIndex_01 == 4 && selectedIndex_02 == 3) { grCarta = (float)reader["valore_12"]; reader.Close(); connection.Close(); } } //Rinforzo fondo string mysqlConnectionString_RinforzoFondo = "server = localhost; user id = treseurusu; database = preventivatore; password = 2ahqBEx5Uy29jeBW"; using (MySqlConnection connection = new MySqlConnection(mysqlConnectionString_RinforzoFondo)) { connection.Open(); string mySql = "SELECT * FROM prezzi_r_fondo"; MySqlCommand cb_r_fondo = new MySqlCommand(mySql, connection); MySqlDataReader reader = cb_r_fondo.ExecuteReader(); //1 if (reader.Read() && selectedIndex_10 == 1 && selectedIndex_01 == 1 && selectedIndex_02 == 1) { grCarta = (float)reader["valore_01"]; reader.Close(); connection.Close(); } //2 else if (selectedIndex_10 == 1 && selectedIndex_01 == 1 && selectedIndex_02 == 2) { grCarta = (float)reader["valore_02"]; reader.Close(); connection.Close(); } //3 else if (selectedIndex_10 == 1 && selectedIndex_01 == 1 && selectedIndex_02 == 3) { grCarta = (float)reader["valore_03"]; reader.Close(); connection.Close(); } //4 else if (selectedIndex_10 == 1 && selectedIndex_01 == 2 && selectedIndex_02 == 1) { grCarta = (float)reader["valore_04"]; reader.Close(); connection.Close(); } //5 else if (selectedIndex_10 == 1 && selectedIndex_01 == 2 && selectedIndex_02 == 2) { grCarta = (float)reader["valore_05"]; reader.Close(); connection.Close(); } //6 else if (selectedIndex_10 == 1 && selectedIndex_01 == 2 && selectedIndex_02 == 3) { grCarta = (float)reader["valore_06"]; reader.Close(); connection.Close(); } //7 else if (selectedIndex_10 == 1 && selectedIndex_01 == 3 && selectedIndex_02 == 1) { grCarta = (float)reader["valore_07"]; reader.Close(); connection.Close(); } //8 else if (selectedIndex_10 == 1 && selectedIndex_01 == 3 && selectedIndex_02 == 2) { grCarta = (float)reader["valore_08"]; reader.Close(); connection.Close(); } //9 else if (selectedIndex_10 == 1 && selectedIndex_01 == 3 && selectedIndex_02 == 3) { grCarta = (float)reader["valore_09"]; reader.Close(); connection.Close(); } //10 else if (selectedIndex_10 == 1 && selectedIndex_01 == 4 && selectedIndex_02 == 1) { grCarta = (float)reader["valore_10"]; reader.Close(); connection.Close(); } //11 else if (selectedIndex_10 == 1 && selectedIndex_01 == 4 && selectedIndex_02 == 2) { grCarta = (float)reader["valore_11"]; reader.Close(); connection.Close(); } //12 else if (selectedIndex_10 == 1 && selectedIndex_01 == 4 && selectedIndex_02 == 3) { grCarta = (float)reader["valore_12"]; reader.Close(); connection.Close(); } } //Risultato float result = grCarta + applicazione + caldo + coloriStampa + finiture + fP + manico + plastificazione + rinforzoFondo + rilievoStampa; Preventivo_value.Text = result.ToString(); }
In parole povere: se io seleziono un index nella DropDown grCarta mi restituisce il valore corretto, se io seleziono un index nella DropDown rinforzoFondo mi restituisce il valore corretto, se io seleziono entrambi anzi che restituirmi la somma mi restituisce il valore di rinforzoFondo.
Cosa c'è di errato?
-
Ciao trese, ad un primo sguardo veloce mi sembra che il problema stia nel fatto che la variabile grCarta sia sempre la stessa sia per "Grammi Carta 150" che per "Rinforzo Fondo".
Quindi nel secondo passaggio la variabile viene reimpostata con il valore attribuito a "Rinforzo Fondo"...Sempre che abbia capito il giro
-
Sarò sincero: sono neodiplomato e durante i compiti in classe delle materie tecniche (costruzioni, topografia, ecc.) facevo il procedimento corretto ma c'era sempre qualche errore di distrazione come in questo caso... Devo perdere questo vizio
Poi, nell' ambito della programmazione, quando qualcosa non va si cerca sempre l'errore più complesso mentre invece è una variabile posta con copia e in colla per questioni di ripetizione di codice e non modificataTi ringrazio per avermelo fatto notare, cercherò, prima di postare, di dare uno sguardo più attento al codice. Grazie ancora.
-
Ciao Trese, in realtà la cosa che salta più all'occhio, dal punto di vista della programmazione è, a mio modo di vedere, la scelta architetturale del DataBase...
In questo momento hai nel DataBase delle tabelle (io ne ho conosciute 2 dal tuo post, ma immagino ce ne siano delle altre) prezzi_grcarta_150 e **prezzi_r_fondo **che sono impostate "orizzontalmente" con una serie di valori per i quali non hai alcun riferimento per le scelte effettuate dall'utente.
Personalmente strutturerei le tabelle in un altro modo:
Faccio un esempio:
prezzi_grcarta_150
ID|grCarta|Formato|Quantita|Valore|
1 |1 |1 |1 |0.54 |
2 |1 |1 |2 |0.55 |
3 |1 |1 |3 |0.48 |
4 |1 |2 |1 |0.65 |
5 |1 |2 |2 |0.66 |
6 |1 |2 |3 |0.58 |
A questo punto nel codice ti sarebbe sufficiente fare una query del tipo:
string mySql = "SELECT * FROM prezzi_grcarta_150 WHERE grCarta = 1 AND Formato = " + selectedIndex_01 + " AND Quantita = " + selectedIndex_02;
In questo modo potresti inoltre preparare un interfaccia per configurare i prezzi qualora questi dovessero variare in funzione di nuove combinazioni di Formati e Quantità.
-
Effettivamente si, hai ragione, l'architettura del database da me costruita è dovuta alla mia poca conoscenza in materia. Quando ho iniziato questo progetto non avevo mai lavorato ne con il MySQL ne con lì' ASP.NET quindi ho avuto un po di difficolta ad organizzare il lavoro prima di metterlo in pratica.
Comunque ti ringrazio per il consiglio, lo terrò a mente per futuri progetti
-
You're welcome