sábado, 4 de julio de 2009

Agregar evento Load ASP.NET C#

Para agregar el evento Load en una página ASP.NET. En el método Page después de InitializeComponent(); se debe agregar:
Loaded
Signo +=
Luego Presionar tecla Tab (2 veces).

El resultado:

public Page()
{
InitializeComponent();
Loaded += new RoutedEventHandler(Page_Loaded);
}

void Page_Loaded(object sender, RoutedEventArgs e)
{
throw new NotImplementedException();
}

Error HTTP 404.3 - Not Found (IIS 7.5)

He desarrollado unos servicios WCF. Estos funcionan correctamente en mi equipo del trabajo que tiene Vista e IIS 6. Pero en el de mi casa no, el equipo de mi casa tiene Windows 7 e IIS 7.5. El mensaje que me muestra al tratar de ejecutarlos es: Error HTTP 404.3 - Not Found

Después de buscar la solución en varios foros encontré la solución en la ayuda del mismo IIS 7 y casi sin quererlo. La solución es la siguiente:

Inicio
Panel de Control
Programas
Activar o desactivar las características de Windows

Se abre una ventana de dialogo en la cual se debe buscar el elemento Microsoft .NET Framework 3.5.1.

Debes expandir ese elemento y activar:
Windows Communication Foundation HTTP Activation

martes, 16 de junio de 2009

DataContext desde código

En este artículo de Microsoft se explica como conectarse a una base desde Linq. Ademas se agrega un DataContext desde código. El problema es que no me funciona al agregrarlo a mi proyecto. Falta un namespace ¿Que namespaces debe ir?

el namespaces es System.Data.Linq, se debe agregar la referencia al ensamblado System.Data.Linq en el menu Project -> Add Reference.

Por lo que nos queda:
DataContext db = new DataContext(ConfigurationManager.ConnectionStrings["conexion"].ToString());

En el archivo Web.config definí la cadena de conexión:

<connectionStrings>
<add name="conexion" connectionString="Server=MARCOS-PC\SQLEXPRESS;Database=CarpetasSeguridad;User ID=sa;Password=123456;Trusted_Connection=False;"/>
</connectionStrings>

Por lo que para llamarla desde cualquier parte de la aplicación. Primero se debe agregar el ensamblado de configuración.

using System.Configuration;

para retornar una lista de una tabla se puede utilizar un código como sigue:

public class miServicio : Imiservicio {

DataContext db = new DataContext(ConfigurationManager.ConnectionStrings["conexion"].ToString());

public List ObtenerCarpetas(string Servidor) {
Table carpetas = db.GetTable();
var consulta = from p in carpetas
where p.Servidor == Servidor
select p;
return consulta.ToList();
}
}

Otros links de consulta:

Tutorial de Silverlight 2 con WCF
http://geeks.ms/blogs/mredison/archive/2008/05/16/tutorial_2D00_de_2D00_silverlight_2D00_2_2D00_con_2D00_wcf.aspx

domingo, 7 de junio de 2009

UserControl is not supported in a WPF

UserControl is not supported in a Windows Presentation Foundation (WPF) project

Este error se presenta al abrir un proyecto creado con Visual Studio 2008 en Microsoft Blend. La razón es que en Blend se debe hacer referencia a las siguientes librerias:

PresentationCore.dll
PresentationFramework.dll
WindowsBase.dll.

Para agregar las referencias en Blend es sencillo, en el menú Project , elegir Add Reference

Las librerias se encuentran en esta dirección:
C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0

domingo, 24 de mayo de 2009

Validar Fecha en C#

Acabo de hacer una funcion en C#, que permite validar una fecha en un formulario Web.De acuerdo a si la fecha que ingreso es fecha (de partida), o es Mayor, Mayor o igual , igual o menor a la fecha actual.
La comparto con todos los que visitan el sitio para que la utilizen, la mejoren o simplemente me digan si es posible hacer lo mismo pero de mejor manera.

