Creare un gestionale per strutture ricettive in C# – #9 – Correzioni Bug Camere

Creare un gestionale per strutture ricettive in C# - #9 - Correzioni Bug Camere

Creare un gestionale per strutture ricettive in C# – #9 – Correzioni Bug Camere: Con questa lezione andiamo a concludere la parte relativa alle camere del nostro gestionale.

Nelle precedenti lezioni abbiamo aggiunto tutte le funzionalità fondamentali per l’inserimento delle camere del nostro gestionale.

In questa lezione andiamo a correggere un bug del nostro gestionale e andiamo ad aggiungere una funzionalità, forse non fondamentale, ma sicuramente molto comoda.

Per quanto riguarda il bug, andremo a correggere la colonna relativa al prezzo presente nel database (erroneamente impostata come FLOAT invece che DECIMAL).

Quindi vedremo come cambiare il valore di una colonna di un database senza dover ricrearlo da capo.

Mentre la funzione che andremo ad aggiungere è quella che permette di scorrere tra le varie camere tenendo aperta la schermata modifica.

In questo modo dopo aver cliccato su modifica per una camera, possiamo passare a quella successiva senza dover chiudere e riaprire la schermata di modifica.

Creare un gestionale per strutture ricettive in C# – #9 – Correzioni Bug Camere

Cambiare valore ad una colonna di un database SQL

Con i database di tipo SQL la query che permette di alterare il valore di una colonna è:

ALTER TABLE nome_tabella
ALTER COLUMN nome_colonna NUOVO_VALORE;

Quindi nel nostro caso potremo scrivere:

ALTER TABLE [tblCamere]
ALTER COLUMN [Prezzo] DECIMAL(18,2);

In questo modo andremo ad indicare che la colonna prezzo dovrà diventare DECIMAL.

I 2 numeri tra parentesi indicano la precisione e la scala.

Il primo numero (18) indica la precisione, quindi quante cifre totali dovrà avere il nostro numero, li cifre totali comprendono sia quelle prima che dopo la virgola.

Il range utilizzabile va da 1 a 38 con 18 come valore predefinito.

Il numero dopo la virgola (2) invece indica la scala, cioè il numero di cifre dopo la virgola.

Il range viene determinato dal primo valore e va da 0 al numero inserito come precisione, nel nostro esempio quindi va da 0 a 18.

Passare da un elemento ad un altro nella DataGridView senza chiudere il panel laterale

Per come avevamo impostato la schermata delle camere, abbiamo visto che cliccando sui tasti aggiungi camera e modifica camera, si apriva e chiudeva il pannello per inserire i dati.

Questo però nel caso della modifica delle camere, ci obbliga a chiuderlo e riaprirlo se vogliamo passare ad una camera diversa dalla prima selezionata.

Gli utenti potrebbero trovare utile scorrere tra le varie camere, senza dover ogni volta chiudere e riaprire il pannello.

Quindi quello che faremo sarà aggiungere un evento alla DataGridView che ci permetta di aggiornare i dati nel pannello di modifica camera ogni volta che l’utente passa ad una riga diversa.

private void dataElencoCamere_SelectionChanged(object sender, EventArgs e)
        {
            if (pnlAggiungiCamera.Visible == true)
            {
                if (btnAggiungi.Tag.ToString() == "modifica")
                {
                    CaricaDatiCameraSelezionata();
                }
            }
        }
private void CaricaDatiCameraSelezionata()
        {
            //AGGIUNTI DATI CAMERA
            txtID.Text = dataElencoCamere.Rows[dataElencoCamere.SelectedRows[0].Index].Cells[0].Value.ToString();
            txtNome.Text = dataElencoCamere.Rows[dataElencoCamere.SelectedRows[0].Index].Cells[1].Value.ToString();
            txtTipoCamera.Text = dataElencoCamere.Rows[dataElencoCamere.SelectedRows[0].Index].Cells[2].Value.ToString();
            txtPostiLetto.Value = Convert.ToInt32(dataElencoCamere.Rows[dataElencoCamere.SelectedRows[0].Index].Cells[3].Value.ToString());
            txtLettiMatrimoniali.Value = Convert.ToInt32(dataElencoCamere.Rows[dataElencoCamere.SelectedRows[0].Index].Cells[4].Value.ToString());
            txtLettiSingoli.Value = Convert.ToInt32(dataElencoCamere.Rows[dataElencoCamere.SelectedRows[0].Index].Cells[5].Value.ToString());
            txtPrezzo.Text = dataElencoCamere.Rows[dataElencoCamere.SelectedRows[0].Index].Cells[6].Value.ToString();
            if (dataElencoCamere.Rows[dataElencoCamere.SelectedRows[0].Index].Cells[7].Value.ToString() == "True")
            { chkBagnoInCamera.Checked = true; }
            else { chkBagnoInCamera.Checked = false; }
            txtNote.Text = dataElencoCamere.Rows[dataElencoCamere.SelectedRows[0].Index].Cells[8].Value.ToString();
        }

L’evento lo associamo a SelectionChanged, e quindi verrà eseguito ogni volta che cambia l’indice selezionato della DataGridView.

Ad ogni cambiamento verrà verificato se il pannello è aperto, nel caso in cui fosse aperto verifichiamo che il tag del BtnAggiungi sia impostato su “modifica” (cosa che è possibile fare anche con un singolo if).

Dopo aver verificato entrambe le condizione andiamo ad aggiornare i dati presenti nei controlli del pannello.

author avatar
Claudio Masci
Sono innanzitutto un appassionato di informatica e tecnologia in generale. Lavoro in ambito informatico da circa 16 anni, spaziando in diversi campi, andando dalla programmazione web, allo sviluppo di software, dalla grafica alla modellazione 3d ed al video editing, ho sempre voluto approfondire ogni aspetto e questo mi ha permesso di lavorare in diversi ambiti informatici.