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

domingo, 23 de diciembre de 2012

Es posible crear un índice único en un campo que acepte NULL ??

Este es un tip bastante interesante que me llegó de un website al que estoy inscrito.

Es posible tener un indice único en un campo que acepte NULL ??
Pues la respuesta es SI! y se puede lograr de la siguiente manera...


USE [DBPRUEBA]
GO

CREATE TABLE [dbo].[tbl_prueba](
 [id] [int] 
) ON [PRIMARY]

GO

CREATE UNIQUE NONCLUSTERED INDEX UNCI_prueba
ON [dbo].[tbl_prueba](id)
WHERE id IS NOT NULL
GO
--=======================================
insert into [dbo].[tbl_prueba] values(1)--success
insert into [dbo].[tbl_prueba] values(2)--success
insert into [dbo].[tbl_prueba] values(NULL)--success
insert into [dbo].[tbl_prueba] values(NULL)--success
insert into [dbo].[tbl_prueba] values(2)--error [Cannot insert duplicate key row in object 'dbo.tbl_test' with unique index 'NCI_test'.]

GO
select * from [dbo].[tbl_prueba]

El truco esta en pasar la condición deseada en la creación del índice

Buen fin de semana!

sábado, 13 de octubre de 2012

Agregar la página por default de la aplicación al webconfig


Existe una manera de asignar la página por default de una aplicación al web.config

Solo debe asignar esta seccion al web.config


miércoles, 22 de agosto de 2012

Evita el Síndrome del tunel carpiano

Tips para evitar el Sindrome de Tunel Carpiano

Nosotros que trabajamos mucho en la computadora, es importante tomar en cuenta estos tips para evitar el Síndrome de Tunel Carpiano que cada vez es mas común.

Clic en la foto para agrandar


sábado, 16 de junio de 2012

Guardar el resultado del comando DIR

Suponemos que tenemos una carpeta con muchos archivos y queremos ver un listado de los mismos.

Si deseamos guardar el resultado que retorna el comando DIR en el Command Prompt se hace de esta manera:

En CMD entra a la carpeta donde están los archivos que quieres listar y escribe:

dir > C:\archivo.txt

Ejemplo:

dir *.aspx > C:\lista.txt

Este ejemplo busca todos los archivos aspx de una carpeta y escribe el resultado en un archivo llamado lista.txt en el disco C:

Si queremos solamente los nombres de los archivos:

dir /w /a-d *.aspx > C:\lista.txt

miércoles, 16 de mayo de 2012

Tomar el valor de un control del masterpage

Imagina que tenemos un label en el masterpage y de una de las paginas queremos tomar el valor de ese label o talvez queremos asignar un valor a ese label.

Para hacer esto utilizamos este código:

Lab.lbl1= this.Master.FindControl("Content").FindControl("Login1").FindControl("lblID");


O este si queremos cambiar el valor del color a un botón del masterpage:



 //Cambiando el color de un boton
LinkButton BotonMenu = Master.FindControl("LoginView1").FindControl("LinkButton1") as LinkButton;
if (BotonMenu != null)
{
      BotonMenu.BackColor = System.Drawing.Color.FromName("#bfcbd6");
}


Si te fijas estos controles del ejemplo están dentro de un LoginView. Si tu control esta fuera dentro de algún componente como un loginview o un panel debes utilizar esa manera pero si esta fuera puedes dejar un solo FindControl.

GridView.RowCommand : Obtener un valor al ejecutar un comando en el gridview

La idea es tener un botón dentro del gridview y que cuando se le haga clic al botón se seleccione el valor de una de las columnas y se ejecute la acción.

En la propiedad command del boton se le puede especificar el nombre que quieras al comando y luego llamarlo de la siguiente manera:


void CustomersGridView_RowCommand(Object sender, GridViewCommandEventArgs e)
  {
    if(e.CommandName=="NombreComando")
    {
      // Selecciona el indice de la fila del boton en el que se hizo clic
      int index = Convert.ToInt32(e.CommandArgument);
            
      // retorna el row en que se hizo clic
      GridViewRow row = CustomersGridView.Rows[index];
            
      // asigna el valor de la celda de la columna 2 y la fila en que se hizo clic  
      string item = Server.HtmlDecode(row.Cells[2].Text);
        
    }
  }

