Bienvenidos

Recuerda que tus comentarios son importantes y recuerda agradecer si te fue útil algun artículo publicado aquí.

L1f3 15 a D@nc3 Flo0r

viernes, 26 de diciembre de 2008

Feliz Navidad


Feliz Navidad y un próspero año nuevo a todos mis amigos tecnólogos. Que Dios los ilumine cada vez que se tranquen con un código, cada vez que una base de datos se corrompa, cada vez que una computadora se dañe, cada vez que un servidor no suba y cada vez que un switch se queme.


Pero cuando no encuentren la salida pasen por este blog a ver si ya me ha pasado y he publicado la solución..


Cheers!!! nos vemos en el 2009

jueves, 4 de diciembre de 2008

Bloquear ciertas aplicaciones en Windows

Algunas veces necesitamos bloquearle aplicaciones a los usuarios muchas veces para que rindan más en su empleo como por ejemplo "MESSENGER"

Esto se puede realizar poniendo ciertos controles en la red, por ejemplo por el firewall, pero también podemos bloquear estos programitas desde la misma computadora del usuario de la siguiente manera:

En ejecutar (run) (inicio/ejecutar)

Escribes gpedit.msc

>User configuration

>Administrative templates

>System

>Don't Run Specified Windows Softwares

> clic en Enable y luego Show

> Allí agregamos el msnmsgr.exe

Y listo ya Messenger no se ejecutará en esa computadora, esto mismo pueden hacer con cualquier otro software que deseen bloquear.


 

Cheers!

sábado, 22 de noviembre de 2008

Error: Insufficient data for an image al exporter un reporte a pdf

Es posible que en alguna ocasión se hayan encontrado con este error muy común, el mensaje "Insufficient data for an image" al exportar un reporte desde la aplicación a pdf.

Este error suele ocurrir cuando tenemos una imagen en nuestro reporte que el servidor no puede cargar entonces para resolver este inconveniente simplemente tenemos que cambiar

la imagen que está en el reporte (que lo más seguro es que sea JPG, JPEG o GIF) por una imagen .BMP .. si.. así de sencillo… la imagen que está en tu reporte cámbiala por una .bmp

y listo!! No tendrás problemas al exportar a pdf.

miércoles, 27 de agosto de 2008

Darle formato a un campo de un gridview

Este articulo lo envía mi amigo y hermano Oscar Peña y trata de cómo darle un formato específico a un campo de un gridview en .NET

Saben que a veces nuestros jefes (los clientes) nos piden que los campos tengan algún formato en específico como un signo de dinero ($), guiones, paréntesis, etc.

Entonces para eso podemos utilizar el siguiente codiguito…. CHEERS!!! J


 


 

Un ejemplo de una tarjeta de credito.

------------------------------------------------------------------------------------------------------------------------------


 

GridViewRowEventArgs ea = e as GridViewRowEventArgs;

if (ea.Row.RowType == DataControlRowType.DataRow)

{

DataRowView drv = ea.Row.DataItem as DataRowView;

Object ob = drv["no_tarjeta"];

if (!Convert.IsDBNull(ob))

{

Int64 iParsedValue = 0;

if (Int64.TryParse(ob.ToString(), out iParsedValue))

{

TableCell cell = ea.Row.Cells[1];

cell.Text = String.Format(System.Globalization.CultureInfo.CurrentCulture,

"{0:####-####-####-####}", new object[] { iParsedValue });

}

}

}

viernes, 22 de agosto de 2008

Mascaras en MS CRM 4

Gracias a Danny Knight por este aporte.

Muchos usuarios se fijan en las cosas bonitas antes que funcionales, ese es un mal que vivimos todos los programadores. Pero aveces tienen razón!!!

Un caso en el que tienen razón es si te piden que el campo de teléfono en su interfaz de CRM tenga una mascara. Entonces para hacer esto nos aprovecharemos de el "On change event" de un campo en los formularios.

El código a continuación formatea lo que se escribe en los campos de texto de forma que se pongan paréntesis y guiones a los números de teléfono y se guarden de una manera mas presentable para el usuario.

Para hacer esto vamos al editar el formulario de una entidad, haces doble clic en el campo de teléfono y en la pestaña de Eventos veras el Onchange event (en español seria AlCambiar) le das a Editar, copias este código.. y LISTO!!!


 

TE DEJO DOS CODIGOS, AMBOS FUNCIONAN A LA PERFECCION Y HACEN LO MISMO .. CHEERS!! JJ

CODIGO 1

// Attempt to auto-format basic phone numbers. This method supports

// 7 and 10 digit numbers. Example: (410) 555-1212

// Get the field that fired the event

var oField = event.srcElement;

// If we have the field and all is well

if (typeof(oField) != "undefined" && oField != null)

