public void btnEdit_Click(object sender, System.EventArgs e)
		{

			GISADataset.SFRDAvaliacaoRelRow row = null;
			ListViewItem item = null;
			try
			{
				//Get the selected row
				item = lstVwInforRelacionada.SelectedItems[0];
				row = (GISADataset.SFRDAvaliacaoRelRow)item.Tag;
			}
			catch (ArgumentOutOfRangeException)
			{
				//If there is no item selected then no item is edited
				return;
			}
			FormComparacao f = new FormComparacao();
			f.LoadData(true);

			f.Text = f.Text + " - Edição";
			f.Densidade = row.TipoDensidadeRow;
			f.SubDensidade = row.TipoSubDensidadeRow;
			f.Ponderacao = row.Ponderacao;
			// Utilizar a primeira relação encontrada uma vez que na realidade serão adicionadas todas as relações deste nível.
			IDbConnection conn = GisaDataSetHelper.GetConnection();
			try
			{
				conn.Open();
				DBAbstractDataLayer.DataAccessRules.NivelRule.Current.LoadNivelParents(row.NivelRow.ID, GisaDataSetHelper.GetInstance(), conn);
			}
			finally
			{
				conn.Close();
			}

			f.RelacaoHierarquica = row.NivelRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica()[0];
            f.cnList.trVwLocalizacao.ExpandAll();
			if (f.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
			{
				//Update information in the data row

				try
				{
					row.Densidade = f.Densidade.ID;
				}
				catch (Exception)
				{
					MessageBox.Show("FIXME: densidade não especificada (!)");
				}
				try
				{
					row.SubDensidade = f.SubDensidade.ID;
				}
				catch (Exception)
				{
					MessageBox.Show("FIXME: subdensidade não especificada (!)");
				}
				row.Ponderacao = f.Ponderacao;

				//Update information in the list
				string titulo = row.NivelRow.GetNivelDesignadoRows()[0].Designacao;
				item.SubItems[0].Text = titulo;
				item.SubItems[1].Text = row.TipoDensidadeRow.Designacao;
				item.SubItems[2].Text = row.TipoSubDensidadeRow.Designacao;
				item.SubItems[3].Text = System.Convert.ToString(row.Ponderacao);
			}
		}
		private void AddInformacaoRelacionada()
		{
			FormComparacao f = new FormComparacao();
			f.Text = f.Text + " - Adição";
			f.LoadData(false);
            
			if (f.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
			{
				GISADataset.SFRDAvaliacaoRelRow newRow = null;
				newRow = GisaDataSetHelper.GetInstance().SFRDAvaliacaoRel.NewSFRDAvaliacaoRelRow();
				newRow.IDFRDBase = CurrentFRDBase.ID;

				try
				{
					newRow.IDNivel = f.RelacaoHierarquica.ID;
				}
				catch (Exception)
				{
					MessageBox.Show("Nível não especificado (!)");
					Trace.WriteLine("Nível não especificado (!)");
					newRow["IDNivel"] = DBNull.Value;
				}

				if (newRow.SFRDAvaliacaoRow.FRDBaseRow.IDNivel == newRow.IDNivel)
				{
					MessageBox.Show("Não são permitidas as relações de um nível consigo próprio.", f.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
					return;
				}

				try
				{
					newRow.Densidade = f.Densidade.ID;
				}
				catch (Exception)
				{
					MessageBox.Show("Densidade não especificada (!)");
					Trace.WriteLine("Densidade não especificada (!)");
					newRow["Densidade"] = DBNull.Value;
				}
				try
				{
					newRow.SubDensidade = f.SubDensidade.ID;
				}
				catch (Exception)
				{
					MessageBox.Show("Subdensidade não especificada (!)");
					Trace.WriteLine("Subdensidade não especificada (!)");
				}
				newRow.Ponderacao = f.Ponderacao;
				try
				{
					GisaDataSetHelper.GetInstance().SFRDAvaliacaoRel.AddSFRDAvaliacaoRelRow(newRow);
				}
				catch (ConstraintException)
				{
					MessageBox.Show("Não é permitida a existência de relações duplicadas", f.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning);
					return;
				}
				AddRowToLstVwInforRelacionada(newRow);
			}
		}