Torna al Thread

using System; using System.Data.OleDb; using System.Transactions; public class Prove { private bool InserisciFattura(DateTime date, int year, string description) { // variabili di lavoro int? maxProgressivo = 1; bool res = false; // inizio la transazione e faccio in modo che ogni comando sia sotto di essa using (TransactionScope transactionScope = new TransactionScope(TransactionScopeOption.Required)) { // istanzio la connessione using (OleDbConnection conn = new OleDbConnection(TuaConnectionString)) { // apro la connessione conn.Open(); // ricavo il valore del massimo progressivo using (OleDbCommand cmd = new OleDbCommand("SELECT MAX(N_Fatt) AS MassimoProgressivo FROM Fatture WHERE fatt_year = @fatt_year", conn)) { try { cmd.Parameters.AddWithValue("@fatt_year", year); // se tutto va bene ricavo il progressivo maxProgressivo = (int?)cmd.ExecuteScalar(); // se l'esecuzione non torna nulla metto 1, altrimenti incremento il massimo progressivo letto if (maxProgressivo == null) maxProgressivo = 1; else maxProgressivo++; } catch (Exception) { throw new Exception("Errore durante la lettura a database"); } } // a questo punto ho il progressivo, qualunque esso sia, passo all'inserimento using (OleDbCommand cmd = new OleDbCommand("INSERT INTO Fatture (Fatt_date, Fatt_description, Fatt_number, Fatt_year) VALUES (@fatt_date, @fatt_description, @fatt_number, @fatt_year)", conn)) { try { cmd.Parameters.AddWithValue("@fatt_date", date); cmd.Parameters.AddWithValue("@fatt_description", description); cmd.Parameters.AddWithValue("@fatt_number", maxProgressivo); cmd.Parameters.AddWithValue("@fatt_year", year); // inserisco cmd.ExecuteNonQuery(); // segno che è andata tutto bene res = true; } catch (Exception) { // segno che è andata male res = false; } } conn.Close(); } transactionScope.Complete(); } return res; } }
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5