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, 20 de noviembre de 2009

Problemas con la ñ

Bueno, en estos días encontré un problemita trabajando con unos nombres que tenían nuestra preciada letra "ñ" (enie)

Resulta que cuando trataba de pasar uno de esos nombres a un datalist desde un textbox la aplicación da un error y habla de problemas de seguridad etc. Etc.

Error:

A potentially dangerous Request.Form value was detected from the client (ctl00$ContentPlaceHolder1$txtPProducto="...k 120mg niños ").


Muy feo verdad?

Pues ese errorcito era provocado por la letra "ñ"
Para resolver eso no basta con especificar la cultura también hay que especificar los encodings:
requestEncoding="iso-8859-1"
responseEncoding="iso-8859-1"
fileEncoding="iso-8859-1"
culture="es-MX"
uiCulture="es-MX"/>;
O mas facil:
String nombre = Server.HtmlDecode(TextBox1.Text)

 

Enjoy! Y recuerda que la vida es corta, tira código pero recuerda divertirte!

martes, 3 de noviembre de 2009

Tomar una palabra de un string en sql server

SELECT CASE CHARINDEX(' ', [campo], 1)
     WHEN
0 THEN [campo] -- empty or single word
     ELSE SUBSTRING(
[campo], 1, CHARINDEX(' ', [campo], 1) - 1) -- multi-word
END

FROM [tabla]

martes, 20 de octubre de 2009

lunes, 5 de octubre de 2009

Obtener el datakey value de una fila en un gridview

Se me present el caso en el que en un grid view debia poner un boton para eliminar esa fila y por consiguiente borrar ese valor de la base de datos.

Para esto ponemos en el gridview un botón y en el CommandName le ponemos "Eliminar".

El siguiente paso es hacer que cuando clikemos ese botón que aparecerá en cada fila del gridview, nos elimine ese valor.

Para esto en el Evento RowCommand del gridview ponemos lo siguiente:


if (e.CommandName == "Eliminar")

{


string valor;


int index;


 

index = int.Parse(e.CommandArgument.ToString());

valor = gridview1.DataKeys[index].Value.ToString();


 

TABLA.Delete(Convert.ToInt32(valor));

gridview1.DataBind();

}


 

La primera linea busca el comando Eliminar como le pusimos al botón.

Capturamos la fila en la que esta el boton que clicamos y buscamos el datakey value de esa fila

Y lo demas es simplemente borrarlo de la BD.


 

Recuerda declarar el campo DataKey en el GridView


 

Enjoy!

sábado, 3 de octubre de 2009

Botón dentro de un datalist

Tenemos un datalist y dentro de este en el ItemTemplate ponemos un botón que se va a repetir por cada fila del datalist.

Para hacer uso de este botón lo primero que debemos hacer es ponerle nombre al comando en la propiedad CommandName del botón.. Ejemplo: "eliminar".

Entonces en la propiedad ItemCommand del datalist utilizamos el siguiente código:

if (e.CommandName == "eliminar")

{

Notas.Delete(Convert.ToInt32(Datalist1.DataKeys[e.Item.ItemIndex]));

Datalist1.DataBind();

}


 

En la primera linea llamamos el comando que fue el que le pusimos al boton

En la segunda linea estamos llamando el Delete del tableadapter notas por ejemplo y estamos buscando el codigo de esa nota en la BD

Ya que previamente le dijimos al Datalist que su DatakeyField va a ser el campo idnotas

Ya en la tercera linea refrescamos el Datalist y listo!.


 

Enjoy!

domingo, 20 de septiembre de 2009

The type or namespace name 'Reporting' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)

Cuando se nos presenta este error:


 

The type or namespace name 'Reporting' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)

The type or namespace name 'LocalReport' could not be found (are you missing a using directive or an assembly reference?)


 


 

Es posible que la razon sea porque en el web config te hagan falta estos assemblies.


 

Asi que en el web.config agrega estas lineas en la seccion de los assemblies.


 

<assemblies>

<add
assembly="Microsoft.ReportViewer.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>

<add
assembly="Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
</
assemblies>


 

Saludos,

lunes, 14 de septiembre de 2009

Parametros en Reporting Service

using Microsoft.Reporting.WebForms;


 


 

ReportParameter[] parm = new ReportParameter[1];

parm[0] = new ReportParameter("CodProducto", GridView1.SelectedDataKey.Value.ToString());

ReportViewer1.ServerReport.SetParameters(parm);