La funcion se llama:
validarFecha

Los parametros que recibe son:

1.Fecha a comparar
2.Control CustomValidator
3.Comparación [Mayor, MayorIgual, Menor, Igual]

Si las condiciones no se cumplen se muestra el mensaje que hayas configurado en el control CustomValidator

//www.marcosdonoso.cl 25/05/2009
private void validarFecha(string Fecha, CustomValidator cVal, string Comparacion)
{
int diferencia;
DateTime fechaHoy = DateTime.Now;
DateTime fechaParametro;
if (Fecha == "")
{
cVal.IsValid = false;
}
else
{
try
{
fechaParametro = DateTime.Parse(Fecha);
TimeSpan ts = fechaParametro - fechaHoy;
diferencia = ts.Days;
//Response.Write(diferencia);
if (Comparacion == "Mayor")
{
if (diferencia > 0)
{
cVal.IsValid = true;
}
else { cVal.IsValid = false; }
}
if (Comparacion == "MayorIgual")
{
if (diferencia >= 0)
{
cVal.IsValid = true;
}
else { cVal.IsValid = false; }
}
if (Comparacion == "Menor")
{
if (diferencia < 0)
{
cVal.IsValid = true;
}
else { cVal.IsValid = false; }
}
if (Comparacion == "Igual")
{
if (diferencia == 0)
{
cVal.IsValid = true;
}
else { cVal.IsValid = false; }
}
}
catch
{
cVal.IsValid = false;
}
}

}


Pueden descargar un ejemplo donde la utilizo desde la siguiente ubicación:
http://j.gs/TYt

Recomiendo la lectura de estos posts si hay problemas:
http://marcosdonoso.cl/?p=140

http://dotnetperls.com/Content/DateTime-Parse.aspx

sábado, 23 de mayo de 2009

Instalar un rpm en Ubuntu

En Synaptics encuentras casi todo, digo casi, porque aveces es necesario buscar en otras fuentes. Eso me paso, al estar buscando una herramienta gráfica para administrar vsftd que es un servidor ftp. Al momento de encontrarla me di cuenta que no estaba como paquete .deb sino como .rpm. Lo lógico era preguntarse. ¿Se podrá instalar un rpm en Ubuntu o en una distribución Debian? Y la respuesta es si, si se puede. Conviertiendo el rpm en deb. Con una utilidad llamada alien

Para instalar alien se debe hacer lo siguiente:
sudo apt-get install alien

Para convertir el .rpm
sudo alien -d paquete.rpm

Les contaba que encontre una herramienta gráfica para vsftpd esta se llama system-config-vsftpd

Sitio en SF de system-config-vsftd
http://sourceforge.net/projects/vsftpd-config/

para convertirlo a deb con alien
sudo alien -d system-config-vsftpd-0.5.4-1.fc10.src.rpm

domingo, 17 de mayo de 2009

Como optimizar un Power Point

Estoy terminando un plug in que permite al departamento de Marketing centralizar los archivos de presentaciones, imagenes y logos. De tal manera que las personas que necesiten crear una presentacion hagan uso del plug in, el cual les dispone de todos esos archivos centralizados. Pero me encontre con un problema. Los ppt son muy pesados, por ejemplo, uno de ellos pesaba 1.7 MB. El cual puesto en una carpeta compartida y siendo solicitado por mas de 100 personas implica que hay un problema de performance.

Encontre una forma de optimizar el ppt desde el mismo Power Point. El ppt de 1.7 MB bajo a 1.1, algo es algo.

En el menu de Herramientas -> Imágenes se encuentra un boton llamado Comprimir imágenes. El cual al pinchar les mostrará un diálogo en donde pueden seleccionar imagen actual o todo el documento. Y lo mas importante Cambiar resolución, ante lo cual se debe seleccionar Web o pantalla.

Esto fue probado en Office 2003.