domingo, 27 de mayo de 2012

La verdad de los smartphone

No hay comentarios.:

Ver

sábado, 26 de mayo de 2012

Thread 1 cannot allocate new log, sequence Private strand flush not complete

No hay comentarios.:
Si usted esta recibiendo el error en su trace:

"Thread 1 cannot allocate new log, sequence  Private strand flush not complete"
"checkpoint not complete, cannot allocate new log"

Por que Sucede:

Oracle intenta utilizar usar Redo Logs, pero el punto de control ( Checkpoint)  aun no se ha generado y no ha liberado el archivo, posible de los redo se miren así:



Esto pasa por que la escritura a disco es muy pobre.


Solución:

1.) Agregue mas archivos a su "Grupo de Redo Logs".
2.) También asegúrese de que sus puntos de control suceden tan rápido como les sea posible.



Ver

LINQ to Entities - Sintaxis

No hay comentarios.:
Una consulta es una expresión que recupera datos de una base de datos.

Las consultas se suelen expresar en un lenguaje de consulta especializada, como SQL para bases de datos relacionales y XQuery para XML. Por lo que, los desarrolladores han tenido que aprender un nuevo lenguaje de consulta para cada tipo de datos de formato de la fuente o los datos que se consulta.


Language-Integrated Query (LINQ) ofrece un simple, modelo coherente para trabajar con datos a través de varios tipos de fuentes de datos y formatos. En una consulta LINQ, siempre se trabaja con objetos de programación.

Sintaxis de Consultas

La sintaxis permite de linq permite a los desarrolladores escribir consultas en un lenguaje de alto nivel que tiene el formato similar a Transact-SQL. Mediante el uso de la sintaxis de las expresiones de consulta, se puede realizar el filtros, ordenar y agrupar las operaciones en las fuentes de datos con código mínimo.


Ejemplos a desarrollar:

  • Consulta sencilla ( from , select)
  • Filtros ( where )
  • Ordenando ( Order by)
  • Particionando (Skip , Take, top n)
  • Operadores (Count , sum , average )
Siempre debemos instanciar el contexto para poder realizar nuestras consultas.

Northwind db = new Northwind()

Consulta  Sencilla

El metodo from nos indica de que tabla obtendremos la información y select nos indica que campos de esa tabla.


Obteniendo todos los campos de una tabla
var query = from p in db.Products
            select p;

Obteniendo un solo campo
IQueryable<string> productNames =
        from p in db.Products
        select p.Name;

Obteniendo algunos campos

 var query =
        from p in db.Products
        select new
        {
            Id = p.ProductID,
            Nombre = p.Name
        };

Filtros ( where )

La cláusula where filtra la información.
var query =
        from product in db.Products
        where product.categoryid == id
        select new
        {
            Nombre = p.Name,
            precio = p.unitprice,
            codigo = p.productid
        };



Ordenando (orderby y orderbyDescending)

La cláusula orderby y OrderbyDescending nos proporcionan la capacidad de ordernar el conjunto de resultados. 
var query = from p in db.Products
orderby p.unitprice
select p;

var query = from p in db.Products
orderby p.unitprice descending
select p;

var query = from p in db.Products
orderby p.unitprice, p.name descending
select p;



Particionando (Skip, Take)

La clausula Skip muestra todos los datos, excepto los 2 primero.
La clausula Take muestra solo los primero 2 registros.


Skip  
var query =
        (from p in db.Products
        select new
        {
            Id = p.ProductID,
            Nombre = p.Name
        }).Skip(2);
Take 

var query = (from p in db.Products 
select new
{
                 Id = p.ProductID,
                 Nombre = p.Name
                }).Take(2);

Fuentes del articulo:

http://msdn.microsoft.com/en-us/library/bb399367.aspx
Ver

sábado, 12 de mayo de 2012

Ejecutar un Procedimiento almacenado con Entity Framework

4 comentarios:

Los procedimientos almacenados son rápidos y encapsulan la lógica del negocio, por lo que es recomendables utilizarlos.


1.) Inicie el SQL Management Studio y ejecute el siguiente codigo para crear un Stored Procedure:

CREATE PROC [dbo].[Getorder] @ProductId INT = NULL
AS
    SELECT a.orderid,
           a.productid,
           b.productname,
           a.unitprice,
           a.quantity,
           a.unitprice * a.quantity AS Total
    FROM   [Order Details] a,
           products b
    WHERE  a.productid = b.productid
           AND ( ( @ProductId IS NULL )
                  OR ( a.ProductId = @ProductId ) ) 


2.)  Para verificar que el Stored Procedure funciona,  ejecute:

EXEC Getorder 1 

3.)  Cree un nuevo site en Visual Studio .net

3.1) File New Site



3.2) Selecciones ASP. Net Empty web Site

4.) Ahora vamos a crear un EDM

4.1) Clic derecho en su Solution explorer:



4.2) Seleccione ADO.Net Entity Data Model y coloque el nombre de: Northwind.edmx



5.) Seleccione "Generate from database"  y seleccione Next