ReportViewer1.ServerReport.Refresh();

miércoles, 5 de agosto de 2009

Cambiar el navegador por default en Visual Studio

Para cambiar el navegador por default en Visual Studio le das clic derecho a un aspx y le das a Browse With…

Allí seleccionas el browser que quieres utilizar y le das al botón de "Set as default" y ejecutas

Entonces cuando quieras correr tu proyecto siempre abrirá en ese navegador.


 

Simple y muy útil... Enjoy!

Unable to load client print control en Reporting Services

Seguro que muchos nos hemos encontrado con este problema en una de las computadoras de los clientes a la hora de imprimir un reporte que hicimos en Reporting Services.

UNABLE TO LOAD CLIENT PRINT CONTROL

Cuando vamos a imprimir desde Reporting Services por primera vez nos pide instalar un control de Active X y para esto nuestro navegador debe permitírnoslo.

  1. En Internet Explorer van a Herramientas / Opciones de Internet y en la pestana de Seguridad van al botón de Custom Level y configuran las opciones para que permita descargar el Active X.


     

  2. Pero si este no es el problema entonces algo que me funcionó fue desinstalar dos actualizaciones de Windows que bloqueaban esta funcionalidad de Reporting Services.

  3. En Panel de Control / Agregar y Quitar programas
  4. Selecciona el checkbox para que te presente los updates de Windows
  5. Desinstala estas dos actualizaciones (Búscalas por el número)

  • Security Update for Windows XP (KB956803)
  • Cumulative Security Update for ActiveX Killbits for Windows XP (KB956391)

lunes, 27 de julio de 2009

Cambiar texto a mayúscula en SQL SERVER

Para cambiar un texto a mayúscula en SQL SERVER si es en una consulta:

SELECT UPPER(ProductName) as ProductName FROM Products

Si es a minúscula:

SELECT LOWER(ProductName) as ProductName FROM Products


 

Si queremos cambiar los datos en la tabla:

UPDATE Products SET ProductName = UPPER(ProductName)

lunes, 20 de julio de 2009

Buscar en la base de datos completa

Una vez me pasó que debía buscar una información en una base de datos, el único problema es que tenia miles de tablas, no existía documentación y no tenía ni idea de dónde estaba guardado lo que necesitaba.

Creo que esto me hubiera ayudado bastante para ese proyecto porque al final terminé fajándome con el SQL PROFILER a rastrear los movimientos: S

Estos links están muy interesantes.

http://vyaskn.tripod.com/search_all_columns_in_all_tables.htm

http://it.toolbox.com/wiki/index.php/Get_Records_from_ANY_table_in_a_Database_Matching_Specified_Value

martes, 14 de julio de 2009

Indice terco en SQL SERVER

Supongamos que tenemos un índice que queremos eliminar y que utilizamos la clásica manera que nos enseñó mamá de clic derecho sobre el índice y delete.. pero el índice se niega borrarse con un error feo y raro.

Luego intentamos con la otra forma que nos enseñaron el clásico DROP INDEX [tabla.nombre_indice] y nos da el mismo error:

Msg 3723, Level 16, State 5, Line 1
An explicit DROP INDEX is not allowed on index 'dbo.Session_Student.IX_Session_Student'. It is being used for UNIQUE KEY constraint enforcement.

Esto se debe a que este índice como dice el mensaje está siendo usado como un constraint de llave única así que no lo podremos eliminar de la manera común. Para este caso lo hacemos de la siguiente manera:

ALTER
TABLE [nombre_de_table] DROP
CONSTRAINT [nombre_del_indice]

Esto debe funcionarte.

Enjoy!

Life's to short to spend it sober!

lunes, 13 de julio de 2009

Remover todos los links de un documento de MS Word

Este tema se aparata un poco de lo que es programación pero considero que es algo muy útil para todos nosotros.

Muchas veces nos hemos encontrado con la incómoda situación de copiar un texto desde la web hacia un documento de Word y ese texto viene lleno de hipervínculos y hay que eliminarlos uno por uno! :@

Pues para resolver este GRAN dolor de cabeza haz lo siguiente:

Selecciona el documento completo (puede ser con CTRL + A) y luego presiona CTRL + SHIFT + F9 para convertir el documento en solo texto y así desaparecerán todos los links, ya solo tienes que poner todo el texto del mismo color.


 

Enjoy!

sábado, 23 de mayo de 2009

Encriptar un texto con MD5 en .net

