miércoles, 11 de septiembre de 2013

Open Radwindow o window.open Passing parameters

<telerik:RadButton ID="Imprimir" runat="server" Text="Imprimir" ButtonType="LinkButton" Image-ImageUrl ="imgs/printerOld.png" Visible="False" OnClientClicking = "openRadWindow" Height="32px" Width="32px" > </telerik:RadButton>


<script type="text/javascript">
        function openRadWindow(button, args) {
           // radopen(button.get_navigateUrl(), "Tranfer");
            window.open(button.get_navigateUrl(), "_blank", "toolbar=yes, location=no, directories=no, status=no, menubar=yes, scrollbars=yes, resizable=yes, copyhistory=yes");
            args.set_cancel(true);
        }
    </script>


 Protected Sub btnreg_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnreg.Click
        Imprimir.NavigateUrl = "frm_transf.aspx?BatNbr=" + Batnbr
End Sub


Send Mail .NET

Seguro más de uno nos hemos topado con una aplicación para enviar mails y validar al menos el formato de correo, aqui les dejo esta clase, espero les sea util.

class Email
    {

        static MailMessage _message;
        static SmtpClient _clienteSmtp;
        static Attachment _at;
        static int _puerto = 25;
        static string _user = "", _password = "";

        public static bool IsValidEmail(string email)
        {
            string expresion = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";

            if (Regex.IsMatch(email, expresion))
            {
                if (Regex.Replace(email, expresion, String.Empty).Length == 0)
                { return true; }
                else
                { return false; }
            }
            else
            { return false; }
        }

        public static void ConfigEmail(string from, string usuario, string contraseña, int puertoSalida, string smtp)
        {
            _message = new MailMessage();
            _message.From = new MailAddress(from);
            _clienteSmtp = new SmtpClient(smtp);
            _user = usuario;
            _password = contraseña;
            _clienteSmtp.Port = puertoSalida;
        }

        public static bool SendEmail(string to, string cc, string asunto, string mensaje, string ruta_archivo_adjunto)
        {

            try
            {

                _at = new Attachment(ruta_archivo_adjunto);

                _message.Attachments.Add(_at);

                _message.To.Add(to);

                _message.CC.Add(cc);

                _message.Subject = asunto;

                _message.IsBodyHtml = true; //el texto del mensaje lo pueden poner en HTML y darle formato

                _message.Body = mensaje;

                //Establesco que usare seguridad (ssl = Secure Sockets Layer)
                _clienteSmtp.EnableSsl = true;

                _clienteSmtp.UseDefaultCredentials = false;

                _clienteSmtp.Credentials = new NetworkCredential(_user, _password);

                ServicePointManager.ServerCertificateValidationCallback =
                       (s, certificate, chain, sslPolicyErrors) => true;
                _clienteSmtp.Send(_message);

                return true;

            }
            catch
            {

                try
                {
                    //Establesco que no usare seguridad ssl (por si no pudo enviarlo con ssl habilitado)
                    _clienteSmtp.EnableSsl = false;
                    _clienteSmtp.Send(_message);

                    return true;
                }
                catch
                {
                    return false;
                }

            }

        }
    }

martes, 10 de septiembre de 2013

Error: El Proveedor 'Microsoft.ACE.OLEDB.12.0' no está Registrado en del el equipo local.


Hace unos años atrás, antes de que Microsoft Office 2010, la vida era un poco más fácil para los desarrolladores:  sin embargo Office es de 32 bits, y punto, no  hay mas. 

Como saben ha sido un poco más complicado ya que con Microsoft Office 2010, los usuarios también pueden instalar una versión nativa de 64 bits de Office también.

Esto significa para nosotros que nuestros desarrollados de aplicaciones de 32 bits que utilizan un proveedor OLEDB para acceder a archivos de Excel o Access pueden no funcionar más ya que el proveedor de 32 bits no puede existir en una instalación de 64 bits de Office 2010.

En estos casos, a pesar de que el usuario tiene una instalación válida de Microsoft Office 2010 instalado en su máquina, su aplicación podría obtener un error como:
 El Proveedor 'Microsoft.ACE.OLEDB.12.0' no está Registrado en del el equipo local.

Bueno, para hacer frente a estos problemas Microsoft lanzó un instalador llamado "Microsoft Access Database Engine 2010 Redistributable". Este redistribuible proporciona una de 32 bits o una versión de 64 bits del proveedor de Microsoft OLEDB ACE que se puede descargar quí:


Posterior mente nos vamos a nuestro proyecto propiedades -> compile -> Advanced compile options -> TARGET CPU:  x86

Y con  eso debe funcionar nuestra aplicación.