6.) Seleccione Yes, Include the sensitive data in the connection string, esto con la idea de almacenar la clave en el web config.


7.) En Store Procedures selecciones "GetOrder"



8.) Click derecho en el EDM, y seleccionar Add/Function Import



9.) En la ventana de exportación, vamos a crear un método para llamar al store procedure

9.1) Nombre de la función: LlenarOrdenes
9.2) GetOrder
9.3) Presione clic en "Get Column Information"
9.4) Presione clic en "Create New Complex Type"

Si la botón de "OK" no esta habilitado es por que algún paso anterior falto.



Vamos a Crear un pagina que utilice su procedimiento almacenado

10.) Crear un pagina nueva, para esto precione clic derecho en el proyecto y seleccione new Item.


10.1) Seleccione web Form con el nombre Default.aspx



11.) Abra la pagina Default.aspx que acaba de crear y agregue un gridview

11.1) Arraste GridView del toolbox




12.) Vamos agregar código para llenar el gridview, clic derecho en la pagina y luego "view Code"



13.) Agregue el siguiente código para llenar la pantalla:

protected void Page_Load(object sender, EventArgs e)
    { 
        if (!Page.IsPostBack) 
        { 
    NorthwindModel.NorthwindEntities db = new NorthwindModel.NorthwindEntities();
            
            var query = db.LlenarOrdenes(null); 

            GridView1.DataSource = query; 
            GridView1.DataBind(); 
        } 
    }


Precione F5 para ejecutar el proyecto, el resultado será el siguiente:


Vamos a reutilizar el Procedimiento almacenado.

14.) Agregaremos una columna al grid para poder seleccionar un elemento.

14.1) Seleccione el GridView
14.2) Presione la fleche en la esquina superior derecha
14.3) Seleccione Add new Column, llenela con la siguiente información

15.) Llene la ventana con la siguiente información.



16.) Vamos agregar código al botón de ver ordenes, Doble click sobre el GridView, para crear el evento SelectedIndexChanged , agregue el siguiente codigo.
 
 protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    { 
        GridViewRow row; 
        row = GridView1.SelectedRow; 

        Session["productid"] = row.Cells[1].Text; 
        Response.Redirect("Orders.aspx"); 

    }


17.)Agregue un Nuevo WebForm a su proyecto, con el nombre Orders.aspx

17.1) clic derecho add new Item..





18.) En la pagina orders, agregue un GridView



19.) luego Click derecho, View Code, En el code behind de la pagina Orders, en el evento Load agregue el siguiente codigo:

protected void Page_Load(object sender, EventArgs e)
    { 
    NorthwindModel.NorthwindEntities db = new NorthwindModel.NorthwindEntities();
        int codigo = Convert.ToInt32(Session["productid"]); 
        var query = db.LlenarOrdenes(codigo); 

        GridView1.DataSource = query; 
        GridView1.DataBind(); 
    }

Resultado final:


Ver

viernes, 4 de mayo de 2012

Reporting Service con Mysql

3 comentarios:
Ejemplo de Reporting service con Mysql.




Necesitan Reporting Builder, lo pueden descargar de:


http://www.microsoft.com/en-us/download/details.aspx?id=6116


1.) Entrar a reporing Builder


2.) Crear un data source, clic derecho sobre la carpeta data source y luego add Data Soucer...






2.1) Llenar con la siguiente información.




Nota:
Usamos Odbc para conectarnos, podemos usar el connection string:


DRIVER={MySQL ODBC 5.1 Driver}; SERVER=localhost; DATABASE=sakila; USER=root; PASSWORD=P@ssw0rd; OPTION=3'


3.) Crear un data set, clic derecho en la carpeta de dataset y luego add dataset..






3.1) Llenar la pantalla con la siguiente información:






3.) Ahora Agregaremos una tabla.


 3.1) clic derecho en el reporte, insert y table.








4.) Luego arrastramos los campos necesario a la tabla.






5.) Por ultimo clic en botón run  y tendremos nuestro reporte.






Agregando Parámetros al Reporte:


Para agregar parámetros, presione clic en el boton Design.


6.) Editaremos el dataset, Clic derecho sobre el dataSet y luego Query...






7.) Ahora vamos a cambiar en query en la pantalla de data set, Agregaremos un where.








8.) Ahora Ejecutaremos el reporte y le solicitara un parametro el cual filtrara en la pantalla los Valores, clic en ejecutar para verlo en acción.






Maquillando Parámetros.


9.) En modo de Diseño, clic en la carpeta de Parameters, luego clic derecho a parameters1 y clic en parameter properties.








10.) Cambiaremos el texto que mostrara el reporte










11.) Agregaremos otro dataset para mostrar la información del dataset.


11.1) clic derecho en la carpeta de dataset y luego add dataset..






select a.store_id,concat(b.first_name, ' ', b.last_name) Nombre
from store a, staff b
where a.manager_staff_id = b.staff_id





12.) Por ultimo, clic derecho sobre el parámetro y luego editar, en Valores a disponibles complete la información como esta en pantalla.








Resultado final





Ver