Cuando necesitamos proteger nuestra información de los bandidos de la red lo mejor que podemos hacer es encriptarla, el MD5 es solo uno de los más conocidos métodos de encriptación que hay en "el mercado" así que te invito a que sigas investigando otros métodos de encriptación y decides cual te conviene más.

En este caso como lo que queremos es encriptar una cadena de caracteres con MD5, les explico cómo se hace.

1. En las directivas debemos agregar:

using System.Text;
using System.Security.Cryptography;

2. Pegamos la siguiente función en nuestro código:

public static string GetMD5(string str)

{


MD5 md5 = MD5CryptoServiceProvider.Create();


ASCIIEncoding encoding = new
ASCIIEncoding();


byte[] stream = null;


StringBuilder sb = new
StringBuilder();

stream = md5.ComputeHash(encoding.GetBytes(str));


for (int i = 0; i < stream.Length; i++) sb.AppendFormat("{0:x2}", stream[i]);


return sb.ToString();

}

3. Utilizamos la función con un textbox:

GetMD5(TextBox1.Text)

Listo! con esto lo que esté escrito en el TextBox se encriptará con MD5

martes, 19 de mayo de 2009

Limitar el tamaño de los archivos a subir por el FileUpload en asp.net

La importancia de limitar el tamaño de los archivos que podamos subir al servidor utilizando por ejemplo el componente FileUpload en asp.net es evitar por ejemplo un ataque DOS por archivos muy grandes que una persona intente publicar.

Por default el tamaño máximo en asp.net que se puede subir es 4mb y para cambiar eso solo debes poner esta línea en tu web.config

<system.web>
  <httpRuntime  maxRequestLength="1096" executionTimeout="360"/>
</system.web>

Donde maxRequestLength representa el tamaño máximo en Kb que se puede subir. Por default recuerden que es "4096" = 4bm

El tamaño máximo que acepta el Framework 1 es de 1gb y el Framework2 acepta hasta 2gb.

executionTimeout: representa la cantidad máxima de segundos permitidos para la ejecución de ese upload antes de que el request finalice así que deben poner este valor en un numero aceptable para que dé tiempo subir el archivo según el tamaño que tenga.

lunes, 4 de mayo de 2009

Encriptar en SQL SERVER 2005

Si queremos encriptar un texto en SQL SERVER 2005 simplemente usamos esta función:

SELECT HashBytes('MD5',
'texto')

Entonces el resultado será el texto que escribimos o que pasamos pero encriptado en MD5

Asi mismo podemos con esta misma funcion encriptar en MD2,MD4,MD5,SHA y SHA1

jueves, 30 de abril de 2009

Sumatoria en el pie de un GridView


Saludos, en este post vamos a mostrar cómo poner una sumatoria de los valores de todas las filas de un GridView en el pie del mismo.
Imaginen que tenemos un GridView con los montos económicos que debe una persona en su cuenta, y que deseamos saber de manera más rápida el total de estas deudas


Para hacer esto lo primero que debemos hacer es:

En las propiedades del GridView buscar la que dice: ShowFooter y la ponemos TRUE

Luego en el evento: RowDataBound ponemos este código:

protected
void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)

{
if (e.Row.RowType == DataControlRowType.DataRow)

{
MiDataSet.MitablaRow balance = (MiDataSet.MitablaRow)((System.Data.DataRowView)e.Row.DataItem).Row;


if (!balance.IsBalanceNull())

_balanceActual += balance.Balance;


 

}
else
if (e.Row.RowType == DataControlRowType.Footer)

{

e.Row.Cells[10].Text = "Balance:";

e.Row.Cells[11].Text = _balanceActual.ToString();

}

}

Recuerda declarar la variable _balanceActual de tipo decimal (global)

Poner el nombre de tu Dataset

Poner el nombre de tu tabla


 

Listo, con esto tus GridViews tendrán una mejor presentación para nuestros jefes (los clientes).


 

Enjoy!

domingo, 8 de marzo de 2009

Poner el numero de fila en un reporte ( Serial row number)

Si tenemos que desarrollar un reporte y necesitamos en una columna el número serial de las filas como vayan apareciendo ( 1, 2, 3, 4, …, n) simplemente haz clic derecho en la celda donde quieres los números, luego vas a "Expression" y en el editor usas la función "=RowNumber(Nothing)" .. Listo con esto tendrás tu listado de números.

Sencillo no?

sábado, 31 de enero de 2009