Existen unos comandos ya predeterminados integrados al control Gridview que son:
Valor de CommandNameDescripción
"Cancel"
Cancela una operación de edición y devuelve el control GridView al modo de sólo lectura. Provoca el evento RowCancelingEdit.
"Delete"
Elimina el registro actual. Provoca los eventos RowDeleting y RowDeleted.
"Edit"
Pone el registro actual en modo de edición. Provoca el evento RowEditing.
"Page"
Realiza una operación de paginación. Establece la propiedad CommandArgument del botón en "First", "Last", "Next", "Prev" o en un número de página para especificar el tipo de operación de paginación que se va a realizar. Provoca los eventos PageIndexChanging y PageIndexChanged.
"Select"
Selecciona el registro actual. Provoca los eventos SelectedIndexChanging y SelectedIndexChanged.
"Sort"
Ordena el control GridView. Provoca los eventos Sorting y Sorted.
"Update"
Actualiza el registro actual en el origen de datos. Provoca los eventos RowUpdating y RowUpdated.

fuente: http://msdn.microsoft.com/es-es/library/system.web.ui.webcontrols.gridview.rowcommand(v=vs.80).aspx

martes, 1 de mayo de 2012

Error: System.Threading.ThreadAbortException: Thread was being aborted.

System.Threading.ThreadAbortException: Thread was being aborted.

Que significa este error que aparece registrado en nuestro log?

Este error normalmente ocurre cuando utilizamos la sentencia Response.Redirect() para redirigirnos a otra página.
Ej.: Response.Redirect("Default.aspx");
 Esta sentencia va a funcionar pero arrojará el error en los logs "System.Threading.ThreadAbortException: Thread was being aborted" porque no le hemos especificado al código si luego de hacer el direccionamiento debe continuar o terminar la ejecución de la página actual.

Por eso el comando nos da el hint: "endResponse: Indicates whether execution of the current page should terminate."

Así que la sintaxis correcta debería ser:
Response.Redirect("Default.aspx",false);

lunes, 30 de abril de 2012

Obtener las bases de datos de un servidor de SQL SERVER

Para listar las bases de datos atachadas en un servidor de SQL SERVER se puede utilizar una de estas opciones:


EXEC sp_databases

EXEC sp_helpdb

EXEC sp_msForEachDB 'PRINT ''?'''

Cada una retorna las bases de datos del servidor con algunas informaciones de diferencia asi que podemos utilizar la que mas nos convenga

jueves, 22 de marzo de 2012

Retornar el listado de tablas de una base de datos con la cantidad de registros

Para retornar un listado de las tablas de una base de datos con la cantidad de registros en cada tabla se pueden utilizar uno de estos queries:



SELECT '[' + SCHEMA_NAME(t.schema_id) + '].[' + t.name + ']' AS fulltable_name,
SCHEMA_NAME(t.schema_id) AS schema_name,
t.name AS table_name,
i.rows
FROM sys.tables AS t INNER JOIN sys.sysindexes AS i
ON t.object_id = i.id AND i.indid < 2

o

select distinct convert(varchar(30),object_name(a.id)) [Table Name], a.rows from sysindexes a inner join sysobjects b on a.id = b.id 

Referencia:  http://venkattechnicalblog.blogspot.com/2008/09/list-out-all-tables-and-row-count-in.html
http://geekswithblogs.net/TakeNote/archive/2007/09/22/115537.aspx 

domingo, 19 de febrero de 2012

Encontrar los storedprocedures que contengan un texto X

Si queremos retornar todos los stored procedures que contengan una palabra determinada ejecutamos el siguiente query en la base de datos que deseamos explorar


SELECT ROUTINE_NAME, ROUTINE_DEFINITION 
FROM INFORMATION_SCHEMA.ROUTINES 
WHERE ROUTINE_DEFINITION LIKE '%TEXTO%' 
AND ROUTINE_TYPE='PROCEDURE'