{

// Remove any non-numeric characters

var sTmp = oField.DataValue.replace(/[^0-9]/g, "");

// If the number is a length we expect and support, format the number

switch (sTmp.length)

{

case "4105551212".length:

oField.DataValue = "(" + sTmp.substr(0, 3) + ") " + sTmp.substr(3, 3) + "-" + sTmp.substr(6, 4);

break;

case "5551212".length:

oField.DataValue = sTmp.substr(0, 3) + "-" + sTmp.substr(3, 4);

break;

}

}


 

CODIGO 2

//--> start

// Here we place current phone number to oField

var oField = event.srcElement;

// Here we see if the phone number is valid

if (oField.DataValue != "undefined" && oField.DataValue != null)

{

// This removes any unwanted characters (non numeric)

var sTmp = oField.DataValue.replace(/[^0-9]/g, "");

// Here we use switch structure format number

switch (sTmp.length)

{

case 10:

oField.DataValue = "(" + sTmp.substr(0, 3) + ") " + sTmp.substr(3, 3) + "-"

+ sTmp.substr(6, 4);

break;

}

}

//--> end

Poner campos autonumericos en MS CRM 4

Si deseamos tener un campo auto numérico en una entidad de MS CRM 4

Podemos utilizar una forma un poco absurda pero que funciona.


 

Es sencillo y se puede lograr con un poco de conocimientos de TSQL

Lo primero que debemos hacer es crear el campo de tipo INT en la entidad en CRM

Luego vamos a la base de datos del CRM y eliminamos ese campo de la base de datos y lo volvemos a crear auto numérico

Asi engañamos al CRM y el campo que se creó previamente ira incrementándose de forma automática cada vez que guardemos un nuevo registro en la entidad.

Luego simplemente agregamos el campo al formulario, lo pones Read Only y LISTO!!!

Codigo sql:

ALTER TABLE [tabla] DROP COLUMN [columna]

ALTER TABLE [tabla] ADD [columna] INT IDENTITY
NOT NULL

martes, 29 de julio de 2008

Presentar el número de fila en un DataGridView (winform) y un GridView


Para una aplicacion Winform utilizamos los siguientes pasos

1) Ir a la configuracion de columnas del DataGrid
2) Agregar una columna (Unbound Column) y ponerla de primera
3) Asignar un nombre
4) Propiedad: ReadOnly = True
4) Asignar la propiedad VirtualMode del DataGrid con valor True
5) En el evento CellValueNeeded usar el siguiente código:

V.B.

Private Sub DataGridView1_CellValueNeeded(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValueEventArgs) Handles DataGridView1.CellValueNeeded

If e.RowIndex >= 0 AndAlso e.ColumnIndex = Me.
columna.Index Then
e.Value = e.RowIndex + 1

End If
End Sub

C#
private
void dataGridView1_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e)

{

if (e.RowIndex >= 0 && e.ColumnIndex == columna.Index)

{
e.Value = e.RowIndex + 1;
}
}

====================================================================

Para hacerlo en una aplicación Web

1) Ir a la configuración de columnas del GridView
2) Agregar una columna tipo TemplateField y asignar un Header
3) En el html agregar el siguiente código


miércoles, 9 de julio de 2008

Obtener solo la hora de un campo datetime


Si queremos obtener solamente la parte de la hora en un campo datetime en sql hacemos:

SELECT CONVERT(VARCHAR,getdate(),108)

Recuerda.. que si es de un campo en especifico solo cambias el [getdate()] por el nombre del [campo]

Aquí una tabla con las diferentes formatos de datetime en sql server
http://www.mssqltips.com/tip.asp?tip=1145

domingo, 1 de junio de 2008

Encriptar secciones del Web.config en asp.net 2.0

Muchas veces tenemos en nuestro web config nuestras credenciales para la conexión a la Base de Datos

Esto es posible encriptarlo de manera que ningún intruso pueda ver esta información:

Hay dos maneras de hacerlo:

La primera es utilizando el aspnet_regiis.exe

Utilizando esta sentencia

aspnet_regiis -pef [sección del web.config] [ruta del web.config]

Ej.: aspnet_regiis –pef ConnectionStrings c:\aplicacion

Si deseamos desencriptar simplemente cambiamos pef por pdf

Ej.: aspnet_regiis –pdf ConnectionStrings c:\aplicacion

Pero si en nuestro servidor no podemos ejecutar comandos por ejemplo si nuestra página esta hosteada en un servidor remoto, podemos hacer esto mismo por programación con la siguiente secuencia

Configuration config = ConfigurationManager.OpenExeConfiguration(Request.ApplicationPath);

ConfigurationSection section = config.Sections["connectionStrings"];

section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");

config.Save();

