miércoles, 25 de agosto de 2010

TRUNC en SQL Server

1 comentario:
Cuando trabaje con Oracle utiliza mucho la función TRUNC de PL/SQL realmente es muy util esta función.

Funciona más o menos así:  ingresa 21/08/1973 8:30:30 regresa 21/08/1973 00:00:00.

Pero adivinen que me di cuenta en SQL no existe, así que decidí crearla aquí está el código por si la necesitan.

Como Utilizarlo 
 

 
 
Código:
 
CREATE FUNCTION dbo.trunc (@FechaEntrada datetime)
RETURNS datetime
AS
BEGIN
DECLARE @fechaSalida datetime
SET @fechaSalida = CONVERT(datetime, CONVERT(varchar(10),@input, 103), 103)
RETURN @fechaSalida
END
 
Como utilizarlo:
 
SELECT dbo.trunc(fecha)
FROM conta.tabla
Ver

domingo, 15 de agosto de 2010

Ducati

No hay comentarios.:
Decidí escribir sobre Ducati por que recientemente vi un trailer de Tron, el protagonista usaba una Ducati.

La Ducati es la mejor moto del mercado, es una moto equilibrada, veloz, con una acceleración sorprendente.

No por algo Trinity en Matrix Reloaded (2003) uso una Ducati para salvar al key Maker, Ducati no ha salido solo en esa película, también en Viernes de locos, Si señor, Una pareja explosiva entre otras.





Comparando una Ducati es como un Ferrari. Puede haber Carros más rapidos, pero ver un Ferrari nos enamora, nos impresiona... Pues con una Ducati es lo mismo, todos los que tengan una moto te miraran con envidia y la gente de la calle te miraran sorprendidos buscando adivinar que moto es la que llevas, ya que no es una japonesa de las que se ven cada

Entre Ferrari y Ducati les puedo decir que ambos son vehículos de Culto en sus respectivas categorìas, la Ducati es el Ferrari de las motos...y algo mas accesible para la mayorìa de los humildes mortales, mientras que los autos Ferrari simplemente se desean y añoran pero no cualquiera puede poseerlos ni mantenerlos.

Adicional mente el 7 veces campeón del mundo y una leyenda viviente Valentino Rossi ha firmado con Ducati.

"Estamos encantados de anunciar que Valentino Rossi estará con nosotros a partir de 2011"
Gabriele Del Torchio,
Presidente de Ducati Motor Holding.

No es por presumir pero pueden ver la mia.
https://cid-2fcf5d65f3eb7bfb.photos.live.com/play.aspx/Ducati/DSC02981.JPG?ref=2
Ver

martes, 10 de agosto de 2010

Consultas con parámetros opcionales sin SQL dinámico

5 comentarios:
Tiene que hacer una aplicación que se consulta a una tabla y que los usuario se le presentan 3 campos que se usarán para filtrar los resultados que se muestran al usuario. Todos ellos son campos opcionales. La pregunta es cuál es la mejor aplicación de la solución.
¿Soluciones?

1.) SQL dinámico
Es la opción más común, lo malo es que propensa a SQL injection y propenso a errores,
Sé que usted puede utilizar parámetros con que hasta cierto punto, pero creo que todavía no es una buena
elección por las siguientes razones.
1.1 Difícil de leer de leer
1.2 Dificil de formateo, depuración, etc.

Por estas razones, le recomiendo mantenerse alejado de esta opción.

2.) Stored Procedure
Le recomiendo usar la técnica de controles Or y NULL en la cláusula where. A continuación se muestra un ejemplo de un fragmento de T-SQL.


3.) LINQ
Puede utilizar LINQ to SQL o LINQ to Entities para resolver el problema
Es la mejor opción es una manera extremadamente fácil de implementar la funcionalidad deseada, adicionalmente LINQ tiene la característica del diseño protegido de inyección de SQL. Sin embargo esto no quiere decir que no utilizar un procedimiento almacenado.

Código:
Como usarlo:

Nota:
para usar like tiene que hacer un using System.Data.Linq.SqlClient;



Código:



Create proc BuscarClientes
@ProductID int= NULL ,
@ProductName varchar(40)= NULL ,
@CategoryID int= NULL
as
SELECT ProductID,ProductName,CategoryID,UnitPrice
FROM dbo.Products
WHERE
((@ProductID is null) or (@ProductID=ProductID))
AND
((@ProductName is null) or (ProductName like '%' + @ProductName + '%'))
AND
((@CategoryID is null) or (@CategoryID =CategoryID))

Formas de usarlo:

EXEC BuscarClientes 1,null,null
EXEC BuscarClientes null,'queso',null
EXEC BuscarClientes null,null,1
EXEC BuscarClientes




protected void Button1_Click(object sender, EventArgs e)
    {
        int? id = null;
        string nombre = null;
        int? cat = null;

        if(TextBox1.Text!="")
            id = Convert.ToInt32(TextBox1.Text);

        if (TextBox2.Text != "")
            nombre =TextBox2.Text;

        if (TextBox3.Text != "")
            cat = Convert.ToInt32(TextBox3.Text);

        //List pro = Buscar(1, null, null);
        List pro = Buscar(id, nombre, cat);
        GridView1.DataSource = pro;
        GridView1.DataBind();
    }

    public List Buscar(int? id, string nombre, int? cat)
    {
        NortwindDataContext db = new NortwindDataContext();
        var query = from p in db.Products
                    select p;

        if (id != null)
        {
            query = query.Where(p => p.ProductID == id);
        }

        if (nombre != null)
        {          
            query = query.Where(p => SqlMethods.Like(p.ProductName, "%" + nombre + "%"));
        }

        if (cat != null)
        {
            query = query.Where(p => p.CategoryID == cat);
        }
        return query.ToList();
    }


Ver

viernes, 6 de agosto de 2010

Algunas fotos interesantes

No hay comentarios.:
Casamiento por amor

Abbey Road los simpson

Twilight
Twilight Edward en problemas

La causa de todos los problemas informáticos.

Una Matriz muy interesante de los Sistemas Operativos

Una matriz ingresarte de tecnologías de desarrollo.


Anuncio de Visual studio team system


Not comments

Ver

jueves, 5 de agosto de 2010

Winnie Cooper Salio en big bang theory

No hay comentarios.:
Winnie Cooper Salio  en big bang theory que pensara Kevin que su ex salga con Raj.

Ya en serio Danica McKellar la que interpreto a Winnie Cooper en Los años maravillosos salio en big bang theory.

Ver en youtube.
http://www.youtube.com/watch?v=ZHZiJkWq6DY

Algunas fotos para el recuerdo.

Ver

Oficialmente estamos en el Futuro

No hay comentarios.:


El mes pasado llegó aquel lejano día, el día en el que Marty McFly llegó al futuro en el Delorean...


Sin embargo, si pusieron atención a la película  este viaje nunca se llego a realizar, solo fue una ejemplo que  puso el doctor Emmett Brown.  





Ver