private void Button3_Click(object sender, EventArgs e)
        {
            NpgsqlConnection  con  = null;
            NpgsqlTransaction tran = null;

            try {
                if (this.oneZone.Count == 0)
                {
                    throw new Exception("zone non generer");
                }
                else if (this.sezaZone.Count == 0)
                {
                    throw new Exception("seza non generer");
                }
                else
                {
                    con = new DbConnect().connect();

                    int    lng        = (int)this.numericUpDown2.Value;
                    int    larg       = (int)this.numericUpDown3.Value;
                    int    espacement = (int)this.numericUpDown4.Value;
                    string nextval    = new Util <int>().getNextval("seq_zone", con);

                    Zone zonInsert = new Zone(nextval, this.textBox4.Text, this.esp.IdEspace, decimal.Parse(this.textBox5.Text), lng, larg, espacement, oneZone.ToArray());
                    tran = con.BeginTransaction();
                    zonInsert.insertTran(tran);
                    for (int i = 0; i < this.sezaZone.Count; i++)
                    {
                        this.sezaZone.ElementAt(i).IdZone = nextval;
                        this.sezaZone.ElementAt(i).insertTran(tran);
                    }
                    tran.Commit();
                    Button2_Click(sender, e);
                    this.comboBox4.Items.Clear();
                    getZones(con);
                    this.textBox4.Text = "";
                    this.textBox5.Text = "";
                }
            }
            catch (Exception ex) {
                if (tran != null)
                {
                    tran.Rollback();
                }
                this.textBox6.Text = ex.Message;
            }
            finally {
                if (con != null)
                {
                    con.Close();
                }
            }
        }