Muchas veces he necesitado comprimir archivos desde mi aplicación, y lo hacia con una clase que hace tiempo encontré en la red, hoy buscando un componente me encuentro con esta pagina que ofrece un componente para comprimir y descomprimir archivos, tiene varios ejemplos en diferentes lenguajes y la verdad lo veo muy completo y muy fácil de usar y fuera de eso es gratis (Ms-PL)
Link:
DotNetZip Library
Buscar
miércoles, 2 de diciembre de 2009
lunes, 30 de noviembre de 2009
Eval en C#
Cuando trabajaba con vb había una función llamada Eval, que a mi parecer era muy útil; cuando empecé a trabajar con c# note que esta función no existía en este lenguaje, entonces me puse a la tarea de buscar algo parecido en c# y esto fue lo que encontré, en este link
http://weblogs.asp.net/datagridgirl/archive/2004/04/19/115900.aspx
Lo que hace la funcion es recibir un string y lo evalua devoliendo el resultado ejemplo Eval(“56+60”) devuleve 116
Espacio de nombres
Espero les sea de utilidad
http://weblogs.asp.net/datagridgirl/archive/2004/04/19/115900.aspx
public static string Eval(string Text) { //http://weblogs.asp.net/datagridgirl/archive/2004/04/19/115900.aspx Microsoft.JScript.Vsa.VsaEngine myEngine = Microsoft.JScript.Vsa.VsaEngine.CreateEngine(); return Microsoft.JScript.Eval.JScriptEvaluate(Text, myEngine).ToString(); ; }
Lo que hace la funcion es recibir un string y lo evalua devoliendo el resultado ejemplo Eval(“56+60”) devuleve 116
Espacio de nombres
Microsoft.JScript.Vsa.VsaEngine
Espero les sea de utilidad
martes, 30 de junio de 2009
Ocultar un Tab (TabPage) en C#
Hace un tiempo me pusieron la tarea de ocultar una pestaña de un tab (un TabPage) cuando deschequiaran o mostrarlo cuando chequiaran un chekBox; entonces fue cuando me di cuenta que la propiedad Hide no sirve para nada. Y me puse a buscar como hacer esto, di con la pagina de Microsoft donde en la parte de comentarios dice “el método Hide de TabPage no ocultará la ficha. Para ocultar la ficha, debe quitar el control TabPage de la colección TabControl.TabPages”.
Asi que está es la forma como se oculta un Tab de un control Tab en C#:
Link
http://msdn.microsoft.com/es-es/library/system.windows.forms.tabpage(VS.80).aspx
Espero les sirva.
Asi que está es la forma como se oculta un Tab de un control Tab en C#:
if(chkimpresion.Cheked)
{
tabControl1.TabPages.Add(Impresion);//Impresión es el nombre que le dí al tab cuando lo cree. Y aquí lo muestro.
}
else
{
tabControl1.TabPages.Remove(Impresion);//Aquí se oculta.
}
Link
http://msdn.microsoft.com/es-es/library/system.windows.forms.tabpage(VS.80).aspx
Espero les sirva.
lunes, 8 de junio de 2009
Saber que usuario ingresa, borra o actualiza registros en sql (Auditoria en Sql SUSER_SNAME())
Muchas veces necesitamos saber el nombre de inicio de sesión de la persona que esta ejecutando una consulta de insert, update o delete en SQL, ya sea para hacer auditorias o para validar accesos a nuestras aplicaciones para obtener este inicio de sesión simplemente utilizamos el comando SUSER_SNAME(), un ejemplo de su uso es cuando queremos hacer tablas de auditoria, ósea saber quien ingresa, borra, o actualiza registros en una tabla especifica.
Yo lo hago con un trigger de la siguiente manera:
Con este trigger logro tener un registro de quien ingreso un registro a mi tabla y a que horas
Espero les sea útil
Yo lo hago con un trigger de la siguiente manera:
CREATE TRIGGER [NombreTrigger]
ON Tabla
after insert
AS
Insert Into TablaAuditoria(Campo1,Campo2,Campo3,Usuario,Fecha)
Select Campo1,Campo2,Campo3, SUSER_SNAME(),getdate()
From Tabla
Con este trigger logro tener un registro de quien ingreso un registro a mi tabla y a que horas
Espero les sea útil
viernes, 22 de mayo de 2009
Recibir o leer correos por c# .net mediante pop3
Este resumen no está disponible. Haz
clic en este enlace para ver la entrada.
martes, 12 de mayo de 2009
Imprimir en la impresora por defecto un reporte de Crystal Report en C#
Este código busca la impresora por defecto del equipo, y se la asigna a un reporte, para imprimirlo, sin necesidad de mostrar el reporte, ni de mostrar el cuadro de dialogo de impresión.
Si necesitamos imprimir el reporte en una impresora especifica, simplemente asignamos el nombre de la impresora al reporte
Nombre de espacios utilizados
public void Imprimir()
{
string NombreImpresora = "";//Donde guardare el nombre de la impresora por defecto
//Busco la impresora por defecto
for (int i = 0; i < PrinterSettings.InstalledPrinters.Count; i++)
{
PrinterSettings a = new PrinterSettings();
a.PrinterName = PrinterSettings.InstalledPrinters[i].ToString();
if (a.IsDefaultPrinter)
{
NombreImpresora = PrinterSettings.InstalledPrinters[i].ToString();
}
}
rptReporte rpt = new rptReporte ();// Instancio el reporte
rpt.SetDataSource(Dt);//Asigno la fuente de datos a mi reporte.
rpt.PrintOptions.PrinterName =NombreImpresora; );//Asigno la impresora
rpt.PrintToPrinter(2, false, 0, 0); );//Imprimo 2 copias
}
Si necesitamos imprimir el reporte en una impresora especifica, simplemente asignamos el nombre de la impresora al reporte
rpt.PrintOptions.PrinterName =”ElNombreImpresora”;
Nombre de espacios utilizados
using System.Drawing.Printing;
lunes, 4 de mayo de 2009
Enviar email c# (outlook), con archivo adjunto
Esta funcion envia un correo desde c#, y adjunta un archivo, lo he probado con gmail y desde un servidor de correo empresarial, espero les sirva.
librerias
librerias
using System.Net;
using System.Net.Mail;
using System.Net.Mime;
class clsMail
{
public static bool Enviar()
{
//Ruta de archivo adjunto (Si lo lleva)
string PathFile = @"Z:\archivo.rar";
//Creo el mensaje del mail.
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
//Agrego los destinatarios, pueden ir varios
msg.To.Add("Paraquienvaelcorreo@empresa.com.co");
//Agrego la direccion del que manda el email, puede ser falsa o verdadera, pero si es falsa puede que el servidor de correo lo detecte como spam, tambien depende de las credenciales que se ponen mas abajo
msg.From = new MailAddress("jaas.jaas@gmail.com", "Jaas", System.Text.Encoding.UTF8);
//Pongo el asunto
msg.Subject = "Asunto" ;
//El tipo de codificacion del Asunto
msg.SubjectEncoding = System.Text.Encoding.UTF8;
//Escribo el mensaje Y su codificacion
msg.Body = "Mensaje del correo";
msg.BodyEncoding = System.Text.Encoding.UTF8;
//Especifico si va ha ser interpertado con HTML
msg.IsBodyHtml = false;
//Agrego el archivo que puse en la ruta anterior "PathFile", y su tipo.
Attachment Data = new Attachment(PathFile, MediaTypeNames.Application.Zip );
//Obtengo las propiedades del archivo.
ContentDisposition disposition = Data.ContentDisposition;
disposition.CreationDate = System.IO.File.GetCreationTime(PathFile);
disposition.ModificationDate = System.IO.File.GetLastWriteTime(PathFile);
disposition.ReadDate = System.IO.File.GetLastAccessTime(PathFile);
//Agrego el archivo al mensaje
msg.Attachments.Add(Data);
//Creo un objeto de tipo cliente de correo (Por donde se enviara el correo)
SmtpClient client = new SmtpClient();
//Si no voy a usar credenciales pongo false, Pero la mayoria de servidores exigen las credenciales para evitar el spam
//client.UseDefaultCredentials = false;
//Como voy a utilizar credenciales las pongo
client.Credentials = new System.Net.NetworkCredential("jaas.jaas@gmail.com", "Password");
//Si fuera gmail seria 587 el puerto, si es un servidor outlook casi siempre el puerto 25, yo utilizo un servidor propio de correo
//client.Port = 587;
client.Port = 25;
//identifico el cliente que voy a utilizar
client.Host = "Miservidor.com.co";
//Si fuera a utilizar gmail esto deberia ir en true, esto es un certificado de seguridad
//client.EnableSsl = true;
client.EnableSsl = false;
try
{
//Envio el mensaje
client.Send(msg);
return true;
}
catch (System.Net.Mail.SmtpException ex)
{
return false;
}
}
}
miércoles, 22 de abril de 2009
Guardar fecha sin hora SQL
Muchas veces necesitamos guardar la fecha sin hora en una base de sql, el problema surge cuando utilizamos la función
Esto lo que hace es convertir la fecha a un texto con un formato sin hora y después vuelvo y lo convierto a un dato de tipo fecha por si necesito realizar operaciones con este dato.
GETDATE ()que nos devuelve la fecha y la hora o cuando nuestra aplicación envía la fecha con la hora, una forma de corregir esto es utilizar la función
CONVERTde esta forma
set dateformat dmy;
select CONVERT (datetime,CONVERT(VARCHAR,GETDATE(),101),101)
Esto lo que hace es convertir la fecha a un texto con un formato sin hora y después vuelvo y lo convierto a un dato de tipo fecha por si necesito realizar operaciones con este dato.
martes, 21 de abril de 2009
Crear una sola instancia de un formulario en c#
Crear una sola instancia de un formulario en c#
Este código me lo encontré en una página, no me acuerdo cual, y me ha sido muy útil, su función es permitir solo una instancia del formulario abierta. Entonces si ya tenemos abierto un formulario, y lo volvemos a tratar de abrir, el mostrara el primer formulario abierto, en ves de crear una nueva instancia.
Uso:
Este código se debe copiar en cada formulario, que se desee dotar de esta funcionalidad
Y se reemplaza
Para abrir el formulario se utiliza:
Este código me lo encontré en una página, no me acuerdo cual, y me ha sido muy útil, su función es permitir solo una instancia del formulario abierta. Entonces si ya tenemos abierto un formulario, y lo volvemos a tratar de abrir, el mostrara el primer formulario abierto, en ves de crear una nueva instancia.
Uso:
Este código se debe copiar en cada formulario, que se desee dotar de esta funcionalidad
Y se reemplaza
Formulariopor el nombre de la clase del formulario.
private static Formulario m_FormDefInstance; ////// Crea una instancia unica del Formulario /// ///Instancia por defecto public static Formulario DefInstance { get { if (m_FormDefInstance == null || m_FormDefInstance.IsDisposed) m_FormDefInstance = new Formulario (); return m_FormDefInstance; } set { m_FormDefInstance = value; } }
Para abrir el formulario se utiliza:
Formulario.DefInstance.Show();
lunes, 20 de abril de 2009
Redondeo por múltiplos(Excel, Sql)
En Excel existe una función para redondear por múltiplos, la función es MROUND(N;m), donde redondea n a el múltiplo de m mas cercano. Eso si tenemos el Análisis Toolpack., si no se puede utilizar la siguiente función
REDONDEAR(N/m;0)*m.
Ejemplo :
MROUND(5,3)
Resultado:
6
Esto es una función que hace lo mismo pero en SQL:
Uso:
select dbo.RoundMult(5,3)
REDONDEAR(N/m;0)*m.
Ejemplo :
MROUND(5,3)
Resultado:
6
Esto es una función que hace lo mismo pero en SQL:
Uso:
select dbo.RoundMult(5,3)
CREATE FUNCTION [dbo].[RoundMult] (@Valor numeric(18,2),@Multiplo Numeric(18,2))
RETURNS nvarchar(50)
WITH EXECUTE AS CALLER
AS
BEGIN
declare @Residuo numeric(18,0)
DECLARE @ValASumar numeric(18,0)
set @Residuo=@Valor%@Multiplo
IF @Residuo=0
BEGIN
return @Valor
END
ELSE
set @ValASumar= @Multiplo-@Residuo
return @Valor+@ValASumar
END
Formatear texto SQL (Poner letra inicial en mayuscula)
Esta función sql muestra como poner la primera letra de cada palabra en mayúscula de un registro de nuestra base de datos, es muy útil, cuando los usuarios, ingresan los datos de manera desorganizada.
Uso:
Select [dbo].InitCap('TEXTO A FORMATEAR')
Resultado:
Texto A Formatear
Uso:
Select [dbo].InitCap('TEXTO A FORMATEAR')
Resultado:
Texto A Formatear
CREATE FUNCTION [dbo].[InitCap] ( @InputString nvarchar(255) )
RETURNS NVARCHAR(255)
AS
BEGIN
DECLARE @Index INT
DECLARE @Char CHAR(1)
DECLARE @PrevChar CHAR(1)
DECLARE @OutputString NVARCHAR(255)
SET @OutputString = LOWER(@InputString)
SET @Index = 1
WHILE @Index <= LEN(@InputString) BEGIN SET @Char = SUBSTRING(@InputString, @Index, 1) SET @PrevChar = CASE WHEN @Index = 1 THEN ' ' ELSE SUBSTRING(@InputString, @Index - 1, 1) END IF @PrevChar IN (' ', ';', ':', '!', '?', ',', '.', '_', '-', '/', '&', '''', '(') BEGIN IF @PrevChar != '''' OR UPPER(@Char) != 'S' SET @OutputString = STUFF(@OutputString, @Index, 1, UPPER(@Char)) END SET @Index = @Index + 1 END RETURN @OutputString END
viernes, 17 de abril de 2009
Insertar imágenes dinámicamente en Cristal Report con C# 2005
Insertar imágenes dinámicamente en Cristal Report
Muchas veces tenemos que insertar imágenes ennuestros reportes dependiendo el registro que estemos mostrando, una forma queme a funcionado muy bien es la siguiente.
Cuando diseñemos el reporte debemos insertar un campo de tipo System.Byte[] en el DataTable utilizadopara el diseño de nuestro reporte, en este campo meteremos la imagen entiempo de ejecución.
Este campo se inserta en el reporte y será dondemostraremos la imagen.
Para mostrar el reporte utilizamos lo siguiente, para llenarel campo creado.
Y esta es la función que carga la imagen.
Espacio de nombre Usados
Muchas veces tenemos que insertar imágenes ennuestros reportes dependiendo el registro que estemos mostrando, una forma queme a funcionado muy bien es la siguiente.
Cuando diseñemos el reporte debemos insertar un campo de tipo System.Byte[] en el DataTable utilizadopara el diseño de nuestro reporte, en este campo meteremos la imagen entiempo de ejecución.
Este campo se inserta en el reporte y será dondemostraremos la imagen.
Para mostrar el reporte utilizamos lo siguiente, para llenarel campo creado.
public void CargarReporte()
{
DataTable Dt = new
DataTable();//Creo un DataTable que sera la fuente de datos de mi reporte.
Dt=clsOrdenTerceros.Get_InfoParaOrdenImpresa(NumOrden);//Lleno el DataTable
rptOrdenSalidaTercero rpt = new rptOrdenSalidaTercero();// instancio el reporte
Dt.Columns.Add("Ruta11",System.Type.GetType("System.Byte[]"));//Agrego la columna con el tipo de dato "System.Byte[]",donde guardare mi imagen.
Dt.Rows[0]["Ruta11"] = CargarImagen("C:\foto.jpg"));//Cargo La imagen
rpt.SetDataSource(Dt);//Asigno la fuente de datos a mi reporte.
}
Y esta es la función que carga la imagen.
public static Byte[]CargarImagen(string rutaArchivo)
{
if (rutaArchivo != "")
{
try
{
FileStream Archivo = new FileStream(rutaArchivo, FileMode.Open);//Creo el archivo
BinaryReader binRead = new BinaryReader(Archivo);//Cargo el Archivo en modo binario
Byte[] imagenEnBytes = new Byte[(Int64)Archivo.Length]; //Creo un Array de Bytes donde guardare la imagen
binRead.Read(imagenEnBytes,0, (int)Archivo.Length);//Cargo la imagen en el array de Bytes
binRead.Close();
Archivo.Close();
return imagenEnBytes;//Devuelvo la imagen convertida en un array de bytes
}
catch
{
return new Byte[0];
}
}
return new byte[0];
}
Espacio de nombre Usados
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization;
lunes, 5 de enero de 2009
Eventos en Graficas (Chart) del producto DotNetCharting
Eventos en Graficas (Chart) del producto DotNetCharting
Este código permite capturar eventos como el onMouse y el clic en los chart creados
con donetcharting, para poder interactuar con las graficas creadas.
El evento principal de este codigo es
Que es donde se registra todos los eventos en todas las partes del chart (Solo queda
el ultimo evento); Este se puede utilizar en cualquier evento del Chart
Espacios Utilizados
Este código permite capturar eventos como el onMouse y el clic en los chart creados
con donetcharting, para poder interactuar con las graficas creadas.
private void chart1_MouseMove(object sender, MouseEventArgs e)
{
HitTestInfo hit = this.chart1.HitTest(); // Aqui se optiene el ultimo evento ejecutado en el chart
if (hit.Object is Element) //Miro si es un elemento (Una sección de la barra en el chart)
{
Element el = (Element)hit.Object; //Creo un elemento para poder acceder a las propiedades de ese elemento y poder tomar decisiones
int pos1 = 0;
//Acceso a las propiedades del elemento seccionado para tomar dediciones
pos1 = el.ToolTip.IndexOf("Orden Produccion");
string Cod = el.ToolTip.Substring(8, pos1 - 9);
Codigo del evento……
}
}
El evento principal de este codigo es
HitTestInfo hit = this.chart1.HitTest();
Que es donde se registra todos los eventos en todas las partes del chart (Solo queda
el ultimo evento); Este se puede utilizar en cualquier evento del Chart
Espacios Utilizados
using dotnetCHARTING.WinForms;
Suscribirse a:
Entradas (Atom)