lunes, 19 de mayo de 2008

Cannot resolve the collation conflict

Este es un error muy frecuente que se nos presenta cuando queremos trabajar con dos Bases de Datos que tienen COLLATION diferentes.

el error que nos da el query es: Cannot resolve the collation conflict between "SQL_Latin1_General_CP1250_CI_AS" and "Latin1_General_CI_AS" in the equal to operation.

Esto se resuelve con la clausula COLLATE.

Ej.:
SELECT <>
FROM TableA A
JOIN TableB B ON A.col=B.col
COLLATE SQL_Latin1_General_CP1250_CI_AS

sábado, 10 de mayo de 2008

Shrinking a log file to a specified target size

USE [DB_NAME];

GO

-- Truncate the log by changing the database recovery model to SIMPLE.

ALTER
DATABASE [DB_NAME]

SET RECOVERY SIMPLE;

GO

-- Shrink the truncated log file to 1 MB.

DBCC SHRINKFILE ([DATABASE LOG LOGICAL NAME], [TAMANO FINAL EN MB]);

GO

-- Reset the database recovery model.

ALTER
DATABASE [DB_NAME]

SET RECOVERY FULL;

GO

CLAUSULA: CASE WHEN

CLAUSULA: CASE WHEN

Es parecida al CASE que utilizamos en programación, con la ventaja de que el mismo puede ser utilizado en un campo de la consulta.

Caso de uso: Imagine que tiene un campo dentro de la tabla en el que usted quiere desplegar un valor en específico en el caso en el que ese campo tenga valor (es decir no desea desplegar el valor del campo sino un valor especificado por usted). En ese caso utilizamos el CASE WHEN el campo en cuestión tenga valor le decimos que despliegue la letra "P" de lo contrario que despliegue un espacio.

Ej.:

SELECT [campo1], [campo2], CASE WHEN [campo3] IS NOT NULL THEN 'P' ELSE ' ' END
FROM [tabla]

miércoles, 16 de abril de 2008

AutoRefresh una pagina web

Para autorefrescar una pagina web tenemos dos maneras

La primera es simple HTML

<META HTTP-EQUIV="Refresh" CONTENT="10;URL=http://www.dotnetspider.com";>

Esto se pone en el head de la pagina y se especifica el tiempo en segundos

La segunda por .NET

Response.AppendHeader("Refresh", "10; URL=http://www.dotnetspider.com")


 

Cheers :D

martes, 18 de marzo de 2008

Cerrar Pagina ASP.NET

Para cerrar una pagina en ASP.NET solo hay que usar el metodo ClientScript que permite usar un script sin tener que ponerlo en el diseño, primero se pone Page.GetType para que agarre el tipo de la pagina, luego el evento y por ultimo el script que se quiere ejecutar.

ClientScript.RegisterStartupScript(Page.GetType(), "OnLoad", "<script language=javascript>" + "window.close()" + "</script>");

lunes, 18 de febrero de 2008

Error en reporte al poner campos con los mismos nombres pero de tablas diferentes

"the value expression for the textbox uses an aggregate expression without a scope. a scope is required for all aggregates used outside of a data region unless the report contains exactly one data set"


 

Si se nos presenta este error, es probablemente porque estemos agregando campos de varias tablas con el mismo nombre o que estemos usando diferentes tablas de diferentes datasets en el mismo reporte.

En este caso lo que hay que hacer es poner en el expression del campo que este dando error… al final… (el dataset)(underscore)(la tabla)

Ej: =First(Fields!nombre.Value, "dsPrueba_TablaPersonas")

viernes, 15 de febrero de 2008

Cómo instalo el AjaxControlToolkit?

Para instalar el Ajax Control Toolkit

Lo primero que tienes que hacer es descargarlo de ASP.NET/AJAX

  1. te diriges al ToolBox y le das click derecho + Add Tab
  2. En el tab que creaste, haces clic derecho + Choose Items…
  3. En la ventana que aparece, le das a Browse
  4. Buscas la ruta donde descomprimiste el Ajax Control Toolkit
  5. Abres la carpeta SampleWebSite, luego BIN
  6. Y buscas la dll (AjaxControlToolkit.dll)
  7. Le das a OK.. y ya esta instalado

Ya puedes usar todos los recursos del Ajax Control Toolkit

miércoles, 13 de febrero de 2008

Cambiar Formato de Objetos String

Si queremos cambiar el string que se peresenta en un label o un textbox, solo usamos el metodo string.format

el cual solo afecta la presentacion pero no el valor que tiene.


 

Ej.:


 

Esto nos devuelve 40 en vez de 40.00


 

beca = Convert.ToDecimal(txtBeca.Text)*100;

txtBeca.Text = string.Format(" {0:###} ", beca);