Aprovechar el “DataBase Mirroring” en nuestra aplicación

Existe algo llamado Mirroring en SQL SERVER por medio del cual podemos tener una copia exacta de una Base de datos en otra instancia de SQL o en otro servidor para ser utilizado en caso de que el servidor principal falle.

Si queremos que el servidor secundario entre en operación inmediatamente el principal caiga debemos utilizar u tercer servidor o instancia llamada "witness" o testigo que es quien se encargara de estar pendiente revisando para que cuando ocurra el fallo el otro server entre en acción.

Entonces.. si tenemos todo configurado en la parte de SQL SERVER ¿Cómo podemos utilizarlo en nuestro sistema?.. sencillo

Esta es un connection string normal de un Web config

<connectionStrings>
        <add name="[NOMBRE]" connectionString="Data Source=[SERVIDOR];Initial Catalog=[BASE DE DATOS];User ID=[USUARIO]; password=[PASSWORD]" providerName="System.Data.SqlClient"/>
</connectionStrings>

Y esta es una linea de un connection string que se conectara a un servidor secundario en caso de que el primero falle:

<connectionStrings>
        <add name="[NOMBRE]" connectionString="Data Source=[SERVIDOR];Failover Partnet=[SERVIDOR 2]; Initial Catalog=[BASE DE DATOS];User ID=[USUARIO]; password=[PASSWORD]" providerName="System.Data.SqlClient"/>
</connectionStrings>

Ahi estamos diciendo que cuando el primer servidor no se conecte intenta con el Segundo.

Cheers! :D


 


 

miércoles, 28 de enero de 2009

Cuando un índice no se quiere borrar [Sql Server]

Si recibimos el siguiente error tratando de eliminar un índice:

An explicit DROP INDEX is not allowed on index [index name]. It is being used for UNIQUE KEY constraint enforcement

Esto es porque lo estamos haciendo de la manera normal

DROP INDEX [index name]

Para solucionar esto utiliza el siguiente código:

ALTER
TABLE
[table name]
DROP
CONSTRAINT
[index name]

martes, 20 de enero de 2009

Msgbox en Asp.net

Este código para desplegar un message box (ventanita con mensaje) en .net lo envía nuestro compañero Oscar Pena.

Espero les sea de utilidad en sus proyectos

:

string strMessage = "Esta Tarjeta es Invalida";

StringBuilder sb = new StringBuilder("");

sb.Append("<script language='javascript'>");

sb.AppendFormat("alert(\"{0}\");", strMessage);

sb.Append("</script>");

Page.RegisterClientScriptBlock("AlertScript", sb.ToString());

viernes, 2 de enero de 2009

DropDownList en un gridview

Buen día programadores, en mi primer post del año 2009 les traigo algo bastante interesante muchas veces necesitado por nosotros y es el poner un DropDownList dentro de un gridView, ya había visto esto "tirando mucho código" pero que tal si les digo que pueden hacerlo sin "tirar" ni una sola línea de código?

Imaginen que tenemos una tabla en nuestra B.D. pero algunos de esos campos son los pk. de otras tablas a la cual la nuestra está relacionada. El ejemplo que les traigo es con una tabla de materias. Mi tabla de materias está relacionada a los cursos y a los profesores. Si cargamos la tabla directamente de la B.D. en el grid luciría así:



















El problema es que esto no es muy presentable para un cliente, el cliente preferiría que se viera así:


















Muchísimo mejor, no?

Entonces.. Cómo hacemos esto?

  • Lo primero que debemos hacer es hacer clic en la flecha de la esquina superior derecha del grid
  • Vas a Edit Columns
  • Seleccionas la columna que quieres cambiar
  • Haces click en "Convert to Template Field"
  • Sales de la pantallita de Fields del GridView
  • Vuelves a darle a la flechita de la esquina superior
  • Y esta vez haces clic en "Edit Templates"
  • En esa nueva flechita en la parte superior clickeas y seleccionas el campo con el que vas a trabajar
  • Entonces en la parte de ItemTemplate y de EditItemTemplate colocas un DropDownList
  • Ese DDL lo cargas con un objectDataSource que apunte a la tabla de "Profesores" o "Curso " en el caso del ejemplo
  • Y en la parte de EditDataBinding del componente seleccionas el campo de la tabla de Materias con el que se va a cargar, en mi caso "id_curso" y "id_profesor"


    Eso es todo, así el cliente entenderá más la pantalla y de seguro le gustara mucho más.

    Cheers!!