private void Guardar()
        {
            if (TxtNomre.Text.Trim().Length == 0)
            {
                Ambiente.Mensaje("Debe informar el nombre");
                return;
            }
            if (TxtDescripcion.Text.Trim().Length == 0)
            {
                Ambiente.Mensaje("Debe informar la descripcion");
                return;
            }
            if (TxtQuery.Text.Trim().Length == 0)
            {
                Ambiente.Mensaje("Debe informar el query");
                return;
            }

            ProbarSql();
            if (reporteController.TestQuery(sql))
            {
                try
                {
                    #region Nuevo Reporte
                    if (modoCreate)
                    {
                        //Inicializa objetos
                        reporte.SecuenciaCifrado = reporteController.GeneraSecuencia();
                        reporte.Sql           = TxtQuery.Text.Trim();
                        reporte.Rtf           = TxtQuery.Rtf;
                        reporte.Nombre        = TxtNomre.Text.Trim();
                        reporte.Descripcion   = TxtDescripcion.Text.Trim();
                        reporte.Parametrizado = parametros.Count > 0 ? true : false;
                        ds = reporteController.GetDataSet(sql);

                        //Add data to datastore
                        stiReport.RegData("DS", "DS", ds);
                        //Fill dictionary
                        stiReport.Dictionary.Synchronize();

                        //Generar el codigo del reporte
                        reporte.Codigo = stiReport.SaveEncryptedReportToString(reporte.SecuenciaCifrado);

                        Reporte      = reporte;
                        StiReport    = stiReport;
                        DialogResult = DialogResult.OK;
                    }
                    else
                    {
                        #region Actualizar Reporte
                        reporte.Sql           = TxtQuery.Text.Trim();
                        reporte.Rtf           = TxtQuery.Rtf;
                        reporte.Nombre        = TxtNomre.Text.Trim();
                        reporte.Descripcion   = TxtDescripcion.Text.Trim();
                        reporte.Parametrizado = parametros.Count > 0 ? true : false;
                        reporte.Codigo        = stiReport.SaveEncryptedReportToString(reporte.SecuenciaCifrado);
                        if (reporteController.Update(reporte))
                        {
                            DialogResult = DialogResult.OK;
                        }
                        #endregion
                    }
                    #endregion
                }
                catch (Exception ex)
                {
                    Ambiente.Mensaje(ex.ToString());
                }
            }
            else
            {
                Ambiente.Mensaje("Proceso abortado, SQL incorrecto");
            }
        }