HyugaPaolo

ADONET

Mar 7th, 2018
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.99 KB | None | 0 0
  1. //Classe
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7.  
  8. using System.Data;
  9. using System.Data.OleDb;
  10.  
  11. namespace StudentiVoti
  12. {
  13.     public class DAL
  14.     {
  15.         private OleDbConnection _conn;
  16.  
  17.  
  18.         public DAL()
  19.         {
  20.             string cns = BuildConnectionString();
  21.             _conn = new OleDbConnection(cns);
  22.             _conn.Open();
  23.         }
  24.  
  25.         // dovrebbe essere letto da file di configurazione
  26.         private string BuildConnectionString()
  27.         {
  28.             string dbDirPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
  29.  
  30.             string cns = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + dbDirPath + @"\StudentiVoti.accdb";
  31.  
  32.             return cns;
  33.         }
  34.  
  35.         public DataTable StudentiElenco()
  36.         {
  37.             DataTable tbl = new DataTable();
  38.  
  39.             string sql = "SELECT IDStudente, Cognome + ' ' + Nome AS CognomeNome FROM Studenti ORDER BY Cognome,Nome";
  40.             OleDbDataAdapter da = new OleDbDataAdapter(sql, _conn);
  41.             da.Fill(tbl);
  42.             //tbl.Load(datareader cmd.executereader)
  43.             return tbl;
  44.         }
  45.         // cbo.DataSource = tbl
  46.         // cbo.DisplayMember = "CognomeNome" // deve essere nome colonna
  47.         // cbo.ValueMember = "IDStudente" // deve essere nome colonna
  48.         // per leggerlo int IDStud = (int) cbo.SelectedValue
  49.  
  50.  
  51.         // es CognomeFiltro="Ros"  => LIKE 'Ros%'   (ricordarsi escape "'")
  52.         // CognomeFiltro.Replace("'","''")
  53.         public DataTable StudentiElenco(string CognomeFiltro)
  54.         {
  55.             DataTable tbl = new DataTable();
  56.  
  57.             string sql = "SELECT IDStudente, Cognome, Nome, DataNascita FROM Studenti " +
  58.                 " WHERE Cognome LIKE ? " +
  59.                 " ORDER BY Cognome,Nome";
  60.             OleDbCommand cmd = _conn.CreateCommand();
  61.             cmd.CommandText = sql;
  62.             cmd.Parameters.AddWithValue("Cognome", CognomeFiltro.Replace("*","%") + "%");
  63.  
  64.             OleDbDataAdapter da = new OleDbDataAdapter(cmd);
  65.             da.Fill(tbl);
  66.            
  67.             return tbl;
  68.         }
  69.  
  70.         public DataTable MaterieElenco()
  71.         {
  72.             DataTable tbl = new DataTable();
  73.  
  74.             string sql = "SELECT IDMateria, Nome FROM Materie ORDER BY Nome";
  75.             OleDbDataAdapter da = new OleDbDataAdapter(sql, _conn);
  76.             da.Fill(tbl);
  77.             //tbl.Load(datareader cmd.executereader)
  78.             return tbl;
  79.         }
  80.  
  81.         // data la foreign key (selezionata via combo, grid, ...) => voti
  82.         public DataTable VotiElenco(int IDStudente)
  83.         {
  84.             DataTable tbl = new DataTable();
  85.  
  86.             /*
  87.             // attenzione a concatenare le stringhe
  88.             string sql = "SELECT V.IDVoto, M.Nome AS Materia, V.Data, V.Tipo, V.Voto" +
  89.                          " FROM Voti AS V INNER JOIN Materie AS M ON V.IDMateria=M.IDMateria" +
  90.                          " WHERE V.IDStudente=" + IDStudente;
  91.             OleDbDataAdapter da = new OleDbDataAdapter(sql, _conn);
  92.             da.Fill(tbl);
  93.             */
  94.             string sql = "SELECT V.IDVoto, M.Nome AS Materia, V.Data, V.Tipo, V.Voto" +
  95.                                      " FROM Voti AS V INNER JOIN Materie AS M ON V.IDMateria=M.IDMateria" +
  96.                                      " WHERE V.IDStudente=?";
  97.             OleDbCommand cmd = _conn.CreateCommand();
  98.             cmd.CommandText=sql;
  99.             cmd.Parameters.AddWithValue("IDStudente", IDStudente);
  100.  
  101.             //OleDbDataAdapter da = new OleDbDataAdapter(cmd);
  102.             //da.Fill(tbl);
  103.             // oppure
  104.             OleDbDataReader dr = cmd.ExecuteReader();
  105.             tbl.Load(dr);
  106.  
  107.             return tbl;
  108.         }
  109.  
  110.  
  111.         public bool VotoAggiungi(int IDStudente, int IDMateria, DateTime Data, double Voto, string Tipo)
  112.         {
  113.             string sql = "INSERT INTO Voti(IDStudente, IDMateria, Data, Voto, Tipo)" +
  114.                          " VALUES(?,?,?,?,?)";
  115.             OleDbCommand cmd = _conn.CreateCommand();
  116.             cmd.CommandText = sql;
  117.             cmd.Parameters.AddWithValue("IDStudente", IDStudente);
  118.             cmd.Parameters.AddWithValue("IDMateria", IDMateria);
  119.             cmd.Parameters.AddWithValue("Data", Data).OleDbType=OleDbType.Date;
  120.             cmd.Parameters.AddWithValue("Voto", Voto);
  121.             cmd.Parameters.AddWithValue("Tipo", Tipo);
  122.  
  123.  
  124.             int nr;
  125.             nr = cmd.ExecuteNonQuery();
  126.             return (nr > 0);
  127.         }
  128.     }
  129. }
  130.  
  131. //classe form
  132. using System;
  133. using System.Collections.Generic;
  134. using System.ComponentModel;
  135. using System.Data;
  136. using System.Drawing;
  137. using System.Linq;
  138. using System.Text;
  139. using System.Threading.Tasks;
  140. using System.Windows.Forms;
  141.  
  142. namespace StudentiVoti
  143. {
  144.     public partial class FormMain : Form
  145.     {
  146.         private DAL _dal;
  147.  
  148.         public FormMain()
  149.         {
  150.             InitializeComponent();
  151.         }
  152.  
  153.         private void FormMain_Load(object sender, EventArgs e)
  154.         {
  155.             _dal = new DAL();
  156.  
  157.             cboStudenti.DataSource = _dal.StudentiElenco();
  158.             cboStudenti.DisplayMember = "CognomeNome";
  159.             cboStudenti.ValueMember = "IDStudente";
  160.  
  161.  
  162.             cboStudenteIns.DataSource = _dal.StudentiElenco();
  163.             cboStudenteIns.DisplayMember = "CognomeNome";
  164.             cboStudenteIns.ValueMember = "IDStudente";
  165.  
  166.             cboMateriaIns.DataSource = _dal.MaterieElenco();
  167.             cboMateriaIns.DisplayMember = "Nome";
  168.             cboMateriaIns.ValueMember = "IDMateria";
  169.         }
  170.  
  171.         private void btnVisualizza_Click(object sender, EventArgs e)
  172.         {
  173.             int selID;
  174.             selID = (int)cboStudenti.SelectedValue;
  175.             //MessageBox.Show("Studente ID:" + selID);
  176.  
  177.             dgvVoti.DataSource = _dal.VotiElenco(selID);
  178.  
  179.             dgvVoti.Columns["IDVoto"].Visible = false;
  180.         }
  181.  
  182.         private void btnCercaStudente_Click(object sender, EventArgs e)
  183.         {
  184.             dgvStudenti.DataSource = _dal.StudentiElenco(txtCognomeFiltro.Text);
  185.             //dgvStudenti.Columns["IDStudente"].Visible = false;
  186.         }
  187.  
  188.         private void txtCognomeFiltro_KeyPress(object sender, KeyPressEventArgs e)
  189.         {
  190.             if (e.KeyChar == '\r')
  191.                 btnCercaStudente_Click(sender, e);
  192.         }
  193.  
  194.         private void btnVisualizzaVoti_Click(object sender, EventArgs e)
  195.         {
  196.             int selID = 0;
  197.             if (dgvStudenti.CurrentRow != null)
  198.                 selID = (int)(dgvStudenti.CurrentRow.DataBoundItem as DataRowView)["IDStudente"];
  199.  
  200.             dgvVotiBis.DataSource = _dal.VotiElenco(selID);
  201.         }
  202.  
  203.         private void dgvStudenti_CurrentCellChanged(object sender, EventArgs e)
  204.         {
  205.             btnVisualizzaVoti_Click(sender, e);
  206.         }
  207.  
  208.         private void btnAggiungiVoto_Click(object sender, EventArgs e)
  209.         {
  210.             int IDStudente, IDMateria;
  211.             double Voto;
  212.             DateTime Data;
  213.             string TipoVoto;
  214.  
  215.             IDStudente = (int)cboStudenteIns.SelectedValue;
  216.             IDMateria = (int)cboMateriaIns.SelectedValue;
  217.             //Voto = double.Parse(txtVotoIns.Text);
  218.             if(!(double.TryParse(txtVotoIns.Text, out Voto) && Voto>=1 && Voto<=10))
  219.             {
  220.                 MessageBox.Show("Errore formato voto", "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error);
  221.                 return;
  222.             }
  223.             Data = dtpDataIns.Value;
  224.  
  225.             TipoVoto = "";
  226.             if (rbTipoVotoS.Checked) TipoVoto = "S";
  227.             else if (rbTipoVotoO.Checked) TipoVoto = "O";
  228.             else if (rbTipoVotoP.Checked) TipoVoto = "P";
  229.             else if (rbTipoVotoG.Checked) TipoVoto = "G";
  230.  
  231.             bool ok = _dal.VotoAggiungi(IDStudente, IDMateria, Data, Voto, TipoVoto);
  232.             if (ok)
  233.                 MessageBox.Show("Voto aggiunto");
  234.             else
  235.                 MessageBox.Show("Errore");
  236.         }
  237.     }
  238. }
Advertisement
Add Comment
Please, Sign In to add comment